Delimitar una tarea para que no pueda desviarse
Un autónomo falla de una manera específica: se desvía. Pides una cosa, "útilmente" refactoriza otras tres, toca archivos que nunca mencionaste, y vuelve con un diff que no puedes leer. La solución no es un agente más inteligente — es un encargo más ajustado.
Una buena tarea autónoma tiene cuatro partes: un objetivo claro, restricciones explícitas, un criterio de finalización concreto, y barandillas que el agente puede verificar por sí mismo. Las barandillas son la parte más importante, porque son la cerca que el agente no puede saltar sin que tú lo notes.
Goal: Make the failing tests in tests/checkout/ pass.
Constraints:
- Only edit files under src/checkout/. Do not touch src/auth/,
the database schema, or anything in config/.
- Do not add new dependencies.
- Do not change the tests themselves — the tests define correct behavior.
Done when:
- `npm test tests/checkout/` is fully green.
- `npm run typecheck` passes.
- `git diff --stat` shows changes only under src/checkout/.
If you get stuck after two real attempts, stop and report what you
tried and what's still failing. Don't paper over a failure to make
the suite go green.
El encargo funciona porque encierra al agente: las restricciones delimitan lo que puede tocar, el criterio de finalización es un comando que puede ejecutar, y el bucle de verificación lo mantiene honesto:
┌───────────────────────── SCOPE FENCE ─────────────────────────┐
│ may edit: src/checkout/ │
│ ✗ off-limits: src/auth/ · db schema · config/ · the tests │
│ │
│ ┌─────────┐ edit ┌──────────────┐ │
│ │ AGENT │──────────▶│ src/checkout/ │ │
│ │ │◀──────────┤ │ │
│ └────┬────┘ run test └──────────────┘ │
│ │ │
│ ▼ npm test + typecheck │
│ ┌─────────────┐ green ──▶ DONE │
│ │ VERIFY LOOP │ red ──▶ retry (max 2) │
│ └─────────────┘ stuck ──▶ STOP & report ────────────────┼─▶ you
└───────────────────────────────────────────────────────────────┘
Tres cosas hacen que este encargo sea difícil de desviar. Las restricciones dibujan un muro alrededor de los archivos que el agente puede tocar. El criterio de finalización es un comando que cualquiera puede ejecutar, no una sensación. Y el último párrafo le da permiso para detenerse y preguntar en vez de flagelarse — lo que evita el desastre en cámara lenta donde un agente sigue "arreglando" cosas durante veinte minutos y deja el árbol peor de como lo encontró.
Las pruebas son la cerca real. Un agente que puede ejecutar sus propias pruebas tiene un bucle de retroalimentación ajustado y honesto, y en su mayor parte se mantiene dentro de él; uno sin forma de verificar su trabajo te entregará con confianza algo roto. Si te llevas un solo hábito de este capítulo: dale al agente una forma de verificarse a sí mismo, y haz que pasarla sea la definición de terminado.