Gerenciamento de contexto
Por que o custo de sessões longas cresce de forma não linear e os padrões que mantêm o histórico limitado.
A API não mantém estado. Cada turno reenvia toda a conversa, portanto os tokens de entrada aumentam com o histórico — e o custo aumenta junto, em cada chamada subsequente.
Como o problema se apresenta
Uma conversa de N turnos, cada um adicionando aproximadamente T tokens, custa algo da ordem de N²T/2 tokens de entrada no total, em vez de NT. Dobrar a duração da sessão praticamente quadruplica o custo de entrada. É por isso que um agente que parecia barato durante dez minutos causa preocupação depois de uma hora.
Quatro estratégias que funcionam
| Padrão | Como | Contrapartida |
|---|---|---|
| Janela deslizante | Mantenha os últimos K turnos e descarte o restante | Perde completamente o contexto inicial |
| Resumo contínuo | Substitua periodicamente os turnos antigos por um resumo escrito pelo modelo | Custa uma chamada extra; preserva o essencial |
| Nova sessão por tarefa | Comece do zero quando o assunto mudar | Sem custo e geralmente adequado |
| Externalizar | Mantenha o estado em arquivos ou em um banco de dados e carregue apenas o que a etapa atual precisa | Mais trabalho, melhor resultado |
Como resumir turnos antigos
def compact(history, keep=6):
class="s">""class="s">"Replace everything but the last `keep` turns with one summary turn."class="s">""
if len(history) <= keep:
return history
old, recent = history[:-keep], history[-keep:]
summary = summarise(old) class=class="s">"c"># one cheap Haiku call
return [{class="s">"role": class="s">"user", class="s">"content": fclass="s">"Summary of earlier discussion: {summary}"}] + recent
Faça a sumarização com um modelo barato. É uma tarefa de compressão, não de raciocínio.
Os resultados das ferramentas costumam ser os culpados
- Uma ferramenta que retorna 500 linhas coloca 500 linhas em todas as solicitações seguintes. Limite as linhas ou retorne um resumo com uma referência para buscar detalhes sob demanda.
- O conteúdo completo dos arquivos lidos por um agente permanece no contexto. Leia a seção de que precisa, não o arquivo inteiro.
- Capturas de tela e imagens são reenviadas como qualquer outro conteúdo — remova-as depois de descrevê-las.
- Logs de compilação e rastreamentos de pilha: mantenha as primeiras e as últimas 50 linhas e descarte o meio.
Em ferramentas com agentes, iniciar uma nova sessão entre tarefas sem relação entre si é a otimização mais barata disponível. No Claude Code, isso é
/clear.