さまよえないようにタスクの範囲を定める
自律エージェントは特定の仕方で失敗する。漂流するのだ。一つのことを頼んだのに、「親切に」別の三つをリファクタリングし、一度も言及していないファイルに触れ、読めない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 ──▶ 停止して報告 ─┼─▶ あなた
└───────────────────────────────────────────────────────────────┘
三つのことがこのブリーフからさまよい出るのを難しくしている。制約はエージェントが触れてよいファイルの周りに壁を引く。完了基準は雰囲気ではなく誰でも回せるコマンドだ。そして最後の段落は、もがく代わりに立ち止まって尋ねる許可を与える——エージェントが20分間「修正し」続けてツリーを見つけたときより悪く残していくスローモーションの惨事を防ぐのが、まさにこれだ。
本物の柵はテストだ。自分のテストを回せるエージェントはきつく正直なフィードバックループを持ち、たいていその中に留まる。自分の仕事を確かめる手段のないエージェントは、壊れたものを自信たっぷりに手渡してくる。この章から習慣を一つ持ち帰るなら:エージェントに自分を検証する手段を与え、それを通すことを完了の定義とせよ。