Compactação de contexto apagou o código do agente: como salvar os artefatos antes

compactação de contexto apagando o código gerado pelo agente de IA
Resposta rápida

A compactação de contexto resume as mensagens antigas pra caber mais conversa na janela, e o preço disso aparece depois: o agente entrega o resultado, mas não consegue mais reproduzir o script que rodou. Foi o que Simon Willison relatou em 12/09/2026, com um agente que trabalhou 27 minutos, devolveu GPX e GeoJSON e depois não entregou o Python usado. A rotina que resolve é simples: pedir o código no mesmo prompt da tarefa, baixar os arquivos assim que aparecem e guardar o registro fora da thread, antes de a sessão esticar.

Fala aí, beleza? Um agente consegue trabalhar quase meia hora, entregar exatamente o que você pediu e, alguns turnos depois, não conseguir mais te mostrar o código que ele mesmo rodou

Foi o que aconteceu num caso público de 12/09/2026: o agente ficou 27 minutos na tarefa, devolveu arquivos GPX e GeoJSON prontos pra download e, quando o autor pediu uma cópia do script Python usado, não veio nada

O motivo apontado por ele: a thread tinha sido compactada

Esse post pega esse episódio e transforma em rotina de trabalho: pedir o código junto do resultado, exportar os arquivos na hora e registrar o que foi executado antes de a sessão crescer demais

O que aconteceu no caso das rotas de corrida

O relato é do Simon Willison e a tarefa era bem direta

Ele pediu, em um prompt único, rotas de corrida de 5K e 10K em loop saindo da casa dele, usando dados do OpenStreetMap

O ambiente era o ChatGPT Work rodando GPT-6 Astra

O agente trabalhou por 27 minutos e entregou o pedido em dois formatos: uma visualização embutida na interface e arquivos GPX e GeoJSON pra baixar

Até aqui, entrega redonda

Quando ele perguntou COMO a rota tinha sido criada, o sistema respondeu que usou Nominatim pra localizar o endereço e Overpass pra baixar vias e trilhas do OpenStreetMap, calculando os loops localmente

Uma resposta de alto nível, resumo do método

Agora a parte chata: o código executado e os detalhes exatos do que foi feito não ficaram visíveis na interface do ChatGPT

Ele critica essa falta de transparência como um problema do produto, e isso é opinião dele, não descrição oficial

Formação Claude Code
Formação Recomendada

Formação Claude Code

Domine Claude Code do absoluto zero até o avançado

  • 116 aulas
  • 4 projetos
  • 9h 23min

Quando pediu a cópia do código Python, o ChatGPT não conseguiu fornecer

Aqui vale o cuidado: a causa apontada (thread compactada) é hipótese do autor do relato, não confirmação da OpenAI

E a fonte não afirma que os arquivos GPX e GeoJSON sumiram, só o código

Ah, e o mapa exibido na interface veio de uma skill de visualização que, segundo o relato, gerou um arquivo HTML dentro da pasta /workspace da sessão, nomeado a partir da localidade (El Granada), pra embutir na UI

Que ChatGPT Work é esse?

Parada rápida pra situar quem não acompanhou

O ChatGPT Work é um agente dentro do ChatGPT que reúne informação de apps, arquivos e web pra produzir entregáveis: planilhas, slides, docs, web apps

Ele acompanha projetos complexos por horas, quebrando a tarefa em etapas, planejando, executando e pausando pra aprovação

Ou seja: é justamente o tipo de sessão longa em que a conversa cresce muito, beleza?

Por que o código pode sumir depois que a conversa é compactada

Vamos ao porquê antes do como

O sintoma é sempre o mesmo: o agente entrega o resultado, você pede o script que gerou aquilo e recebe um resumo do método em vez do código

A explicação mais plausível está em como a compactação funciona, e vale repetir que, no caso das rotas, essa ligação é hipótese do Willison, não confirmação da OpenAI

A OpenAI documenta compaction na API como forma de reduzir o tamanho do contexto preservando o estado necessário pros turnos seguintes

No Claude Code a lógica é a mesma: o comando /compact resume as mensagens mais antigas preservando contexto importante

Repara na palavra chave aí: resume

Resumo preserva o estado necessário pra continuar, não a transcrição literal do que passou

Uma analogia de aproximação: é como ata de reunião

A ata guarda as decisões, não guarda cada frase que foi dita na sala

Se depois você quiser a frase exata, com vírgula e tudo, a ata não resolve

Isso explica o mecanismo, mas não fecha o diagnóstico do caso público: ninguém confirmou oficialmente que foi a compactação que levou o script embora

Mesmo assim, a conclusão prática é dura e simples: o turno em que o agente entrega é o único momento em que você tem certeza de que o material está ali, inteiro, citável

Depois disso, é torcida

O que ter pronto antes de disparar uma tarefa longa

Nada de setup complicado, é organização mesmo

  • Uma pasta local de destino pros arquivos que vão sair da sessão, criada ANTES de começar (nada de procurar onde salvar com o download já na tela)
  • Um arquivo de registro simples, texto puro, onde você cola o prompt original, o que o agente disse que usou e o caminho dos arquivos baixados
  • A decisão prévia de quais artefatos você quer: código, dados brutos, visualização, ou os três

Esse último ponto é o que mais gente pula

Se você não decidiu antes o que quer levar embora, você vai decidir depois, e depois pode ser tarde

No Claude Code tem um item extra que ajuda muito: o CLAUDE.md na raiz do projeto

Ele sobrevive à compactação, porque depois do /compact o Claude relê o arquivo do disco e reinjeta na sessão

A recomendação oficial é manter esse arquivo abaixo de 200 linhas

Então ele não é lugar pra despejar log: é lugar pra regra durável do projeto, tipo padrão de código, comandos do projeto e o que nunca deve ser feito

Se você já usa hooks no Claude Code, aquelas automações que rodam antes e depois do agente editar, esse mesmo raciocínio se aplica: quanto mais coisa vive em disco e menos coisa vive só na conversa, menos você depende da memória da sessão

Como salvar o código e os arquivos do agente antes da compactação

A rotina abaixo é o que transforma o susto do caso das rotas em processo

  1. Peça o código no MESMO prompt da tarefa, não depois

Em vez de só descrever o objetivo, feche o pedido com a exigência do artefato

Faça X.
Além do resultado, me entregue:
1) o script completo que você executou, em bloco de código
2) a lista das fontes de dados e endpoints usados
3) os arquivos gerados disponíveis para download

O erro comum deste passo: achar que dá pra perguntar depois

Foi exatamente isso que falhou no relato das rotas: o pedido do Python veio tarde

  1. Baixe os arquivos assim que eles aparecem

GPX, GeoJSON, HTML de visualização, CSV, o que for

Baixou, joga na pasta de destino que você criou antes

O erro comum deste passo: tratar o histórico da conversa como backup

Histórico é interface, não é o seu disco

  1. Peça a listagem do que foi executado enquanto a resposta ainda está fresca

No caso público, a resposta de método veio boa (Nominatim pra geocodificar, Overpass pra baixar vias e trilhas, cálculo dos loops feito localmente)

Um resumo assim já é ouro pra reconstruir depois, mesmo sem o código

O erro comum deste passo: aceitar só o resumo e não pedir o passo a passo com nomes de ferramenta e parâmetros

  1. Cole o que importa em arquivo fora da thread

Abre o editor, cria registro.md na pasta do projeto e cola: prompt original, script recebido, método relatado, caminhos dos arquivos

Leva 30 segundos

O erro comum deste passo: deixar pra fazer ‘quando terminar o projeto’

  1. No Claude Code, use /compact com instrução em vez de esperar a compactação acontecer sozinha

O comando aceita instrução junto, e a referência oficial de slash commands traz esse exemplo:

/compact Focus on the API changes

Assim você orienta o que precisa ser preservado no resumo

O erro comum deste passo: compactar sem instrução nenhuma e torcer pra que o resumo tenha guardado justo a parte que você ia precisar

  1. Mantenha o contexto durável no CLAUDE.md

Tudo que precisa valer pra sessão inteira mora ali, porque o arquivo é relido do disco depois da compactação

O erro comum deste passo: usar o arquivo como diário da sessão e estourar as 200 linhas recomendadas

Recuperação: o que ainda dá pra tentar quando a sessão já esticou

Se a conversa já foi compactada e você percebeu tarde, ainda tem o que tentar

Cuidado importante: o que vem abaixo é Claude Code, com documentação oficial, e não se transfere pra outros produtos

Detalhe de um produto não vale como instrução de outro

  1. Abra o menu de checkpoints

Use /rewind, ou aperte Esc duas vezes com o campo de prompt vazio

O menu de checkpointing oferece seis opções: restaurar código e conversa, restaurar conversa, restaurar código, resumir a partir daqui, resumir até aqui e cancelar

O erro comum deste passo: confundir restaurar código com restaurar conversa e desfazer trabalho bom sem querer

  1. Saiba os limites antes de contar com isso

O checkpointing só rastreia arquivos editados dentro da sessão atual

Ele não rebobina arquivos symlinked nem hard-linked

E pode falhar com ‘No files were restored’ se os snapshots já expiraram, já que a retenção é controlada por cleanupPeriodDays

O erro comum deste passo: tratar checkpoint como controle de versão

Não é, e nunca foi 🙂

  1. Vá atrás do transcript no disco

O Claude Code grava as sessões em arquivos .jsonl:

~/.claude/projects/<encoded-cwd>/<session-id>.jsonl

Se a variável $CLAUDE_CONFIG_DIR estiver definida, o caminho passa a ser $CLAUDE_CONFIG_DIR/projects/

E o --resume aceita o caminho absoluto do arquivo .jsonl da sessão

O erro comum deste passo: procurar o transcript pela pasta do projeto em vez do diretório de sessões codificado

Quando a compactação é aliada e quando ela custa caro

Não é vilã, beleza? Compactar é o que deixa a sessão longa continuar existindo

O problema é aplicar a mesma postura pros dois tipos de tarefa

Cenário O que a compactação faz Risco real
Exploração longa (investigar, ler, comparar, decidir) Resume o caminho e libera espaço pra seguir Baixo: o que interessa é a decisão, não a transcrição
Tarefa que gera artefato reaproveitável (script, dataset, arquivo exportável) Resume o intermediário junto com o resto Alto: o código que gerou o resultado pode não voltar

A régua é essa: se o valor da sessão está no RACIOCÍNIO, resumir ajuda

Se o valor está num ARTEFATO, o artefato precisa sair da conversa antes

Do lado de quem constrói em cima da API, dá pra controlar isso com mais precisão

A Anthropic expõe a compactação server-side ativando a estratégia compact_20260112 em context_management.edits, com o detalhe de que o bloco de compactação precisa ser devolvido nas requisições seguintes pra conversa continuar

Isso está em beta e disponível pra Claude 4.6 e posteriores

Tem também a estratégia clear_tool_uses_20250919 do context editing, que limpa resultados de ferramenta quando o contexto passa do limite configurado

Perceba a diferença de postura: uma coisa é você escolher o que some, outra é descobrir depois que sumiu

E o autor do relato vai além, defendendo que qualquer sistema de LLM que use compactação deveria preservar o texto pré-compactação e expor esse texto via chamadas de ferramenta do agente

Isso é opinião e recomendação dele, não política de produto de ninguém

Mas é uma opinião que faz sentido pra quem já perdeu script

Vale lembrar que esse tipo de comportamento aparece mais em tarefa longa de agente do que em geração de trecho de código, e é por isso que benchmark de agente vs código não medem a mesma coisa

O que eu vi montando agente por prompt no ChatGPT

Meu caso é outro, mas a lição bate no mesmo prego

No vídeo eu mostro o ChatGPT montando um agente de IA a partir de um prompt, e a primeira coisa que aconteceu foi ele me devolver só o código dentro da conversa

Nesse formato não funciona bem

Precisei pedir explicitamente o arquivo salvo

Reformulei o pedido pra algo do tipo ‘crie o arquivo e me disponibilize para download’, e só assim consegui tirar o artefato da conversa e levar pra ferramenta onde ele seria usado

E olha, nem sempre funciona de primeira: em um dos casos deu erro e eu tive que repetir a solicitação até o arquivo ser gerado

Enquanto ele montava o arquivo, eu acompanhava a execução

Isso não é frescura: é pra conferir se o processo REALMENTE concluiu antes de baixar

Tem também o caso do arquivo que baixa mas nem abre na ferramenta de destino

Quando isso rolou, a saída foi voltar ao chat e pedir a reformulação da estrutura

Outra coisa que apanhei: mandar arquivo demais como base faz o modelo se perder e começar a gerar saída com elemento que não existe

Nos meus testes, três arquivos de base foi o limite que rolou bem, acima disso ele começou a se perder

Ah, e o agente gerado veio com o valor de memória em 5 na tela, que era o padrão ali

Manter uma conversa já ‘treinada’ com material de base funciona como fábrica de rascunho reaproveitável, isso é mto massa

Mas sempre sobra ajuste manual depois, sem fórmula mágica

Importante ser honesto aqui: o vídeo não trata de compactação nem de perda de contexto por parte do agente

A experiência dele é sobre extrair o resultado da conversa em forma de arquivo antes de seguir

E é exatamente esse o ponto de contato com o caso das rotas: quanto mais a sessão carrega, mais cedo vale extrair o artefato

No vídeo você vê o pedido sendo reformulado até o arquivo sair pra download, e o que muda na prática quando o resultado deixa de ser texto na tela e vira arquivo no disco

Conclusão

Recapitulando o que importa

Compactação de contexto existe pra reduzir o tamanho do contexto preservando o estado necessário pros turnos seguintes, e isso é útil em sessão longa

O custo aparece quando o valor da tarefa está num artefato: no caso público, 27 minutos de trabalho, GPX e GeoJSON entregues e o script Python que não voltou

A regra de bolso cabe numa linha: o artefato só é seu quando está fora da thread

Próximo passo bem concreto pra sua próxima tarefa longa

Peça o código e os arquivos no MESMO turno da entrega, baixe na hora, cole o método relatado num arquivo de registro e só depois continue a conversa

Se for Claude Code, compacte você mesmo com instrução em vez de esperar, e deixe o durável no CLAUDE.md

Faça o teste na próxima sessão comprida e me conta se mudou o seu dia 😀

até o próximo post!

Perguntas frequentes

Por que a compactação de contexto apaga o código que o agente gerou?

Porque a compactação resume as mensagens mais antigas pra reduzir o tamanho do contexto, preservando só o estado necessário pra continuar a conversa. O código literal não faz parte desse resumo, então some junto com a transcrição original. Foi essa a hipótese apontada por Simon Willison quando o ChatGPT não conseguiu devolver o script Python das rotas de corrida.

Dá pra recuperar o código depois que a thread foi compactada?

No caso relatado, o ChatGPT não conseguiu fornecer o Python usado, e o próprio Willison aponta a compactação da thread como causa provável, sem confirmação da OpenAI. A fonte também não confirma se existe algum jeito oficial de reverter isso no ChatGPT. Por isso a recomendação é pedir o código no mesmo prompt da tarefa, antes de qualquer compactação acontecer.

O Claude Code tem alguma proteção contra perder contexto na compactação?

Sim, o CLAUDE.md na raiz do projeto sobrevive à compactação porque o Claude relê o arquivo do disco e reinjeta na sessão depois do /compact. A recomendação oficial é manter esse arquivo abaixo de 200 linhas, guardando regra durável do projeto, não log de execução. Ainda assim, isso não substitui salvar o código gerado durante a tarefa.

Qual a diferença entre /compact e /rewind no Claude Code?

O /compact resume as mensagens mais antigas preservando contexto importante, e aceita instrução junto, tipo /compact Focus on the API changes. Já o /rewind (ou Esc duas vezes com o prompt vazio) abre um menu de checkpoints com seis opções: restaurar código e conversa, restaurar conversa, restaurar código, resumir a partir daqui, resumir até aqui e cancelar. São ferramentas diferentes: uma reduz contexto pra frente, a outra volta no tempo.

O checkpointing do Claude Code recupera qualquer arquivo editado pelo agente?

Não totalmente. O checkpointing só rastreia arquivos editados dentro da sessão atual, não rebobina arquivos symlinked ou hard-linked. Também pode falhar com a mensagem ‘No files were restored’ se os snapshots já expiraram, já que a retenção é controlada pelo parâmetro cleanupPeriodDays.

Existe compactação também na API da Anthropic, fora do Claude Code?

Sim, a Anthropic tem a estratégia compact_20260112 em context_management.edits na Messages API, ainda em beta e disponível pra Claude 4.6 e versões posteriores. Ela exige que o bloco de compactação seja devolvido nas requisições seguintes pra continuar a conversa. Também existe a clear_tool_uses_20250919, que limpa resultados de ferramenta quando o contexto passa do limite configurado.




Escrito por | Matheus Battisti

Matheus Battisti
Fundador da Hora de Codar

Programador apaixonado pelo mundo das tecnologias, sempre buscando em aprender e se aprofundar em linguagens, frameworks e o que mais for necessário para executar um bom trabalho. Agora tem uma nova missão que é de passar seu conhecimento adiante para formar novos programadores e especializar mais os que já são.

Subscribe
Notify of
guest

0 Comentários
Oldest
Newest Most Voted

Formações

Formação Vibe Coding

Formação Vibe Coding

Do Prompt ao Produto: Crie Software Real com IA

  • 474 aulas
  • 20 projetos
  • 39h 27min

Blog | Mais populares