Escrito originalmente em francês. Traduzido por IA — o sentido foi preservado, não a prosa.
Ideia principal
Um script que chama um assistente para uma tarefa mecânica — extrair de uma troca as decisões a registrar e devolvê-las em JSON — obtém uma resposta correta ou não conforme o diretório de onde foi lançado. Lançado a partir do projeto, o assistente carrega o CLAUDE.md daquele projeto e passa a obedecer às regras de redação que estão ali, em vez de devolver a estrutura pedida. Lançado a partir de /tmp, ele não encontra nada e faz o que você pediu.
O diretório atual, portanto, não é um detalhe de invocação: é uma parte do prompt, invisível dentro do prompt. As mesmas instruções que tornam um agente conversacional útil — convenções, tom, proibições, formatos de entrega — são ruído para um agente que você usa como uma função.
Daí uma regra de isolamento: um agente utilitário se chama a partir de um lugar neutro, escolhido pelo que ele não contém. A neutralidade é uma propriedade do lugar de execução, não do prompt.
Por que isso importa
A pane é difícil de diagnosticar porque não parece uma pane. O modelo responde, a resposta é plausível, ela só está mal formada ou falante demais — e você suspeita do prompt, do tamanho do modelo, da temperatura, de tudo menos do caminho.
De forma mais ampla: dois usos de um mesmo agente não têm a mesma necessidade de contexto, e o contexto que serve a um degrada o outro.
Nuances e limites
O isolamento também corta o que teria sido útil. Um agente lançado fora do projeto não sabe nada das convenções de nomes dele, e se precisar escrever nos arquivos do projeto, será preciso dizer isso a ele explicitamente.
E o mecanismo de herança depende da ferramenta: o que é carregado automaticamente, e a partir de que raiz, não é a mesma coisa em todo lugar.
Questões em aberto
- Como dar a um agente utilitário a parte do contexto do projeto que lhe serve, sem lhe dar as regras destinadas ao agente conversacional?