🤝

ヒューマン・イン・ザ・ループ — 人間が介入するタイミング

完全自律 vs 適切な介入、そのバランス

Claude Codeを使っていると「このファイルを修正してもいいですか?」と聞かれる瞬間がある。これがヒューマン・イン・ザ・ループだ。

なぜ必要か

エージェントが自律的に行動するのが全て良いわけではない。取り消し不能な行動をエージェントが独断で行うと問題になる。

  • git push --forceでコミット履歴を消す

  • 本番DBに直接DELETEクエリ実行

  • 顧客にメール送信

  • 決済処理

こういうのは人間が確認すべきだ。だが毎ステップ確認を受けるとエージェントを使う意味がない。

介入レベル設計

レベル0 — 完全手動: 毎行動に人間の承認。エージェントの意味がない。

レベル1 — 危険な行動のみ承認: 読み取りは自由、書き込みは確認。大半のコーディングエージェントがこの水準。

レベル2 — ポリシーベース自動: 事前定義ルール内で自律、ルール外は承認要求。「このディレクトリ内のファイル修正はOK、他は聞いて。」

レベル3 — 完全自律: すべての行動をエージェントが決定。危険だが、明確な範囲では有効。(例:サンドボックステスト環境)

良い介入要求の条件

エージェントが「これやっていいですか?」と聞く時:

  • コンテキスト提供: なぜこの行動が必要か説明

  • 影響範囲: この行動が何を変更するか具体的に

  • 代替案提示: 「こうもできるし、ああもできるけどどっち?」

  • デフォルト提案: 「こうするつもりですが、よければ進めます」

「ファイルを修正します」(悪い)vs「src/auth.tsのvalidateToken関数に有効期限チェックを追加します。既存ロジックは変更せず条件文のみ追加します。」(良い)

エスカレーション vs 中断

エスカレーション: 「この部分は判断が難しいです」→ 人間に決定を委ね、決定を受けて続行。

中断: 「この作業を続けると危険かもしれません」→ 作業自体を停止。

Ralph Wiggumループを防ぐ最も確実な方法がエスカレーションだ。ループにはまったら正直に「詰まりました」と言えるエージェントが良いエージェントだ。

動作フロー

1

行動をリスク別に分類 — 読み取り(安全)、書き込み(確認)、削除/デプロイ(必須承認)

2

プロジェクトポリシーに合う介入レベルを設定(Level 1〜3)

3

エージェントの承認要求にコンテキスト + 影響範囲 + 代替案を含めるよう設計

4

Ralph Wiggumループ検出時に自動エスカレーションをトリガー

ユースケース

Claude Codeのファイル修正承認プロンプト 顧客対応エージェントの返金処理前の確認