Ejecución larga|INEMA.CLUB-PRO

Clase 4 · 16 min

Caché e inactividad: lo que muestran los números de octubre

Volver a una sesión grande parada hace dos horas puede costar cientos de miles de tokens en un solo mensaje. No es un error: es la caché que venció. Con los números medidos en octubre de 2026, entiendes la línea de tiempo de una sesión parada y decides, con cuentas, entre reenviar y empezar limpio.

Comenzar la clase
Reloj de arena de vidrio sobre una placa de circuito oscura, con un termómetro digital al lado.

En esta clase vas a

  1. 1Qué pasa a los 45, ~54 y 60 min de parada
  2. 2Los números medidos: caché, compactaciones y retomada
  3. 3La traba que retiene el primer mensaje después de la pausa
  4. 4Cuándo reenviar y cuándo /clear + /prime

Objetivo: leer la línea de tiempo de una sesión parada (45, 54, 60 min) y elegir entre reenviar y /clear + /prime con los números medidos.

01La línea de tiempo de una sesión parada

Claude Code, caché de 1 h, contexto por encima de ~200 mil tokens, hook-longrun 1.9.6 activado.

Desplaza la página: cada etapa de abajo enciende su parte del diagrama.

  1. 1/6

    0 min

    En el evento Stop, con contexto ≥ 200 mil y la carpeta handoffs/ en el proyecto, el hook programa un timer (systemd-run --user, uno por sesión, rehecho en cada respuesta). Si envías otro mensaje, el reloj vuelve a empezar.

  2. 2/6

    3–12 min

    Si cambias de foco, Claude Code graba un away_summary en la conversación. Desde la 1.8.6 eso (y comandos locales como /exit) ya no cuenta como "la sesión avanzó": antes, 7 sesiones del 16/10 quedaron sin handoff por eso.

  3. 3/6

    45 min

    Si la sesión sigue detenida, sin un handoff de esta sesión grabado hasta 5 min antes de la última respuesta, y la caché aún sirve (< 55 min), el hook graba el handoff en una COPIA de la sesión, mismo modelo, caché caliente, que solo puede ejecutar handoff-grava.py y leer archivos. La sesión abierta no se toca.

  4. 4/6

    ~54 min

    Claude Code compacta solo tras unos 55 min sin respuesta, únicamente por encima de ~200 mil tokens, antes de que la caché venza. En los registros del 07 al 15/10/2026, las 93 compactaciones llegaron entre 53–58 min después de la última respuesta. Pero no siempre ocurre: el 18/10, una sesión de 480 mil no compactó.

  5. 5/6

    60 min

    El siguiente mensaje vuelve a leer toda la conversación sin caché. Con más de 150 mil en el contexto, el hook retiene ese primer mensaje una vez y explica: reenviar continúa; /clear + /prime reinicia limpio desde el handoff de esta sesión.

  6. 6/6

    La protección es el handoff

    La compactación es un bonus cuando llega. El handoff a los 45 min, grabado con la caché caliente, es lo que garantiza que la vuelta tenga un camino barato.

Por qué 45 y no 50: la compactación por inactividad llega entre 53 y 58 min y la copia tarda 30–60 s más el arranque. A los 45 queda margen; el costo es el mismo a cualquier hora antes de 1 h.

02La cuenta, en cuatro números

Todos del kit execucao-longa, con la fecha y el tamaño de la muestra.

1. Caliente × fría

Con la caché caliente (hasta ~1 h desde la última respuesta), releer la conversación sale por ~10% del precio de entrada. Vencida, reprocesa todo y vuelve a grabar la caché, ~2×: cerca de 20× un mensaje con la caché caliente.

En la suscripción esto no se convierte en dinero, pero sale de la cuota de 5 h y de la semanal. Y se paga una vez: los mensajes siguientes vuelven a ser baratos.

03El bloqueo de la pausa, en el ensayo

El mismo ensaio-hook.sh de la clase 3: transcripción falsa con 220 mil tokens y la última respuesta hace 120 min.

Terminal · pausa de 2 h y reenvío
rm -rf /tmp/ensaio-hook
bash ensaio-hook.sh 220000 120 UserPromptSubmit   # 1er mensaje después de la pausa
bash ensaio-hook.sh - - UserPromptSubmit          # reenviar el mismo
bash ensaio-hook.sh 250000 0 Stop                 # fin de respuesta: agenda el handoff por inactividad
cat /tmp/ensaio-hook/agenda.jsonl
Variables del hook (en el entorno de Claude Code)
LONGRUN_PAUSA_MIN=60          # minutos detenido antes de retener el mensaje
LONGRUN_PAUSA_TOKENS=150000   # contexto mínimo para retener; 0 desactiva el bloqueo
LONGRUN_OCIOSO_MIN=45         # minutos detenido antes de grabar el handoff (no pases de ~45)
LONGRUN_OCIOSO_TOKENS=200000  # contexto mínimo para grabar; 0 desactiva
LONGRUN_CACHE_MIN=55          # pasado ese tiempo la copia no corre (la caché ya estaría fría)
Ejemplo del repositorio
$ bash ensaio-hook.sh 220000 120 UserPromptSubmit
{"decision": "block", "reason": "Sessão parada há 2h00: o cache venceu e esta mensagem
 vai reprocessar ~220 mil tokens do seu limite. Para continuar aqui, reenvie a mensagem.
 Para começar limpo: NENHUM handoff desta sessão foi gravado: antes do /clear, peça para
 gravar (skill session-handoff), senão o /prime não terá o caminho deste trabalho."}

$ bash ensaio-hook.sh - - UserPromptSubmit

$ bash ensaio-hook.sh 250000 0 Stop

$ cat /tmp/ensaio-hook/agenda.jsonl
{"unidade": "longrun-ocioso-ensaio", "minutos": 45, "cmd": ["/usr/bin/python3",
 ".../execucao-longa/tools/hook-longrun.py", "--ocioso", "ensaio", ...]}

Con LONGRUN_AGENDAR_ARQ el hook solo registra la programación en un archivo, en vez de crear el timer de verdad. Es la misma variable que usan las pruebas del kit.

04Práctica

Ensayo sin costo y un ajuste que protege tus transcripciones.

E8 · El bloqueo de la pausa

10 min

Ejecuta el bloque de la pausa de 2 h. Después ejecútalo con 90000 tokens en lugar de 220000, en una carpeta limpia, para ver el límite de 150 mil.

Listo cuando: la 1.ª llamada imprime "decision": "block" con cache venceu; el reenvío (-) no imprime nada; con 90 mil no hay bloqueo; agenda.jsonl muestra "minutos": 45.

E9 · Transcripciones por un año

5 min

Claude Code borra las transcripciones después de cleanupPeriodDays (por defecto 30). Sin ellas, no hay medición ni recall (clase 7). Pon 365 en settings.json.

Listo cuando: python3 -c "import json,os;print(json.load(open(os.path.expanduser('~/.claude/settings.json'))).get('cleanupPeriodDays'))" → 365.

05Prueba de la clase

Pregunta 1 de 4

¿Por qué el hook graba el handoff por inactividad a los 45 min, y no a los 58?competencia

06En tres frases

45, 54, 60Handoff en la copia con caché caliente, compactación por inactividad cuando llega, caché vencida y traba al volver.
Números con fechaCaché 93–99% (01/10); retomar 284 mil × 187 mil y ~23 mil × ~10 mil por turno (14 días hasta el 17/10).
Decide con la cuentaCamino en un archivo: /clear + /prime. Algo solo en la conversación: reenviar una vez y grabar el handoff.

Para ir más allá

Clase anteriorPróxima clase