Uma hora de trabalho numa tarefa, e o agente de repente sugere uma opção que o(a) senhor(a) recusou meia hora atrás. Ou recapitula um arquivo que já foi corrigido à mão. Parece esquecimento, mas na verdade é assim que o trabalho funciona: o agente olha para uma janela de tamanho limitado e ali não enxerga o projeto inteiro, só o que entrou nessa janela.

Vamos ver o que ocupa a janela, como consultá-la com o comando /context e o que fazer quando quase não sobra espaço livre.

O contexto e o seu limite

Contexto é a informação disponível para o modelo no próximo passo: as mensagens do(a) senhor(a), as respostas do agente, o código já lido, a saída de comandos, as instruções do projeto. A janela de contexto define o limite de quanto disso cabe ao mesmo tempo. Não é espaço livre em disco nem a memória RAM do seu computador.

Daí vem a distinção que mais costuma gerar confusão. Três coisas fáceis de confundir entre si:

  • arquivos em disco - o conteúdo do projeto, que as ferramentas conseguem ler;
  • o histórico salvo da sessão - o registro da conversa, que fica em disco e pode ser reaberto;
  • o contexto atual - o que está disponível para o modelo agora mesmo.

Os conjuntos estão relacionados, mas não coincidem. Um arquivo pode estar numa pasta e nunca entrar na conversa. E a conversa pode manter a versão de um arquivo de meia hora atrás. Por isso a frase "mas a gente já discutiu isso" não significa, por si só, que o agente está com a informação atualizada.

  • Arquivo do projeto
  • Leitura por uma ferramenta
  • Informação para a resposta

Entre o arquivo existir e o agente saber dele, há um passo de leitura. O Claude Code dá esse passo sozinho: faz buscas no projeto, abre o que precisa, passa para o código relacionado. Não é preciso listar cada caminho de antemão. Mas enquanto esse passo não acontece, o arquivo não existe para a conversa.

Tudo isso é medido em tokens - os pedaços de texto em que o modelo divide tanto o seu pedido quanto o código lido. Um token pode ser uma palavra inteira ou só parte dela, então contar tokens pelo número de palavras não funciona.

O que ocupa a janela antes da primeira pergunta

A janela já está ocupada antes mesmo de o(a) senhor(a) digitar a primeira palavra. O comando /context mostra exatamente o quê:

Saída do comando /context: 4k de 200k tokens usados, com a divisão nas categorias System prompt, Memory files, Skills, Messages e a linha Free space.

A sessão mal começou e 4k de 200k tokens já estão ocupados, só com overhead: System prompt são as instruções do próprio agente, Memory files são o CLAUDE.md e as regras do projeto já carregados, Skills é a lista de skills disponíveis. A linha Messages, ou seja, a conversa em si, ainda está vazia.

E veja como fica o quadro depois de uma hora de trabalho, ainda com um par de servidores MCP conectados:

/context

  System prompt     3.2k   ( 2%)   instruções básicas do agente
  System tools     12.1k   ( 6%)   descrições das ferramentas embutidas
  MCP tools        21.4k   (11%)   servidores externos conectados
  Memory files      1.8k   ( 1%)   CLAUDE.md, rules, auto memory
  Messages         45.2k   (22%)   sua conversa, arquivos, logs
  Free space      116.3k   (58%)

Isso é um esquema, não a saída de uma versão específica: o conjunto de linhas e o layout na tela dependem da versão do Claude Code e do que está conectado no projeto, e o tamanho da janela depende do modelo. Mas o quadro é sempre mais ou menos o mesmo, e dele saem conclusões práticas:

  • o mínimo obrigatório - as instruções do agente e as descrições das suas ferramentas embutidas - está sempre lá, e o(a) senhor(a) não tem controle sobre isso;
  • cada servidor MCP conectado acrescenta à janela pelo menos a lista das suas ferramentas, mesmo que nunca sejam usadas. Conectar um servidor "por via das dúvidas" significa pagar por ele em cada sessão;
  • um CLAUDE.md que cresceu demais também é pago de novo a cada início. Mais um motivo para mantê-lo curto;
  • ao longo do trabalho, cresce basicamente uma linha - a de mensagens. É ela que vale a pena acompanhar.
Teste no seu próprio projeto

Se o Claude Code estiver à mão: rode /context, peça ao agente para ler um par de arquivos e rode de novo. A linha de mensagens vai crescer na hora, e vai ficar claro quanto custa uma única leitura.

O que se acumula ao longo do trabalho

Dali em diante é o(a) senhor(a) que preenche a janela - e não só com palavras. Tudo que o agente lê e recebe a seu pedido entra no contexto:

FonteO que exatamente ocupa espaço
A conversasuas mensagens, as respostas do agente, inclusive as opções recusadas
Arquivos lidoso conteúdo inteiro ou só os trechos necessários
Resultados de ferramentasa saída de um comando, as linhas encontradas, observações do navegador
Material de skills e MCPa instrução de uma skill que entrou em ação, a descrição de uma ferramenta chamada

O pedido e o contexto que ele traz de volta são duas grandezas bem diferentes. "Mostre o log inteiro" tem quatro palavras, e o resultado chega a milhares de linhas. É justamente por isso que uma saída grande pode prejudicar mais do que uma pergunta longa.

Daí o hábito de entregar as fontes de forma pontual. O símbolo @ antes de um caminho traz o arquivo para a conversa, e o autocompletar funciona enquanto o(a) senhor(a) digita o caminho: Leia @src/reward-flow.js e explique onde o número de pontos é definido. Mencionar uma pasta com @ também não deve ser interpretado como carregar o conteúdo de todos os arquivos dela: a referência a uma pasta dá uma lista de arquivos. Escolha a fonte de acordo com a pergunta. É exatamente essa distinção entre referenciar um arquivo e referenciar uma pasta que a documentação sobre como passar arquivos descreve.

Mais um detalhe pequeno. Se depois disso o(a) senhor(a) trocar dez por vinte manualmente, a resposta anterior não se atualiza sozinha. Peça ao agente para ler o conteúdo atual antes de tirar uma nova conclusão. Uma referência a um arquivo lido uma vez não transforma o texto antigo da conversa numa cópia viva do arquivo em disco.

Quando o espaço acaba

A janela não é elástica, mas a sessão também não é interrompida no meio de uma frase. À medida que a janela vai enchendo, o Claude Code executa uma compactação: substitui o histórico detalhado por um resumo e libera espaço. Isso acontece automaticamente, e o momento depende do modelo e das configurações.

O(a) senhor(a) também pode iniciar a compactação por conta própria, com o comando /compact. A vantagem de fazer isso manualmente é que o(a) senhor(a) escolhe o momento - por exemplo, antes de um bloco grande de trabalho novo - e pode dizer o que é importante manter:

/compact Mantenha o objetivo da tarefa e os limites da edição,
a opção rejeitada com um handler separado
e o próximo passo: verificar a limpeza do campo de busca.

O principal sobre a compactação: o que fica na janela é um resumo, não a conversa. Um detalhe que não entrou no resumo saiu da janela, e discutir "mas você concordou com isso vinte minutos atrás" depois de uma compactação não leva a lugar nenhum - é mais fácil resgatar o fato de novo a partir do arquivo. As instruções do projeto, porém, não se perdem: o CLAUDE.md raiz é carregado de novo.

O segundo comando, /clear, não compacta nada. Ele abre uma nova conversa: a anterior continua salva e acessível via /resume, os arquivos do projeto não mudam, e as instruções do projeto são carregadas normalmente.

ComandoO que fazQuando escolher
/contextmostra o que está ocupando a janelanão está claro para onde foi o espaço
/compactreduz o histórico a um resumoa tarefa é a mesma, mas o histórico já cresceu muito
/clearrecomeça a conversaa tarefa mudou

A regra de escolha é simples: mesma tarefa - compacte; tarefa diferente - abra uma nova conversa. Não é preciso limpar depois de cada comando: enquanto o(a) senhor(a) está resolvendo um único problema, as observações e os ajustes dele continuam trabalhando a seu favor. Mas antes de um novo tema vale anotar a conclusão necessária em poucas linhas: "a recompensa é definida em src/reward-config.js e concedida em src/reward-flow.js". É uma pista de para onde voltar, sem reescrever a conversa inteira.

Como gastar a janela com mais economia

Nenhum dos três comandos vai ser tão necessário se a janela não se encher de coisa desnecessária desde o início. Alguns hábitos que fazem a maior diferença:

  • Pergunte de forma específica. Diante de um pedido vago, o agente sai explorando: lê arquivos desnecessários, testa várias opções. Indicar o arquivo e dizer o que se espera economiza espaço e tempo.
  • Não despeje tudo de uma vez. Uma pergunta sobre um teste que falhou precisa das linhas ao redor do erro, não do log inteiro.
  • Mantenha as instruções do projeto curtas. O CLAUDE.md é carregado em cada sessão. Material de referência extenso vive melhor em arquivos separados, lidos só quando necessário.
  • Desligue servidores MCP desnecessários. Um servidor conectado "por via das dúvidas" ocupa espaço em cada início, e o retorno é zero.
  • Delegue investigações grandes a um subagente. Ele trabalha na própria janela e devolve um resumo, enquanto as dezenas de arquivos lidos ficam com ele.

O que ter em mente

Contexto é o que o(a) senhor(a) colocou na mesa, não o que "existe no projeto". Um arquivo em disco, um registro no histórico e a informação na janela atual são três coisas diferentes, e a confusão entre elas explica boa parte das respostas estranhas.

A partir daí tudo se resume a três ações: ver o quanto a janela está cheia com /context, entregar a fonte necessária com @ e decidir a tempo se é melhor compactar a conversa ou começar uma nova. Escolha conforme a situação - uma compactação não substitui a leitura do arquivo necessário, e um arquivo entregue não verifica o raciocínio do agente no seu lugar.