Início / Documentação / Gerenciamento de contexto

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ãoComoContrapartida
Janela deslizanteMantenha os últimos K turnos e descarte o restantePerde completamente o contexto inicial
Resumo contínuoSubstitua periodicamente os turnos antigos por um resumo escrito pelo modeloCusta uma chamada extra; preserva o essencial
Nova sessão por tarefaComece do zero quando o assunto mudarSem custo e geralmente adequado
ExternalizarMantenha o estado em arquivos ou em um banco de dados e carregue apenas o que a etapa atual precisaMais 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

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.