Очертить задачу так, чтобы агент не забрёл
Автономный агент проваливается особым образом: он дрейфует. Вы просите одно, а он «услужливо» рефакторит ещё три вещи, трогает файлы, которых вы не упоминали, и возвращается с diff'ом, который не прочесть. Лекарство — не более умный агент, а более тугой бриф.
У хорошей автономной задачи четыре части: ясная цель, явные ограничения, конкретный критерий завершения и ограждения, которые агент может прогнать сам. Ограждения — важнейшая часть, потому что это забор, через который агент не перелезет так, чтобы вы не заметили.
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.
Этот бриф работает потому, что запирает агента в коробку: ограничения возводят стену вокруг того, что можно трогать, критерий завершения — это команда, которую агент может запустить, а цикл проверки держит его честным:
┌─────────────────────── ОГРАДА ОБЛАСТИ ────────────────────────┐
│ можно править: src/checkout/ │
│ ✗ запрещено: src/auth/ · db-схема · config/ · тесты │
│ │
│ ┌─────────┐ правка ┌──────────────┐ │
│ │ АГЕНТ │──────────▶│ src/checkout/ │ │
│ │ │◀──────────┤ │ │
│ └────┬────┘ тест-ран └──────────────┘ │
│ │ │
│ ▼ npm test + typecheck │
│ ┌─────────────┐ green ──▶ ГОТОВО │
│ │ ЦИКЛ ПРОВ. │ red ──▶ повтор (макс 2) │
│ └─────────────┘ stuck ──▶ СТОП и отчёт ─┼─▶ вы
└───────────────────────────────────────────────────────────────┘
Три вещи делают этот бриф таким, из которого трудно забрести. Ограничения возводят стену вокруг файлов, которые агенту можно трогать. Критерий завершения — это команда, которую может запустить любой, а не ощущение. А последний абзац даёт ему разрешение остановиться и спросить вместо барахтанья — именно это предотвращает замедленную катастрофу, когда агент двадцать минут что-то «чинит» и оставляет дерево хуже, чем нашёл.
Настоящий забор — это тесты. Агент, который может прогнать собственные тесты, имеет тугую и честную петлю обратной связи и в основном держится внутри неё; тот, у кого нет способа проверить свою работу, уверенно вручит вам сломанное. Если вынести из этой главы одну привычку: дайте агенту способ проверять себя и сделайте прохождение этой проверки определением «готово».