MODULO 5.4

🗜️ Context Compaction

Como Claude Code gerencia uma janela de contexto finita em sessoes longas -- do microcompact instantaneo a sumarizacao completa por LLM.

7
Topicos
~90
Minutos
Deep
Nivel
Source
Tipo
1

📊 Four Compaction Strategies

Quatro estrategias formam uma escada de custo. Claude Code sempre tenta a mais barata primeiro:

Strategy 1: Microcompact

Limpa conteudo de tool results antigos in-memory. Zero API calls, instantaneo.

Strategy 2: Session Memory Compact

Substitui mensagens antigas por um arquivo de session-memory pre-construido. Zero chamada de sumarizacao.

Strategy 3: Full LLM Compact

Forka sub-agente para escrever sumario estruturado de 9 secoes. Uma chamada API extra.

Strategy 4: Reactive Compact

Disparado por erro 413 prompt-too-long. Remove API rounds da cauda ate caber.

2

⚡ Thresholds & Token Warning States

EstadoBufferEfeito
Normal> 20K tokensNenhuma acao
Warning≤ 20K tokensIndicador amarelo na UI
Auto-Compact≤ 13K tokensDispara compaction automatica
Blocking≤ 3K tokensBloqueia input do usuario

Circuit Breaker

Auto-compact rastreia consecutiveFailures e para apos 3. Antes desse fix, um failure mode queimava ~250K chamadas API/dia globalmente.

3

✂️ Microcompact -- Tool-Result Pruning

Microcompact limpa conteudo de tool results antigos diretamente no array de mensagens in-memory. Nao chama LLM, nao escreve no disco. Tools elegiveis: FileRead, Bash, Grep, Glob, WebSearch, WebFetch, FileEdit, FileWrite.

Path 1: Time-Based MC

Se gap > 60min desde ultimo assistant message, content-clear tool results antigos. Mantem os 5 mais recentes.

Path 2: Cached MC

Enfileira cache_edits para a API aplicar server-side, sem mutar mensagens locais. Preserva prompt cache.

4

📝 The 9-Section Summary Prompt

O prompt de compaction instrui o modelo a produzir exatamente 9 secoes:

  1. Primary Request and Intent -- Todos os pedidos explicitos do usuario
  2. Key Technical Concepts -- Tecnologias, frameworks, design patterns
  3. Files and Code Sections -- Arquivos examinados/modificados com snippets
  4. Errors and Fixes -- Cada erro e como foi resolvido
  5. Problem Solving -- Problemas resolvidos e troubleshooting em andamento
  6. All User Messages -- Cada mensagem nao-tool-result verbatim. Critico para rastrear mudanca de intencao
  7. Pending Tasks -- Tarefas atribuidas nao concluidas
  8. Current Work -- O que estava acontecendo imediatamente antes do compact
  9. Optional Next Step -- Apenas se diretamente em linha com pedido mais recente

💡 Por que secao 6 importa

"All user messages" e a unica secao que nao pode ser inferida do tool use. Sem ela, o sumario capturaria o que Claude fez mas perderia as mudancas de intencao do usuario.

5

🧹 Post-Compact Cleanup

Apos compaction bem-sucedida, uma funcao centralizada invalida caches e estado:

resetMicrocompactState()         // sempre
getUserContext.cache.clear()      // re-read CLAUDE.md (main thread only)
clearSystemPromptSections()
clearClassifierApprovals()
clearSessionMessagesCache()

Subagent safety: subagentes rodam no mesmo processo e compartilham estado module-level. O guard isMainThread previne que compaction de subagente corrompa o cache do main thread.

6

🔎 Reactive Compact & Context Collapse

Quando a janela ja esta acima do limite, o reactive compact e ativado por erro 413 da API. Remove API-round groups do fim mais antigo e tenta novamente.

O feature CONTEXT_COLLAPSE suprime auto-compact quando ativo, operando com thresholds proprios em 90% (commit) e 95% (blocking).

7

💻 The /context Command

O comando /context mostra quao cheio esta o contexto. Aplica as mesmas transformacoes pre-API que query.ts aplica, para que o usuario veja o que o modelo realmente recebe:

  1. Fatia para apenas mensagens apos o ultimo compact boundary
  2. Aplica context-collapse projection se habilitado
  3. Aplica microcompact para contagem de tokens precisa

📋 Resumo do Modulo

Compaction e uma escada de custo: microcompact e gratuito, session memory quase gratuito, full LLM compact custa uma chamada API
Auto-compact dispara a 13K tokens do limite; blocking a 3K. Circuit breaker para apos 3 falhas consecutivas
Microcompact nunca chama API -- limpa tool results antigos ou enfileira cache_edits server-side
O sumario de 9 secoes captura intencao do usuario (secao 6: mensagens verbatim) que tool-use sozinho perderia
Post-compact cleanup e centralizado e guardado para subagentes que compartilham estado module-level
Modulo Anterior Proximo Modulo