Compaction, context editing, scratchpad e delegação
Objetivos de aprendizagem
- Diferenciar compaction (resume o histórico server-side) de context editing (limpa
tool_results antigos sem resumir). - Usar scratchpad em arquivos para persistir achados-chave através de fronteiras de contexto.
- Aplicar delegação a subagentes para isolar exploração verbosa do contexto do coordenador.
- Projetar crash recovery com manifests de estado estruturado que o coordenador carrega no resume.
- Saber quando usar
/compactno Claude Code e memória persistente entre sessões.
Compaction vs. context editing: dois mecanismos diferentes
A API oferece dois recursos beta de gerenciamento de contexto server-side, e a prova adora confundi-los:
| Compaction | Context editing | |
|---|---|---|
| Beta header | compact-2026-01-12 | context-management-2025-06-27 |
| Edit type | compact_20260112 | clear_tool_uses_20250919 (e clear_thinking_20251015) |
| O que faz | Resume o contexto anterior em um bloco compaction quando a conversa se aproxima do limite da janela | Limpa (remove) tool results antigos e blocos de thinking com base em thresholds configuráveis — sem resumir |
| Preserva informação? | Sim, de forma comprimida (resumo com perda) | Não: o conteúdo limpo é descartado |
| Quando usar | Conversas que tendem a atingir/exceder a janela e cujo histórico antigo ainda importa | Contexto cheio de tool results velhos e irrelevantes (staleness), sem valor futuro |
| Cuidado crítico | Repassar response.content completo nos requests seguintes — o bloco compaction deve ser preservado | Não usar quando resultados antigos ainda serão referenciados |
Ambos são beta. Exigem client.beta.messages.create(...) com o header correto em betas=[...]. Usar o beta header de um com o edit type do outro é erro — e a prova pode cobrar exatamente essa associação.
Exemplo (beta): compaction server-side
import anthropic
# BETA: compaction server-side (compact-2026-01-12)
client = anthropic.Anthropic()
messages = []
def chat(user_message: str) -> str:
messages.append({"role": "user", "content": user_message})
response = client.beta.messages.create(
betas=["compact-2026-01-12"],
model="claude-opus-5",
max_tokens=16000,
messages=messages,
context_management={
"edits": [{"type": "compact_20260112"}]
},
)
# CRITICO: anexar response.content COMPLETO, nao apenas o texto.
# O bloco "compaction" retornado precisa ser preservado no historico.
messages.append({"role": "assistant", "content": response.content})
return next(block.text for block in response.content if block.type == "text")
print(chat("Me ajude a construir um web scraper em Python"))
print(chat("Adicione suporte a paginas renderizadas com JavaScript"))
# A compaction dispara automaticamente quando o contexto cresce
Para context editing, a mesma estrutura usa betas=["context-management-2025-06-27"] e context_management={"edits": [{"type": "clear_tool_uses_20250919"}]} — tool results antigos são removidos do contexto conforme thresholds, mantendo a transcrição enxuta sem custo de sumarização.
Panorama das estratégias
flowchart TD
A[Contexto crescendo em sessao longa] --> B{O historico antigo ainda importa?}
B -- "Sim, de forma resumida" --> C[Compaction beta compact-2026-01-12
resume em bloco compaction]
B -- "Nao: tool results velhos e irrelevantes" --> D[Context editing beta context-management-2025-06-27
limpa tool_results antigos]
A --> E{Precisa sobreviver a crash ou nova sessao?}
E -- "Achados da exploracao" --> F[Scratchpad em arquivos
registrar e reler achados]
E -- "Estado entre sessoes" --> G[Memoria persistente
diretorio de memories]
E -- "Retomada apos falha" --> H[Manifest de estado por agente
coordenador carrega no resume]
A --> I{Exploracao verbosa a fazer?}
I -- "Sim" --> J[Delegar a subagentes
so o sumario volta ao coordenador]
Scratchpad em arquivos
Em exploração de grandes codebases, o antídoto para a degradação de contexto é persistir achados-chave em arquivos scratchpad: o agente registra descobertas (classes encontradas, dependências traçadas, decisões tomadas) e as relê ao responder perguntas subsequentes, em vez de depender do histórico degradado. O arquivo sobrevive a fronteiras de contexto — e a compactações.
Padrão complementar: ao encerrar uma fase de exploração, resumir os achados-chave e injetar esse resumo no contexto inicial dos subagentes da próxima fase.
Delegação a subagentes
Exploração verbosa (ex.: "encontre todos os arquivos de teste", "trace as dependências do fluxo de reembolso") gera milhares de tokens de output intermediário. Delegando a um subagente, todo esse volume fica no contexto dele; apenas o resumo estruturado volta ao coordenador, que preserva contexto limpo para a coordenação de alto nível.
Crash recovery com manifests de estado
Pipelines longos falham. O padrão resiliente:
- Cada agente exporta seu estado (fase atual, achados, pendências) para uma localização conhecida, em formato estruturado;
- No restart, o coordenador carrega um manifest que aponta os estados salvos e injeta-os nos prompts dos agentes retomados;
- O trabalho continua de onde parou, sem re-executar fases concluídas.
No Claude Code: /compact e memória
/compactreduz o uso de contexto durante sessões estendidas, resumindo a conversa quando ela enche de output verboso de descoberta;CLAUDE.mde/memorymantêm instruções e conhecimento persistente entre sessões;- Subagentes (Task tool) isolam exploração do contexto principal — o mesmo princípio da API.
Combine as estratégias. Agentes long-running maduros usam as três camadas: context editing para poda dentro da sessão, compaction perto do limite da janela, e memória/arquivos para persistência entre sessões.
Pegadinhas da prova
- Distrator típico: tratar context editing como "resumo automático". Ele não resume — remove tool results antigos. Quem resume é compaction.
- Distrator típico: após compaction, repassar apenas o texto da resposta. Errado: é preciso anexar
response.contentcompleto, preservando o blococompaction. - Distrator típico: usar esses recursos sem o beta header (ou com o header trocado) — retorna 400. Compaction =
compact-2026-01-12; context editing =context-management-2025-06-27. - Distrator típico: "guarde os achados no histórico da conversa" como estratégia de crash recovery. Histórico em memória morre com o processo — recovery exige estado exportado em local conhecido + manifest carregado no resume.
- Distrator típico: fazer o coordenador executar a exploração verbosa "para ter todo o contexto". Isso lota o contexto de coordenação — o padrão correto é delegar e receber só o sumário estruturado.
Resumo em 5 linhas
- Compaction (beta
compact-2026-01-12) resume o histórico em um blococompactionque deve ser repassado viaresponse.contentcompleto. - Context editing (beta
context-management-2025-06-27,clear_tool_uses_20250919) limpa tool results antigos — descarta, não resume. - Scratchpad em arquivos persiste achados através de fronteiras de contexto e combate a degradação em sessões longas.
- Subagentes isolam exploração verbosa; só o resumo estruturado retorna ao coordenador.
- Crash recovery: cada agente exporta estado para local conhecido; o coordenador carrega o manifest no resume e injeta nos prompts.
Documentação oficial
- Context editing
- Context windows
- Claude Code — gerenciando custo e contexto (/compact)
- Claude Code — memória (CLAUDE.md)
Questões de fixação
1. Qual é a diferença essencial entre compaction e context editing na API?
Gabarito: B. Compaction (beta compact-2026-01-12) sumariza server-side; context editing (beta context-management-2025-06-27) limpa tool results/thinking antigos, descartando-os. A está errada: ambos são server-side. C inverte os papéis. D está errada: são recursos distintos, com beta headers e edit types distintos.
2. Uma equipe habilitou compaction e, após a primeira compactação, o agente "esqueceu" tudo que veio antes. O código anexa ao histórico apenas o texto da resposta (response.content[0].text). Qual é a causa?
Gabarito: C. O resumo vive no bloco compaction dentro de response.content; anexar só o texto o descarta, e o próximo request vai sem a memória comprimida. A é especulação sem base no cenário. B não tem relação: max_tokens limita a geração. D descreve o oposto do propósito da compaction — substituir o histórico antigo pelo bloco resumido.
3. Durante exploração de um monorepo, o agente coordenador precisa mapear todos os testes e traçar dependências de um fluxo crítico — tarefas que geram output enorme. Qual arquitetura preserva o contexto do coordenador?
Gabarito: A. Delegação isola o output verboso no contexto dos subagentes; o coordenador mantém contexto limpo para orquestrar. B lota o contexto de coordenação — o sintoma que se quer evitar. C não tem relação com consumo de janela. D descarta informação de forma arbitrária e pode quebrar a coerência do histórico (e invalida cache de prefixo).
4. Um pipeline multi-agente de análise que roda por horas precisa sobreviver a crashes sem re-executar fases concluídas. Qual padrão atende a esse requisito?
Gabarito: D. Crash recovery exige persistência fora do processo: estado exportado + manifest carregado no resume. A reduz falhas de request, mas não recupera um processo morto. B morre com o processo — histórico em memória não é durável. C gerencia tamanho de contexto, não durabilidade entre execuções.
5. No Claude Code, uma sessão de exploração estendida encheu o contexto com output verboso de descoberta. Qual comando reduz o uso de contexto resumindo a conversa?
Gabarito: B. /compact resume a conversa para liberar janela durante sessões longas. A (/memory) edita memória persistente (CLAUDE.md), não o contexto da sessão. C não existe. D está errada: reiniciar descarta o contexto da conversa em vez de resumi-lo.