El disparador por ocupación compacta sin saber cuántas llamadas quedan
· 6 min de lectura
Cuando la conversación de un agente se acerca al límite de contexto, algo tiene que reemplazar el historial por un resumen más corto. Eso es compactar, y lo habitual es dispararlo por ocupación: compactar cuando la ventana llega a cierto nivel de llenado.
Las cuentas
En la llamada i de un turno que va a terminar haciendo N llamadas en total:
costo C = fijo, 30–60k tokens ponderados
(la llamada de resumen, más recachear el prefijo nuevo)
ahorro s = (ctx_antes − ctx_después) × peso_lectura_caché
...se gana una vez por cada llamada que queda
balance = s·(N − i) − C
Los tokens ponderados cuentan cada token según cómo se cobra: escribir en caché cuesta 1,25× y leer de caché 0,1×. Entonces compactar conviene si y solo si:
N − i > C / s
El 15 de septiembre medí 13 compactaciones llamada por llamada. Una compactación se pagó cuando lo que ahorró en las llamadas siguientes superó lo que costó. Con 17 o más llamadas por delante, 4 de 4 se pagaron. Con 9 o menos, 7 de 7 no. Las dos del medio, con 11 y 16 llamadas por delante, quedaron a menos de 6k tokens ponderados del empate, una de cada lado. Con 13 puntos, el 17 es aproximado y propio de mi sistema.
Si compactar conviene, según cuántas llamadas quedan
Balance en unidades del ahorro por llamada. Sobre la línea conviene; bajo ella, no.
FIG. 1 · El umbral es aritmética; los marcadores son el registro observado. El disparador en uso mira la ocupación del contexto, que no sabe cuántas llamadas quedan.
Por qué la ocupación no puede decidirlo
La desigualdad necesita N, y nada en el turno dice cuánto trabajo queda. La ocupación sigue a
i, lo que el turno ya avanzó, pero no a N − i, lo que le falta. Un turno que va en el 80% de
su contexto puede tener treinta llamadas por delante o dos, y el disparador hace lo mismo en los
dos casos.
Cómo estimar lo que falta
N − i se puede estimar con datos que el sistema ya guarda: una fila por turno, con las tool
calls que hizo. La estimación es la vida media residual:
m_rol(i) = E[ N − i | N > i ]
Si un rol lleva i llamadas, cuántas le quedan en promedio. Es la misma estadística que usan
los actuarios para la esperanza de vida según la edad. La regla queda compactar ⟺ m_rol(i) > C/s,
y los dos lados salen del registro.
| Rol | n | Media | p50 | en i=5 | en i=10 | en i=15 | en i=20 | en i=30 |
|---|---|---|---|---|---|---|---|---|
| dev front | 229 | 51,5 | 52 | 50,3 | 46,4 | 43,6 | 40,4 | 34,8 |
| dev panel | 27 | 34,3 | 30 | 33,1 | 34,0 | 32,4 | 29,2 | 26,5 |
| dev móvil | 204 | 32,8 | 26 | 30,8 | 27,4 | 25,9 | 25,2 | 25,8 |
| dev plataforma | 167 | 33,5 | 36 | 35,2 | 30,2 | 25,2 | 21,1 | 14,5 |
| dev back | 394 | 31,7 | 32 | 31,1 | 26,4 | 22,4 | 19,0 | 15,1 |
| segundo dev back | 180 | 29,8 | 31 | 27,8 | 23,6 | 19,6 | 16,7 | 11,5 |
| auditor | 277 | 27,9 | 26 | 23,8 | 19,6 | 18,8 | 16,8 | 12,6 |
| gerente | 487 | 21,4 | 19 | 20,5 | 18,7 | 16,3 | 15,5 | 13,3 |
| qa | 582 | 19,3 | 16 | 18,8 | 16,3 | 14,7 | 14,3 | 14,1 |
| arquitecto | 207 | 23,5 | 22 | 19,1 | 15,3 | 12,2 | 10,9 | 7,4 |
| operación | 224 | 13,8 | 10 | 13,1 | 13,0 | 12,5 | 12,7 | 12,0 |
| revisor | 280 | 11,0 | 8 | 7,5 | 8,1 | 8,4 | 10,0 | 5,1 |
| infraestructura | 88 | 12,4 | 8 | 7,9 | 10,6 | 8,0 | 5,9 | 4,0 |
TABLA 1 · Tool calls restantes esperadas, dado que el turno ya hizo i. n: turnos del rol con al menos una tool call (3.346 entre estos 13 roles). Media y p50: tool calls por turno. En negrita, lo que queda sobre el punto de equilibrio de ~17.
En los roles pesados la estimación casi no baja. Un dev front que ya hizo treinta llamadas todavía tiene 34,8 por delante en promedio, más de las que hace un rol liviano en todo su turno. Y cambia mucho por rol: con diez llamadas hechas, uno espera 46,4 más y otro 8,1. Por eso estimo por rol y no uso un umbral único para todos.
La regla todavía no está aplicada: el disparador sigue siendo por ocupación, y todo lo de esta nota sale de turnos que ya pasaron.
En producción
Al 17 de septiembre el registro de producción tenía 80 compactaciones:
| Cuántas | Promedio por compactación (tokens ponderados) | |
|---|---|---|
| Se pagaron | 24 (30%) | +311.030 |
| No se pagaron | 56 (70%) | −30.326 |
| Saldo neto | +5.766.484 |
Solo 3 de cada 10 se pagaron, pero un acierto valió unos diez fracasos y el saldo quedó positivo. Ese registro no guarda cuántas llamadas quedaban en cada compactación, así que no confirma ni refuta el cruce en 17. Lo próximo es ver en qué roles de turno largo conviene activarla.
Cómo se midió. 13 compactaciones medidas llamada por llamada el 15-sep-2026, 80 registradas en producción al 17-sep y el registro de 3.948 turnos de ocho equipos de agentes. Análisis de solo lectura: no gasté ningún token de modelo en producir estos números.
Relacionadas
- En una prueba chica, mantener vivo el hilo de un agente costó menos que reiniciarlo Reiniciar el hilo de un rol en cada turno parecía la forma de gastar menos tokens. En una prueba controlada con un rol y una tarea, el hilo largo salió más barato, por la escritura de caché.
- El equipo de nueve roles cuesta 3,5× más por tarea verificada que el de cuatro Comparé ocho equipos de agentes por costo de tarea verificada. La brecha sigue a las tool calls por turno, y partir el equipo grande no cambiaría lo que hacen sus dos roles más caros.