Очертить задачу так, чтобы агент не забрёл
Автономный агент проваливается особым образом: он дрейфует. Вы просите одно, а он «услужливо» рефакторит ещё три вещи, трогает файлы, которых вы не упоминали, и возвращается с 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.
Три вещи делают этот бриф таким, из которого трудно забрести. Ограничения возводят стену вокруг файлов, которые агенту можно трогать. Критерий завершения — это команда, которую может запустить любой, а не ощущение. А последний абзац даёт ему разрешение остановиться и спросить вместо барахтанья — именно это предотвращает замедленную катастрофу, когда агент двадцать минут что-то «чинит» и оставляет дерево хуже, чем нашёл.
Настоящий забор — это тесты. Агент, который может прогнать собственные тесты, имеет тугую и честную петлю обратной связи и в основном держится внутри неё; тот, у кого нет способа проверить свою работу, уверенно вручит вам сломанное. Если вынести из этой главы одну привычку: дайте агенту способ проверять себя и сделайте прохождение этой проверки определением «готово».