Carlos Tapia
← Todas las notas

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.

-15 -10 -5 0 +5 +10 051015202530 punto de equilibrio ≈ 17 7 de 7 fallaron 7 de 7 fallaron 4 de 4 se pagaron 4 de 4 se pagaron Se paga Pierde plata LLAMADAS RESTANTES AL MOMENTO DE DECIDIR

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.

RolnMediap50en i=5en i=10en i=15en i=20en i=30
dev front22951,55250,346,443,640,434,8
dev panel2734,33033,134,032,429,226,5
dev móvil20432,82630,827,425,925,225,8
dev plataforma16733,53635,230,225,221,114,5
dev back39431,73231,126,422,419,015,1
segundo dev back18029,83127,823,619,616,711,5
auditor27727,92623,819,618,816,812,6
gerente48721,41920,518,716,315,513,3
qa58219,31618,816,314,714,314,1
arquitecto20723,52219,115,312,210,97,4
operación22413,81013,113,012,512,712,0
revisor28011,087,58,18,410,05,1
infraestructura8812,487,910,68,05,94,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ántasPromedio por compactación (tokens ponderados)
Se pagaron24 (30%)+311.030
No se pagaron56 (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