Programação e agentes de IA

[Contexto de IA #3] Como escolher entre /clear e /compact

Os dois artigos anteriores concluíram o diagnóstico. A janela de contexto é finita (parte 1), e preenchê-la não significa que tudo será usado; quanto mais longa, mais o desempenho cai (parte 2). A conclusão é clara: é preciso gerenciar o contexto. Para isso, agentes de código, incluindo o Claude Code, oferecem duas ferramentas básicas: /clear e /compact…

6 min de leitura
Imagem de capa de [Contexto de IA #3] Como escolher entre /clear e /compact

Os dois artigos anteriores concluíram o diagnóstico. A janela de contexto é finita (parte 1), e preenchê-la não significa que tudo será usado; quanto mais longa, mais o desempenho cai (parte 2). A conclusão é clara: é preciso gerenciar o contexto. As ferramentas mais básicas oferecidas por agentes de código, incluindo o Claude Code, são /clear e /compact.

Os dois comandos reduzem o contexto. Por isso, muita gente usa qualquer um deles sem critério ou espera até aparecer o alerta de pouco espaço restante. Mas o funcionamento interno é completamente diferente: usar o comando errado pode apagar todo o contexto da tarefa ou, ao contrário, fazer você carregar um contexto bagunçado continuamente. Nesta parte, vamos entender exatamente o que cada comando faz internamente e definir quando usar cada um.

/clear: apague o histórico e comece do zero

O funcionamento de /clear é simples: ele descarta todo o histórico da conversa até o momento. No turno seguinte, o modelo começa apenas com o prompt do sistema, arquivos sempre carregados como CLAUDE.md e a nova mensagem que você acabou de enviar. Lembrando a estrutura da parte 1, o significado fica claro: como a conversa é, na prática, o reenvio de todo o histórico a cada turno, apagar o histórico significa reinicializar o pacote enviado ao modelo.

Você perde todo o contexto da conversa e ganha um contexto limpo. O efeito lost in the middle visto na parte 2 e a confusão causada por versões antigas de arquivos e logs de falha também desaparecem com o histórico. O espaço restante de tokens é totalmente recuperado, e menos entrada é reenviada a cada turno; com isso, as respostas ficam mais rápidas e o custo diminui.

Por isso, /clear deve ser usado nas fronteiras entre tarefas. Se você corrigiu um bug e concluiu o commit, a próxima funcionalidade não precisa do stack trace nem das tentativas e erros do bug anterior. Misturar os contextos só atrapalha. Interromper com /clear ao fim de cada tarefa evita boa parte da perda de qualidade na segunda metade da sessão.

/compact: substitua o histórico por um resumo

/compact segue uma abordagem diferente. Em vez de descartar o histórico, ele pede ao modelo que resuma a conversa até o momento e substitui o histórico original pelo resumo. Um histórico de dezenas de milhares de tokens é reduzido a um resumo de alguns milhares, recuperando espaço e preservando a linha principal do trabalho.

O ponto central é que isso é compressão com perdas. Resumir significa que o modelo escolhe o que parece importante, e o usuário não consegue controlar o que sobreviverá. Detalhes concretos, como caminhos de arquivos, abordagens tentadas e abandonadas e o texto exato das mensagens de erro, podem ficar distorcidos no resumo. O agente relê os arquivos logo após o compact porque o resumo, sozinho, não informa o estado exato deles.

Felizmente, existe algum controle. O /compact do Claude Code aceita instruções depois do comando. Por exemplo, “/compact mantenha principalmente as mudanças de esquema confirmadas nesta migração e a lista de arquivos restantes” direciona o foco do resumo. O usuário sabe melhor o que importa; portanto, mesmo delegando a compressão, indique a direção.

Entre clear e compact, existe uma terceira opção: salvar o estado em um arquivo e começar de novo
Entre clear e compact, existe uma terceira opção: salvar o estado em um arquivo e começar de novo

Critério de escolha: existe contexto a ser levado adiante?

O critério se resume a uma pergunta: o agente do próximo turno precisa conhecer o contexto acumulado até agora?

  • A tarefa terminou e a próxima é independente → /clear. É o padrão, sem hesitação.
  • A mesma tarefa continua, mas o espaço restante é insuficiente → /compact. Porém, especifique na instrução o que deve ser mantido.
  • É a mesma tarefa, mas o agente começou a andar em círculos → surpreendentemente, /clear é melhor. Resumir um contexto contaminado por tentativas e erros apenas concentra a contaminação. Faça o agente organizar o estado atual e os próximos passos em um arquivo e, depois, reinicie com /clear usando esse arquivo.

O terceiro caso dá uma pista. Entre clear e compact, há uma terceira alternativa: tirar do contexto e colocar em um arquivo o que precisa ser preservado. Peça “organize no PLAN.md as decisões tomadas até agora e o trabalho restante”, execute /clear e faça a nova sessão ler o PLAN.md. Assim, você transfere com precisão apenas o contexto necessário, sem a incerteza do resumo. Diferentemente do /compact, que deixa o modelo decidir o que preservar, o conteúdo fica em um arquivo visível, que pode ser validado e editado. Esse padrão de “externalização” será aprofundado na parte 6, quando tratarmos de memória.

Por que você não deve esperar pelo auto-compact

O Claude Code executa o compact automaticamente quando o espaço restante atinge um limite. É uma ótima proteção, mas depender dela é outra questão.

O saldo de tokens define quando o auto-compact é acionado, independentemente do fluxo de trabalho. A compressão pode ocorrer no pior momento: no meio de uma refatoração, com cinco arquivos sendo modificados e os testes quebrados. O resumo agrupa um estado intermediário confuso, e o agente continua trabalhando com uma compreensão sutilmente desalinhada. É assim que o context poisoning da parte 2 acontece por meio do resumo.

Por isso, usuários experientes gerenciam o saldo restante como um indicador. A cada marco lógico—commit, testes passando ou decisão confirmada—eles registram o estado em um arquivo e fecham o ciclo quando restam 20–30%, escolhendo por conta própria o momento de usar /clear ou /compact. Mesmo que a compressão seja inevitável, você controla quando e como ela acontece.

Defina o momento da compressão pelos marcos da tarefa, não pelo saldo restante
Defina o momento da compressão pelos marcos da tarefa, não pelo saldo restante

Resumo

  • /clear apaga o histórico; /compact o substitui por um resumo. O primeiro descarta o contexto e recupera ao máximo o espaço restante, enquanto o segundo preserva a linha principal ao custo da perda de detalhes.
  • O padrão é usar /clear a cada fronteira de tarefa. Use /compact somente quando houver contexto a ser levado adiante e especifique na instrução o que manter.
  • Quando o agente anda em círculos, é mais limpo fazê-lo registrar o estado em um arquivo e reiniciar com /clear em vez de resumir.
  • auto-compact é apenas uma proteção; o ideal é definir o momento da compressão pelos marcos da tarefa.

Isso cobre o gerenciamento do histórico da conversa. Mas existe contexto que não desaparece com /clear e é enviado a cada turno: áreas sempre carregadas, como o prompt do sistema, CLAUDE.md e as definições de ferramentas. Na próxima parte, veremos como projetar esse custo fixo. O ponto central é decidir o que entra no CLAUDE.md e o que fica de fora.

Continue lendo