Execução Longa|INEMA.CLUB-PRO

Aula 4 · 16 min

Cache e ociosidade: o que os números de outubro mostram

Voltar a uma sessão grande parada há duas horas pode custar centenas de milhares de tokens numa única mensagem. Não é erro: é o cache que venceu. Com os números medidos em outubro de 2026, você entende a linha do tempo de uma sessão parada e decide, com conta, entre reenviar e recomeçar limpo.

Começar a aula
Ampulheta de vidro sobre uma placa de circuito escura, com termômetro digital ao lado.

Nesta aula você vai

  1. 1O que acontece aos 45, ~54 e 60 min parado
  2. 2Os números medidos: cache, compactações e retomada
  3. 3A trava que segura a primeira mensagem depois da pausa
  4. 4Quando reenviar e quando /clear + /prime

Objetivo: ler a linha do tempo de uma sessão parada (45, 54, 60 min) e escolher entre reenviar e /clear + /prime com os números medidos.

01A linha do tempo de uma sessão parada

Claude Code, cache de 1 h, contexto acima de ~200 mil tokens, hook-longrun 1.9.6 ligado.

Role a página: cada etapa abaixo acende a sua parte do diagrama.

  1. 1/6

    0 min

    No evento Stop, com contexto ≥ 200 mil e a pasta handoffs/ no projeto, o hook agenda um timer (systemd-run --user, um por sessão, refeito a cada resposta). Se você mandar outra mensagem, o relógio recomeça.

  2. 2/6

    3–12 min

    Se você troca de foco, o Claude Code grava um away_summary na conversa. Desde o 1.8.6 isso (e comandos locais como /exit) não conta como "a sessão andou": antes, 7 sessões de 16/10 ficaram sem handoff por causa disso.

  3. 3/6

    45 min

    Se a sessão continua parada, sem handoff desta sessão gravado até 5 min antes da última resposta, e o cache ainda vale (< 55 min), o hook grava o handoff numa CÓPIA da sessão, mesmo modelo, cache quente, que só pode rodar o handoff-grava.py e ler arquivos. A sessão aberta não é tocada.

  4. 4/6

    ~54 min

    O Claude Code compacta sozinho com cerca de 55 min sem resposta, só acima de ~200 mil tokens, antes do cache vencer. Nos registros de 07 a 15/10/2026, as 93 compactações vieram 53–58 min depois da última resposta. Mas ela nem sempre acontece: em 18/10, uma sessão de 480 mil não compactou.

  5. 5/6

    60 min

    A próxima mensagem relê a conversa inteira sem cache. Com mais de 150 mil no contexto, o hook segura essa primeira mensagem uma vez e explica: reenviar continua; /clear + /prime recomeça limpo pelo handoff desta sessão.

  6. 6/6

    A proteção é o handoff

    A compactação é bônus quando vem. O handoff aos 45 min, gravado com o cache quente, é o que garante que a volta tenha um caminho barato.

Por que 45 e não 50: a compactação por ociosidade vem entre 53 e 58 min e a cópia leva 30–60 s mais a partida. Aos 45 sobra folga; o custo é o mesmo a qualquer hora antes de 1 h.

02A conta, em quatro números

Todos do kit execucao-longa, com a data e o tamanho da amostra.

1. Quente × frio

Com o cache quente (até ~1 h desde a última resposta), reler a conversa sai por ~10% do preço de entrada. Vencido, reprocessa tudo e grava o cache de novo, ~2×: cerca de 20× uma mensagem com cache quente.

Na assinatura isso não vira dinheiro, mas sai da cota de 5 h e da semanal. E paga-se uma vez: as mensagens seguintes voltam a ser baratas.

03A trava da pausa, no ensaio

Mesmo ensaio-hook.sh da aula 3: transcrição falsa com 220 mil tokens e a última resposta há 120 min.

Terminal · pausa de 2 h e reenvio
rm -rf /tmp/ensaio-hook
bash ensaio-hook.sh 220000 120 UserPromptSubmit   # 1ª mensagem depois da pausa
bash ensaio-hook.sh - - UserPromptSubmit          # reenviar a mesma
bash ensaio-hook.sh 250000 0 Stop                 # fim de resposta: agenda o handoff por ociosidade
cat /tmp/ensaio-hook/agenda.jsonl
Variáveis do hook (no ambiente do Claude Code)
LONGRUN_PAUSA_MIN=60          # minutos parado antes de segurar a mensagem
LONGRUN_PAUSA_TOKENS=150000   # contexto mínimo para segurar; 0 desliga a trava
LONGRUN_OCIOSO_MIN=45         # minutos parado antes de gravar o handoff (não passe de ~45)
LONGRUN_OCIOSO_TOKENS=200000  # contexto mínimo para gravar; 0 desliga
LONGRUN_CACHE_MIN=55          # depois disso a cópia não roda (o cache já estaria frio)
Exemplo do repositório
$ 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", ...]}

Com LONGRUN_AGENDAR_ARQ o hook só registra o agendamento num arquivo, em vez de criar o timer de verdade. É a mesma variável que os testes do kit usam.

04Prática

Ensaio sem custo e um ajuste que protege as suas transcrições.

E8 · A trava da pausa

10 min

Rode o bloco da pausa de 2 h. Depois rode com 90000 tokens no lugar de 220000, numa pasta limpa, para ver o limite de 150 mil.

Pronto quando: a 1ª chamada imprime "decision": "block" com cache venceu; o reenvio (-) não imprime nada; com 90 mil não há bloqueio; agenda.jsonl mostra "minutos": 45.

E9 · Transcrições por um ano

5 min

O Claude Code apaga as transcrições depois de cleanupPeriodDays (padrão 30). Sem elas, não há medição nem recall (aula 7). Ponha 365 no settings.json.

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

05Teste da aula

Pergunta 1 de 4

Por que o hook grava o handoff por ociosidade aos 45 min, e não aos 58?competência

06Em três frases

45, 54, 60Handoff na cópia com cache quente, compactação por ociosidade quando vem, cache vencido e trava na volta.
Números com dataCache 93–99% (01/10); retomar 284 mil × 187 mil e ~23 mil × ~10 mil por turno (14 dias até 17/10).
Decida pela contaCaminho em arquivo: /clear + /prime. Algo só na conversa: reenviar uma vez e gravar o handoff.

Para ir além

Aula anteriorPróxima aula