Escrito originalmente en francés. Traducido por IA — se ha preservado el sentido, no la prosa.
Idea principal
Un script que llama a un asistente para encargarle una tarea mecánica — extraer de un intercambio las decisiones que hay que registrar y devolverlas en JSON — obtiene una respuesta correcta o no según el directorio desde el que se lanzó. Lanzado desde el proyecto, el asistente carga el CLAUDE.md de ese proyecto y empieza a obedecer las reglas de redacción que encuentra allí, en lugar de devolver la estructura pedida. Lanzado desde /tmp, no encuentra nada y hace lo que se le pide.
El directorio actual no es, por tanto, un detalle de invocación: es parte del prompt, invisible dentro del prompt. Las mismas instrucciones que hacen útil a un agente conversacional — convenciones, tono, prohibiciones, formatos de entrega — son ruido para un agente que se usa como una función.
De ahí una regla de aislamiento: a un agente utilitario se le llama desde un lugar neutro, elegido por lo que no contiene. La neutralidad es una propiedad del lugar de ejecución, no del prompt.
Por qué es importante
El fallo es difícil de diagnosticar porque no parece un fallo. El modelo responde, la respuesta es plausible, simplemente está mal formada o es demasiado verbosa — y sospechas del prompt, del tamaño del modelo, de la temperatura, de todo menos de la ruta.
De forma más amplia: dos usos de un mismo agente no tienen la misma necesidad de contexto, y el contexto que sirve a uno degrada al otro.
Matices y límites
El aislamiento corta también lo que habría sido útil. Un agente lanzado fuera del proyecto no sabe nada de sus convenciones de nomenclatura, y si tiene que escribir en los archivos del proyecto, habrá que decírselo explícitamente.
Y el mecanismo de herencia depende de la herramienta: lo que se carga automáticamente, y desde qué raíz, no es lo mismo en todas partes.
Preguntas abiertas
- ¿Cómo darle a un agente utilitario la parte del contexto del proyecto que le sirve, sin darle las reglas destinadas al agente conversacional?