Depois de trocar o modelo com /model e repetir a tarefa, o(a) senhor(a) recebeu uma resposta diferente. Mas o agente leu CLAUDE.md do mesmo jeito, pediu permissão antes do comando da mesma forma, e o hook disparou como antes. Ou seja, nada disso está no modelo.

Vamos separar onde o modelo termina e onde começa o programa que o envolve. Isso ajuda a entender o que verificar quando o agente erra.

Modelo e harness

O modelo processa o contexto recebido e produz uma resposta ou uma chamada de ferramenta. Por exemplo, escolhe qual arquivo ler e qual comando executar. Para realizar essas ações, é preciso um programa ao redor do modelo: ele acessa arquivos, executa comandos e devolve os resultados ao modelo.

Em materiais em inglês, esse programa é chamado de harness. Ao pé da letra, significa "arreio" (sim, de cavalo), mas em português é mais prático falar em camada de integração. A documentação da Anthropic é direta: Claude Code é a camada de integração, e Claude é o modelo dentro dela. O termo também aparece em artigos sobre agentes em geral, então vale guardá-lo.

O pedido entra na camada pela esquerda. No centro está o modelo, cercado por três grupos: o que ele vê, como age e onde suas ações podem ser interrompidas. A camada executa a chamada de ferramenta e devolve o resultado ao modelo, que escolhe o próximo passo. À direita aparece o resultado no projetoCamada (harness)cicloSeu pedidoModeloescolha do passoO que o modelo vêinstruções, CLAUDE.mdCom o que o modelo ageferramentas, MCP, subagentesOnde o modelo é paradopermissões, hooksResultadono projeto
Ciclo de trabalho: chamada de ferramenta, resultado, próximo passo

Na figura, a camada reúne o contexto, verifica as permissões e executa as chamadas de ferramentas feitas pelo modelo. A seta abaixo do modelo representa o ciclo: o resultado da ferramenta volta ao contexto, e o modelo escolhe o próximo passo ou conclui a resposta. Uma resposta concluída ainda não prova que a tarefa foi resolvida: é preciso conferir o resultado.

O que já foi configurado

Veja como os componentes dessa camada aparecem no Claude Code. Os arquivos e comandos da coluna à direita ajudam a localizar cada mecanismo no projeto ou na sessão.

Componente da camadaO que fazOnde encontrar
Instruções do sistemaO Claude Code as adiciona ao contexto antes da primeira mensagem: como trabalhar, quais ferramentas estão disponíveis e em que pasta a sessão acontecelinha System prompt na saída de /context
CLAUDE.mdregras do projeto que o agente lê no início da sessãoarquivo na raiz do projeto
Ferramentasleitura e edição de arquivos, busca e comandos no terminallinhas como Read(...) e Bash(...) durante o trabalho
Skillsinstruções que o modelo pode escolher conforme a tarefa ou que podem ser chamadas explicitamente.claude/skills/, /skills
MCPponte para serviços externos e dados atualizados/mcp
Subagentesexecutores separados, cada um com seu próprio contexto.claude/agents/
Solicitações de permissãoa camada verifica se a ação é permitida e, quando necessário, pede autorizaçãopergunta no terminal antes de um comando ou edição
Hooksseus comandos para eventos da sessão, executados sem decisão do modelo/hooks
Contexto e sessãoo que o modelo vê no momento e para qual ponto da sessão é possível voltar/context, /clear, /rewind
Ciclo do agentedevolve os resultados das ferramentas ao modelo para que escolha o próximo passovárias ações seguidas em resposta a uma solicitação

CLAUDE.md e skills fornecem instruções ao modelo. Ele pode entender uma regra de forma errada ou deixá-la passar. A verificação de permissões e os comandos configurados em hooks são executados pelo programa: o resultado depende das condições definidas e dos próprios comandos.

Plugins não aparecem na tabela porque não são um componente separado, mas um pacote: vários skills, comandos ou hooks instalados de uma só vez.

O mesmo modelo, comportamentos diferentes

Considere um chat na web sem acesso ao projeto e ao terminal. Ele tem sua própria camada: histórico da conversa, interface e, às vezes, busca na internet ou envio de arquivos. Nesse chat, o modelo pode explicar uma alteração e mostrar o código; já o Claude Code, com acesso ao projeto, pode aplicá-la no arquivo. O modelo é o mesmo, mas os recursos mudam porque o programa ao redor é diferente.

Com /model, acontece o contrário. O modelo muda, mas a camada permanece, então as regras, ferramentas e solicitações de permissão continuam lá.

O modelo determina como a tarefa é entendida, quais ferramentas são escolhidas e como seus resultados são avaliados. A camada reúne o contexto, disponibiliza ferramentas e verifica permissões. Por exemplo, o modelo pode pedir um arquivo que falta, e a camada o lê e devolve seu conteúdo.

Como isso aparece no Claude Code

O agente fala com convicção sobre uma função que já nem existe no projeto? Primeiro, confira se o código atualizado entrou no contexto. É possível incluí-lo com @ seguido do caminho do arquivo, colá-lo na mensagem ou obtê-lo com a ferramenta de leitura. Nos dois primeiros casos, talvez não apareça uma chamada de leitura separada. Se a ferramenta foi chamada, veja o que ela retornou: o conteúdo do arquivo ou um erro de acesso ou de caminho. Se o código não está no contexto, inclua-o ou peça a leitura do arquivo. Se o código está lá, mas a conclusão está errada, confira o raciocínio com base em linhas específicas. Outro modelo também pode ajudar nesse caso.

O que ajustar quando o agente erra

Um erro pontual costuma ser fácil de corrigir com uma mensagem: "não é esse arquivo, veja src/utils.js". Se o erro se repete de uma sessão para outra, vale conferir as instruções e os dados disponíveis. Talvez seja preciso explicar a mesma regra toda vez.

Na prática, pode ser algo assim:

  • o agente esquece uma regra do projeto em toda sessão, por exemplo, que os testes devem ser executados com npm test - registre a regra em CLAUDE.md. É mais confiável deixá-la explícita nesse arquivo do que depender de um lembrete na conversa;
  • a mesma rotina já foi explicada pela terceira vez - é hora de colocá-la em um skill. O agente poderá carregar as instruções conforme a tarefa. Durante o trabalho, confira se o skill foi acionado; se não, chame-o com /skill-name, substituindo pelo nome correto;
  • o agente tenta adivinhar dados que não tem - forneça o que falta: adicione o arquivo ao contexto com @ ou conecte um serviço externo via MCP. Insistir não resolve a adivinhação;
  • o agente diz "pronto" sem executar uma verificação - um hook no evento Stop pode rodar os testes automaticamente, sem depender do modelo. Ainda cabe ao(à) senhor(a) aceitar o trabalho com base na saída do comando, não no relatório;
  • os dados necessários estão disponíveis e foram lidos, mas o agente se perde em um raciocínio complexo - experimente outro modelo com /model e compare o resultado na mesma tarefa.
Confira a causa

Primeiro, confira se os dados e as ferramentas necessários estão disponíveis. Se a dificuldade estiver no raciocínio, dá para experimentar outro modelo logo de início. Compare a qualidade do resultado e o consumo em /usage: tentativas repetidas que não dão certo também consomem seu limite e seu tempo.