Ir al contenido
Mastering Claude

Inicio / Gestos cotidianos

Gestos cotidianos11 minApplication

Trampas de escritura: archivos, ediciones paralelas y entregables perdidos

Un informe de éxito escrito por un subagente no prueba nada sobre el estado real de los archivos, ya que arranca en un contexto aislado sin acceso a lo que el agente principal ya leyó o escribió, y la única prueba fiable sigue siendo un diff verificado después, no el texto del informe.

Un subagente arranca con un contexto aislado y nuevo en cada llamada, salvo para un fork, que por el contrario hereda toda la conversación en curso. No ve ni el historial de la conversación principal, ni las skills ya invocadas, ni los archivos que el agente principal ya leyó. Este aislamiento no le impide consultar él mismo el disco: dispone de las mismas herramientas de lectura y ejecución que la conversación principal, y perfectamente puede lanzar un git diff o releer un archivo para verificar su propio trabajo. Lo que falta es una mirada externa: un informe de éxito sigue siendo un texto producido por el mismo agente que acaba de actuar, nunca una verificación independiente, y nada garantiza que corresponda a una escritura real en el disco mientras nadie más lo haya controlado.

El informe de texto no es la prueba

La buena práctica documentada consiste en pedir un diff verificable en lugar de confiar en el texto del informe. Un diff muestra las líneas realmente cambiadas en un archivo real, un informe de éxito no es más que una frase generada por el mismo agente que afirma haber tenido éxito.

mkdir -p /tmp/demo-diff
echo "versión inicial" > /tmp/demo-diff/avant.txt
echo "versión modificada" > /tmp/demo-diff/apres.txt
diff /tmp/demo-diff/avant.txt /tmp/demo-diff/apres.txt
# resultado: la línea modificada aparece, la prueba está en el diff, no en una frase

Un informe en texto que afirme que apres.txt fue actualizado no aporta nada más que ese diff, y sin él, nada distingue una escritura real de una frase inventada. Un script en una sola línea que contiene comillas invertidas se topa con una trampa vecina: el shell que lo ejecuta puede interpretarlas antes de que el comando llegue a su destino, y lo que se muestra después parece un éxito cuando el comando realmente lanzado estaba truncado. Releer el comando tal como fue recibido por el shell, no solo tal como fue tecleado, responde a la misma necesidad de prueba que el diff.

Dos escrituras sobre el mismo archivo nunca son independientes

Dos modificaciones enviadas juntas sobre el mismo archivo, ya sea por dos subagentes o por dos llamadas de la herramienta de edición en el mismo turno, se aplican una tras otra sobre el contenido que la herramienta encuentra en el momento en que actúa, nunca sobre dos copias separadas fusionadas después. La segunda modificación puede entonces fallar al buscar el texto que buscaba, porque la primera ya lo cambió. Enviar las dos modificaciones en secuencia, releyendo el archivo entre ambas, reduce ese riesgo y hace que cada paso sea verificable por sí mismo.

El mismo principio de prueba verificable se aplica a un entregable largo: un contenido de varios párrafos que solo existe en la respuesta mostrada desaparece con ella en cuanto la conversación continúa. Escribirlo en un archivo real antes de mostrarlo, como en una salida estructurada en modo headless, garantiza que siga siendo consultable independientemente del hilo de conversación, exactamente como un diff sigue siendo legible independientemente del informe que lo acompaña.

Figure 1

Informe de éxito frente a prueba verificable

Prueba de que una escritura realmente ocurrióQué la produceQué muestraCómo verificarla
Informe de éxito en textoGenerado por el mismo agente que afirma haber tenido éxitoUna frase que afirma que el archivo fue actualizadoNada que verificar, la frase se toma a sí misma como prueba
Diff del archivo realProducido por un comando que lee el contenido del archivo en el discoLas líneas exactas que cambiaron, o ninguna línea si nada cambióSe relee independientemente de lo que el agente afirme
La comparación cruza tres criterios, qué produce cada prueba, qué muestra y cómo verificarla, entre un informe de éxito en texto y un diff del archivo real.
Calíbralo tú mismo

Un desarrollador le pide a un subagente que añada una línea de configuración en un archivo, recibe una respuesta que anuncia que la modificación está hecha, y luego abre él mismo el archivo en el disco y lee su contenido.

Escriba en una frase lo que esta situación establece, y en una frase lo que no establece.

Lo que hay que recordar
  • Un subagente arranca con un contexto aislado, sin acceso al historial de la conversación principal, a las skills ya invocadas ni a los archivos ya leídos por el agente principal.
  • Un subagente puede leer el disco igual que la conversación principal, pero su informe sigue siendo un texto producido por el mismo agente que actuó, nunca una verificación independiente, de donde surge el riesgo de que no corresponda a ninguna escritura real.
  • Un diff de las líneas realmente cambiadas constituye una prueba verificable, un informe en texto que afirma un éxito no lo es.
  • Dos modificaciones enviadas juntas sobre el mismo archivo se aplican una tras otra sobre el contenido encontrado en el momento de la acción, nunca sobre dos copias fusionadas después.
  • Un entregable largo escrito únicamente en la respuesta mostrada desaparece con ella, escribirlo en un archivo real lo hace consultable independientemente del hilo de conversación.
Hazlo ahora

Abra un archivo que haya pedido recientemente escribir a un subagente o a una herramienta, lance un diff o una relectura directa de su contenido en el disco, y confirme que lo que encuentra corresponde exactamente al informe de éxito recibido.

Verificar en la fuente

Cada afirmación datable de esta lección remite aquí al texto público que la respalda. Una fuente que no se abre no prueba nada.