Uma janela de contexto não é memória
Em maio de 2025, Philippe Laban e três colegas da Microsoft e da Salesforce publicaram um estudo com um título pouco lisonjeiro: "LLMs Get Lost In Multi-Turn Conversation". Pegaram tarefas que os modelos resolvem bem numa única mensagem, dividiram as instruções para que chegassem aos poucos, em vários turnos, do jeito que usuários de verdade as fornecem, e rodaram mais de 200.000 conversas simuladas em seis tarefas de geração. Todos os modelos testados foram pior na versão em vários turnos, 39% em média. A decomposição é a parte instrutiva. Uma pequena fração da perda foi de aptidão, isto é, daquilo de que o modelo é capaz no melhor caso. A maior parte foi de falta de confiabilidade: a distância entre as melhores e as piores execuções do modelo na mesma tarefa aumentou. Os autores atribuíram boa parte do estrago aos primeiros turnos, em que os modelos faziam suposições, tentavam uma resposta final antes de ter o pedido completo e depois construíam sobre essa resposta em vez de revisá-la.
O experimento não era um teste de estresse do tamanho da janela. A mesma informação, espalhada em turnos, bastou para causar o dano, de modo que a falha não foi falta de espaço. Foi uma propriedade de como um modelo usa o que lhe foi mostrado, e ela contraria um quadro confortável em que a transcrição funciona como um caderno que o modelo relê com fidelidade antes de cada resposta.
Meu argumento neste ensaio é que a janela de contexto e a memória são coisas diferentes, e que confundi-las é a razão de muitos agentes de longa duração piorarem quanto mais rodam. Uma janela guarda o conjunto de trabalho de uma chamada de inferência. Ela é remontada e lida por inteiro a cada passo, custa dinheiro em proporção ao seu tamanho e perde utilidade à medida que enche. Memória é um sistema: uma decisão sobre o que guardar, onde pôr, como achar, quando revisar e quando esquecer. Uma equipe que não projetou a segunda está contando com a primeira para fazer o trabalho, e a primeira nunca foi feita para isso.
A janela anunciada não é a janela de trabalho
Os fornecedores citam tamanhos de contexto como capacidade, e capacidade não é o mesmo que faixa utilizável. O benchmark RULER, da NVIDIA (Hsieh e colegas, COLM 2024), testou 17 modelos de contexto longo que anunciavam ao menos 32.000 tokens. Só cerca de metade manteve desempenho satisfatório em 32.000. Quase todos mostraram quedas grandes à medida que o comprimento crescia, embora pontuassem perto da perfeição no teste simples da agulha no palheiro que a maioria dos fornecedores cita, em que um único fato é plantado num texto de enchimento e o modelo é instruído a recuperá-lo.
O NoLiMa (Modarressi e colegas, ICML 2025) tornou a agulha mais difícil de um modo revelador: a pergunta quase não compartilhava palavras com o trecho que continha a resposta, então o modelo não podia ter sucesso casando textos. Entre 13 modelos que declaravam suporte a 128.000 tokens ou mais, 11 caíram abaixo da metade da própria nota em contexto curto já em 32.000 tokens. O GPT-4o foi de 99,3% para 69,7%. Quando a tarefa exige inferir uma ligação, e não achar uma expressão, o que descreve a maior parte do trabalho real, o comprimento efetivo é bem menor que o anunciado.
A equipe de engenharia da Anthropic descreveu o mecanismo em setembro de 2025 com o nome de context rot, algo como apodrecimento do contexto. À medida que o número de tokens na janela sobe, a precisão da recuperação cai. Eles tratam o contexto como um recurso finito com retornos decrescentes, em que cada novo token consome um orçamento de atenção, e apontam para o número quadrático de relações entre pares que a atenção precisa cobrir. Os modelos também veem menos sequências longas do que curtas no treino, então a degradação tende a ser gradual e não um precipício, o que a torna fácil de não perceber. Um sistema que passa num teste com 8.000 tokens e falha em silêncio com 60.000 não está obviamente quebrado em nenhum ponto isolado.
Três coisas que se chamam de memória
Parte da confusão é de vocabulário. A palavra memória é aplicada a pelo menos três objetos diferentes, e eles pedem tratamentos diferentes.
| Tipo | O que guarda | Duração | Onde deve ficar | Falha típica |
|---|---|---|---|---|
| Transcrição | As mensagens e os resultados de ferramentas até agora | Uma sessão | Na janela de contexto, aparada | Inchaço, saída de ferramenta obsoleta, suposições erradas dos primeiros turnos |
| Estado de trabalho | O plano, as decisões tomadas, os arquivos tocados, as dúvidas abertas | Uma tarefa | Dados estruturados no seu código, renderizados no prompt | Sai de sincronia com a realidade quando mantido só como prosa |
| Conhecimento de longo prazo | Fatos sobre o usuário ou o cliente, procedimentos aprendidos, preferências | Meses | Um repositório com política de escrita, recuperação e expiração | Entradas velhas, erradas ou envenenadas recuperadas com confiança |
O ponto prático da tabela está na linha do meio. O estado de trabalho é o que um agente precisa para manter o fio ao longo de uma tarefa longa, e costuma ficar implícito na transcrição. Um agente que cumpriu 40 passos sabe o que fez apenas porque a evidência está espalhada por 40 resultados de ferramentas. Manter um registro estruturado e pequeno (objetivo, plano com o status de cada passo, decisões com os motivos, fatos estabelecidos) no código, e renderizá-lo no topo de cada prompt, transforma o progresso do agente em algo que ele lê em poucas centenas de tokens e que você pode inspecionar, testar e reproduzir.
Os sistemas operacionais já resolveram isso uma vez
O precedente mais útil vem da arquitetura de computadores. Um programa enxerga um grande espaço de endereços, e o sistema operacional move páginas entre a memória rápida e o armazenamento lento para que a ilusão se sustente. O MemGPT, de Charles Packer e colegas em Berkeley (2023), aplicou a ideia a modelos de linguagem. A janela de contexto faz o papel da memória principal, os repositórios externos fazem o papel do disco, e o próprio modelo chama funções para mover informação para dentro e para fora. O nome que o artigo dá à abordagem é gerenciamento de contexto virtual.
As técnicas atuais são variações dessa ideia, e o texto da Anthropic lista quatro. A compactação resume uma conversa que está perto do limite e recomeça com o resumo, o que perde informação e não pode ser desfeito. O Claude Code, segundo o texto, mantém o resumo mais os cinco arquivos acessados mais recentemente. A anotação estruturada faz o agente escrever num arquivo fora da janela, como um NOTES.md ou uma lista de tarefas, e recarregá-lo depois; o texto descreve um agente que acompanhou o progresso ao longo de 1.234 passos assim. Subagentes trabalham em janelas limpas numa parte delimitada da tarefa e devolvem achados condensados, em geral de 1.000 a 2.000 tokens. A recuperação sob demanda mantém no contexto referências leves, como caminhos de arquivos ou consultas, e carrega os dados subjacentes quando preciso, o que é mais lento que pré-computar, mas mantém a janela pequena.
Cada técnica troca alguma coisa. A compactação troca detalhe por espaço, e o detalhe que descarta é escolhido pelo modelo sem saber o que vai importar depois. As anotações exigem que o agente as escreva nos momentos certos, então a disciplina precisa ser embutida no laço e verificada. Subagentes trocam tokens por isolamento, e as próprias medições da Anthropic colocam sistemas multiagentes em cerca de quinze vezes o uso de tokens de um chat. A recuperação sob demanda troca latência por foco. Não há escolha universalmente melhor, e a escolha deve seguir o formato da tarefa: trabalho sequencial longo favorece anotações e compactação, pesquisa ampla e paralela favorece subagentes.
Esquecer costuma sair mais barato que resumir
O reflexo, quando a janela enche, é pedir a um modelo que resuma o histórico. Parece sensato e tem custos: uma chamada extra, um resumo que pode perder o único detalhe de que o passo seguinte precisava e um prefixo reescrito que quebra qualquer cache de prompt. Um estudo de 2025 da JetBrains Research e da Universidade Técnica de Munique (Lindenbauer e colegas, NeurIPS 2025) comparou o resumo com algo muito mais simples. A máscara de observações mantém no histórico o raciocínio e as ações do agente e troca as saídas antigas de ferramentas por um marcador. No benchmark de programação SWE-bench Verified, com o arcabouço SWE-agent, a máscara cortou o custo em cerca de metade em relação a deixar o histórico bruto, e igualou a taxa de resolução do resumo por LLM, às vezes superando-a um pouco. Para o melhor modelo dos testes, saiu 52% mais barata que o agente bruto. Os autores têm o cuidado de limitar a conclusão a esse ambiente, e eu faria o mesmo.
Por que descartar venceria resumir? Minha leitura é que, num laço de agente, a maior parte do volume é saída de ferramenta: uma listagem de diretório, o log de um teste, as 400 linhas de um arquivo lido uma hora atrás. Seu valor se concentra no passo que a usou. O raciocínio anterior do próprio agente é curto e em geral continua relevante. Descartar o volume e manter o raciocínio e as ações elimina a fonte mais provável de ruído a custo quase nulo, e o agente pode buscar a saída de novo se ela se mostrar importante.
O registro de estado de trabalho merece economia semelhante. Deve conter o que o próximo passo vai precisar e nada além: o objetivo numa frase, o plano com cada passo marcado como concluído, em andamento ou bloqueado, as decisões tomadas com uma oração de justificativa, os fatos já estabelecidos com suas fontes e as perguntas ainda em aberto. Isso cabe em algumas centenas de tokens. Qualquer coisa maior é uma transcrição disfarçada.
Memória de longo prazo precisa de política de escrita
Um repositório que persiste entre sessões levanta questões que uma janela nunca levantou. O que é gravado, e por quem? Uma regra de que só fatos confirmados pelo usuário são salvos produz um repositório menor e mais confiável do que uma que deixa o modelo gravar o que quer que infira. Quem pode ver e corrigir as entradas? Se um sistema lembra as preferências de um cliente, o cliente deve poder lê-las, editá-las e apagá-las, e a lei de proteção de dados (a LGPD no Brasil, o GDPR na Europa) dá peso jurídico a essa expectativa quando há dados pessoais. Como as entradas envelhecem? Uma preferência declarada em 2024 pode não valer em 2026, então as entradas precisam de data e de uma regra de expiração ou revalidação. O que acontece quando um fato novo contradiz um antigo?
Há ainda a segurança. Uma memória em que o modelo pode escrever é um lugar onde conteúdo não confiável pode persistir. Em setembro de 2024, o pesquisador Johann Rehberger mostrou que instruções escondidas num documento ou numa página da web podiam fazer o ChatGPT armazenar falsas memórias, e que essas instruções plantadas passavam para novas conversas. Na demonstração dele, o aplicativo podia ser induzido a enviar as conversas do usuário para o servidor de um atacante. A OpenAI corrigiu o caminho de exfiltração no aplicativo para macOS, e Rehberger depois mostrou um ataque semelhante contra o Gemini, do Google. A lição para o projeto é que tudo o que é gravado na memória de longo prazo deve ser tratado como entrada da fonte original e não como conhecimento do próprio sistema: registre de onde veio cada entrada e pondere-a de acordo na hora da recuperação.
Defina um orçamento de trabalho com base em evidências
Trate a janela anunciada como teto e descubra a sua própria faixa de trabalho. O procedimento é curto. Pegue uma tarefa representativa da suíte de avaliação e preencha o contexto com material realista (turnos antigos, documentos recuperados, saídas de ferramentas) em 8.000, 32.000, 64.000 e 128.000 tokens. Rode cada versão vezes suficientes para ver a taxa de aprovação com seu intervalo. O ponto em que a taxa começa a cair é o seu orçamento, e ele varia conforme a tarefa.
Depois distribua-o. O orçamento de um agente pode reservar 3.000 tokens para instruções de sistema, 4.000 para definições de ferramentas, 2.000 para memória de longo prazo recuperada, 1.000 para o registro de estado de trabalho, 8.000 para documentos recuperados e 10.000 para os turnos mais recentes, uns 28.000 ao todo. É uma fração modesta de uma janela de 200.000 tokens, e se a avaliação mostra a qualidade se mantendo nesse tamanho e cedendo além dele, o resto da janela é margem de segurança e não lugar para pôr coisas.
Janelas maiores não vão remover o problema
A objeção é que as janelas continuam crescendo, e os comprimentos efetivos com elas. É verdade. O resultado de Laban continua relevante, porque trata de como os modelos lidam com informação que chega aos poucos. Eles erraram nos primeiros turnos, por se comprometerem cedo demais com uma suposição, e uma janela maior não muda isso. O custo é a outra restrição. Cada chamada paga por todos os tokens da janela, e um agente de cem passos que reenvia 150.000 tokens a cada passo paga por 15 milhões de tokens de entrada antes de terminar, sem considerar descontos de cache.
O hábito mais útil é o que não custa nada. Escreva o código que monta o contexto como uma função simples do estado para o prompt, registre em log o prompt exato montado para cada chamada ao modelo e ponha testes de snapshot na função. Quando um agente se comporta de modo estranho no passo 70, a pergunta a fazer é o que lhe foi mostrado no passo 70. Quem registra o log responde em um minuto, e quem não registra tende a começar trocando o modelo.
Fontes
- Laban, P., Hayashi, H., Zhou, Y., Neville, J. (2025). LLMs Get Lost In Multi-Turn Conversation. arXiv:2505.06120.
- Hsieh, C.-P., Sun, S., Kriman, S., et al. (2024). RULER: What's the Real Context Size of Your Long-Context Language Models? COLM 2024. arXiv:2404.06654.
- Modarressi, A., Deilamsalehy, H., Dernoncourt, F., et al. (2025). NoLiMa: Long-Context Evaluation Beyond Literal Matching. ICML 2025. arXiv:2502.05167.
- Anthropic (29 de setembro de 2025). Effective context engineering for AI agents. anthropic.com/engineering/effective-context-engineering-for-ai-agents.
- Packer, C., Wooders, S., Lin, K., et al. (2023). MemGPT: Towards LLMs as Operating Systems. arXiv:2310.08560.
- Rehberger, J. (setembro de 2024). Injeção de memória e exfiltração de dados no ChatGPT ("SpAIware"), conforme relatado por The Hacker News (setembro de 2024), thehackernews.com/2024/09/chatgpt-macos-flaw-couldve-enabled-long.html.
- Anthropic (junho de 2025). How we built our multi-agent research system. anthropic.com/engineering/multi-agent-research-system.
- Lindenbauer, T., Slinko, I., Felder, L., Bogomolov, E., Zharov, Y. (2025). The Complexity Trap: Simple Observation Masking Is as Efficient as LLM Summarization for Agent Context Management. NeurIPS 2025. arXiv:2508.21433.