Yeda AI Tips · #094

English

Que un subagente aparte escriba el test de reproducción

Tu IA califica su propia tarea. Cuando el mismo modelo, en la misma conversación, escribe el arreglo del bug y el test que lo "demuestra", los mismos supuestos se arrastran: lo que el modelo malinterpretó del bug moldea el fix y el test, y ambos coinciden — equivocadamente. La solución está a un prompt de distancia: divide el trabajo.

Por qué el test de un agente no atrapa su propio fix

Un agente se detiene cuando el trabajo parece terminado, y "parece terminado" es una señal débil cuando el verificador comparte el razonamiento del ejecutor. La guía oficial de Claude Code de Anthropic es explícita sobre el mecanismo: una verificación en un contexto nuevo funciona porque "el agente que hace el trabajo no es el que lo califica", y un revisor en contexto fresco "ve solo el diff y los criterios que le das, no el razonamiento que produjo el cambio". El mismo documento señala que un contexto nuevo mejora la revisión de código porque el modelo no está sesgado hacia el código que acaba de escribir.

En concreto, un fix autocalificado falla de dos maneras comunes y aburridas:

  1. El test codifica el diagnóstico equivocado. Si el agente cree que el bug es un off-by-one cuando en realidad es un problema de zona horaria, escribe un test de off-by-one — que el fix equivocado pasa sin problema.
  2. El test se escribe para pasar. Un agente que ya conoce el fix tiende a afirmar exactamente lo que el fix produce, no lo que el comportamiento correcto exige.

El flujo: demuestra el bug primero

PasoQuiénQué
1Subagente nuevoRecibe solo el reporte del bug + pasos de reproducción. Escribe un test que falla. Nunca ve el fix.
2Tú / el harnessCorre el test. Debe fallar por la razón reportada — esa falla es la reproducción.
3Agente principalImplementa el fix e itera hasta que el test del subagente pase.
4Revisor opcionalUn segundo subagente nuevo revisa el diff contra el test.

En Claude Code, los subagentes corren en su propia ventana de contexto, así que el aislamiento viene por defecto: quien escribe el test literalmente no puede espiar el razonamiento de quien arregla. El prompt es una línea:

Use a subagent to write a failing test that reproduces this bug:
users report login fails after session timeout. Give it only this
report — not the fix branch. Run it and show me the failing assertion.

Y luego, en la sesión principal: "make this test pass without modifying the test".

Verifica la falla, no solo el test

Un test que falla por la razón equivocada (error de import, fixture faltante) no demuestra nada. Exige evidencia al subagente: el comando exacto que corrió y la aserción que falló. Solo cuando la falla coincide con el síntoma reportado tienes una reproducción — entonces pásasela a quien arregla.

Trucos para usuarios avanzados

Recursos

Read this article in English

¿Construyendo una funcionalidad con IA? Yeda AI diseña, audita y entrega sistemas LLM en producción.

Habla con nosotros · Lee el blog