ヒューマン・イン・ザ・ループ — 人間が介入するタイミング
完全自律 vs 適切な介入、そのバランス
Claude Codeを使っていると「このファイルを修正してもいいですか?」と聞かれる瞬間がある。これがヒューマン・イン・ザ・ループだ。
なぜ必要か
エージェントが自律的に行動するのが全て良いわけではない。取り消し不能な行動をエージェントが独断で行うと問題になる。
git push --forceでコミット履歴を消す
本番DBに直接DELETEクエリ実行
顧客にメール送信
決済処理
こういうのは人間が確認すべきだ。だが毎ステップ確認を受けるとエージェントを使う意味がない。
介入レベル設計
レベル0 — 完全手動: 毎行動に人間の承認。エージェントの意味がない。
レベル1 — 危険な行動のみ承認: 読み取りは自由、書き込みは確認。大半のコーディングエージェントがこの水準。
レベル2 — ポリシーベース自動: 事前定義ルール内で自律、ルール外は承認要求。「このディレクトリ内のファイル修正はOK、他は聞いて。」
レベル3 — 完全自律: すべての行動をエージェントが決定。危険だが、明確な範囲では有効。(例:サンドボックステスト環境)
良い介入要求の条件
エージェントが「これやっていいですか?」と聞く時:
コンテキスト提供: なぜこの行動が必要か説明
影響範囲: この行動が何を変更するか具体的に
代替案提示: 「こうもできるし、ああもできるけどどっち?」
デフォルト提案: 「こうするつもりですが、よければ進めます」
「ファイルを修正します」(悪い)vs「src/auth.tsのvalidateToken関数に有効期限チェックを追加します。既存ロジックは変更せず条件文のみ追加します。」(良い)
エスカレーション vs 中断
エスカレーション: 「この部分は判断が難しいです」→ 人間に決定を委ね、決定を受けて続行。
中断: 「この作業を続けると危険かもしれません」→ 作業自体を停止。
Ralph Wiggumループを防ぐ最も確実な方法がエスカレーションだ。ループにはまったら正直に「詰まりました」と言えるエージェントが良いエージェントだ。
動作フロー
行動をリスク別に分類 — 読み取り(安全)、書き込み(確認)、削除/デプロイ(必須承認)
プロジェクトポリシーに合う介入レベルを設定(Level 1〜3)
エージェントの承認要求にコンテキスト + 影響範囲 + 代替案を含めるよう設計
Ralph Wiggumループ検出時に自動エスカレーションをトリガー