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.
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 camada | O que faz | Onde encontrar |
|---|---|---|
| Instruções do sistema | O 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 acontece | linha System prompt na saída de /context |
CLAUDE.md | regras do projeto que o agente lê no início da sessão | arquivo na raiz do projeto |
| Ferramentas | leitura e edição de arquivos, busca e comandos no terminal | linhas como Read(...) e Bash(...) durante o trabalho |
| Skills | instruções que o modelo pode escolher conforme a tarefa ou que podem ser chamadas explicitamente | .claude/skills/, /skills |
| MCP | ponte para serviços externos e dados atualizados | /mcp |
| Subagentes | executores separados, cada um com seu próprio contexto | .claude/agents/ |
| Solicitações de permissão | a camada verifica se a ação é permitida e, quando necessário, pede autorização | pergunta no terminal antes de um comando ou edição |
| Hooks | seus comandos para eventos da sessão, executados sem decisão do modelo | /hooks |
| Contexto e sessão | o que o modelo vê no momento e para qual ponto da sessão é possível voltar | /context, /clear, /rewind |
| Ciclo do agente | devolve os resultados das ferramentas ao modelo para que escolha o próximo passo | vá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.
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 emCLAUDE.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
Stoppode 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
/modele compare o resultado na mesma tarefa.
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.
GO TO FULL VERSION