~/VibeHandbook
PDF бесплатно

Глава 19 · 03

Очертить задачу так, чтобы агент не забрёл

Автономный агент проваливается особым образом: он дрейфует. Вы просите одно, а он «услужливо» рефакторит ещё три вещи, трогает файлы, которых вы не упоминали, и возвращается с 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 ──▶ СТОП и отчёт                 ─┼─▶ вы
 └───────────────────────────────────────────────────────────────┘

Три вещи делают этот бриф таким, из которого трудно забрести. Ограничения возводят стену вокруг файлов, которые агенту можно трогать. Критерий завершения — это команда, которую может запустить любой, а не ощущение. А последний абзац даёт ему разрешение остановиться и спросить вместо барахтанья — именно это предотвращает замедленную катастрофу, когда агент двадцать минут что-то «чинит» и оставляет дерево хуже, чем нашёл.

Настоящий забор — это тесты. Агент, который может прогнать собственные тесты, имеет тугую и честную петлю обратной связи и в основном держится внутри неё; тот, у кого нет способа проверить свою работу, уверенно вручит вам сломанное. Если вынести из этой главы одну привычку: дайте агенту способ проверять себя и сделайте прохождение этой проверки определением «готово».

Хотите офлайн-версию?

Скачайте всю книгу в PDF или EPUB — бесплатно.