MODULO 4.3

πŸ›Ÿ PreCompact: sobrevivendo ao squeeze

O hook que salva horas de trabalho. Re-injeta contexto critico antes do resumo automatico. Unica forma deterministica de sobreviver a compactacao.

6
Topicos
35
Minutos
Pratico
Nivel
CORE
Tipo
1

🎯 Quando PreCompact dispara

Claude Code detecta que sessao passou do threshold (~170k tokens). Antes de fazer o resumo automatico, dispara PreCompact.

πŸ“ Gatilho de compactacao

Sessao crescendo turno a turno...
      β”‚
      β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Claude Code monitora token count    β”‚
β”‚ Threshold: ~170k tokens             β”‚
β”‚ (configuravel, default conservador) β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
              β”‚
              β–Ό
 PreCompact HOOK ← sua janela
              β”‚
              β–Ό
 Resumo automatico (model compacta historico)
              β”‚
              β–Ό
 Sessao continua com prompt enxuto

πŸ’‘ Nao esperar 170k

O hook dispara so quando Claude Code decide compactar. Em sessoes curtas nunca roda. E OK β€” serve so quando precisa.

2

πŸ“„ O que injetar: context.md

Para garantir que projeto e decisoes sobrevivam ao resumo, injete seu context.md.

πŸ’‰ Por que context.md funciona

Dinamica do squeeze:

  • β€’Claude Code adiciona additionalContext ao prompt.
  • β€’Depois faz o resumo. O resumo INCLUI additionalContext.
  • β€’Portanto, seu texto fica no prompt compactado tambem.
  • β€’Resultado: contexto critico preservado literal, mesmo apos squeeze.
3

πŸ§ͺ Configuracao do hook

Mesmo padrao do SessionStart, outro evento. Reaproveite o script.

πŸ“ settings.json com PreCompact

{
  "hooks": {
    "SessionStart": [{
      "matcher": "",
      "hooks": [{
        "type": "command",
        "command": "~/.memory/hooks/inject.sh SessionStart"
      }]
    }],
    "PreCompact": [{
      "matcher": "",
      "hooks": [{
        "type": "command",
        "command": "~/.memory/hooks/inject.sh PreCompact"
      }]
    }]
  }
}

# inject.sh unifica os dois casos:
#!/usr/bin/env bash
EVENT=${1:-SessionStart}
CTX=$(cat ~/.memory/context.md 2>/dev/null || echo "")
python3 -c "
import json
print(json.dumps({
  'hookSpecificOutput': {
    'hookEventName': '$EVENT',
    'additionalContext': '''$CTX'''
  }
}))
"

πŸ’‘ DRY

Um script, dois eventos. Se mudar o formato de context.md, nao precisa atualizar em dois lugares.

4

πŸ§ͺ Lab: forΓ§ando compactacao

Testar em condicao controlada e melhor que esperar acontecer num momento critico.

1

Prepare sessao sintetica

Abra Claude Code. FaΓ§a varias queries pesadas que geram muito output: 'liste todos os arquivos do projeto com tamanho', 'mostra diff completo de ultimos 20 commits', etc.

2

Monitore contagem

Muitos clientes de Claude mostram token count. Quando chegar perto de 170k, prepare sua pergunta de teste.

3

FaΓ§a a pergunta antes

'Qual o projeto ativo?' β€” resposta deve vir do context.md.

4

Gatilho forcado ou espera

Continue mandando queries pesadas ate compactar. Pergunte de novo 'qual o projeto?'. Se sobrevivente, o hook funcionou.

πŸ’‘ Signal claro

Use palavra especifica em context.md ('projeto alpha-42'). Pos-squeeze, Claude deve mencionar exatamente essa palavra para provar survival.

5

πŸ“Š Validacao: antes/depois

Dois pontos no tempo, mesma pergunta, comparacao direta.

πŸ“ Protocolo A/B

ANTES da compactacao:
  Pergunta: "Qual decisao tomamos semana passada?"
  Resposta esperada: detalhe especifico do context.md
  Validacao: gravar resposta.

ForΓ§ar compactacao (queries pesadas ate ~170k)

DEPOIS da compactacao:
  Mesma pergunta.
  Resposta esperada: mesmo detalhe especifico.
  Validacao: comparar.

MATCH = PreCompact funcionou.
MISMATCH = debug necessario (log do hook, additionalContext size).

πŸ’‘ Automatizar

Script bash que abre Claude Code em modo headless, envia mensagens padrao, captura respostas pre e pos. Da pra rodar CI do seu sistema de memoria.

6

⚠️ Armadilhas comuns

Tres erros que pioram o sistema em vez de melhorar.

βœ“ Fazer

  • βœ“Injetar context.md (400 tokens, signal alto)
  • βœ“Usar script dedicado, reutilizavel
  • βœ“Logar tamanho do additionalContext
  • βœ“Testar em sessoes forcadas antes de depender

βœ— NAO fazer

  • βœ—Injetar CLAUDE.md inteiro (ja esta no prompt)
  • βœ—Injetar log da sessao (>2k tokens polui resumo)
  • βœ—Injetar tudo, incluindo long-term (explode prompt)
  • βœ—Assumir que funciona sem testar

πŸ“ Resumo do Modulo

βœ“
Dispara antes do squeeze β€” janela de ouro para injetar.
βœ“
Re-injeta context.md β€” 400 tokens de contexto preservados.
βœ“
Mesmo script do SessionStart β€” reuso reduz manutencao.
βœ“
Validacao A/B β€” antes/depois da compactacao, mesmo teste.

Proximo:

4.4 β€” context.md: escrevendo contexto critico