エージェントオペレーターのハンドブック:見えないものを監督する技術
自律型AIエージェントの運用は新たな専門領域です。エンジニアリングでもマネジメントでもオペレーションでもなく、その3つすべてを必要とするハイブリッドな仕事です。 オペレーターという役割は、エージェントが十分に長く稼働し、コード生成ではなく監督がボトルネックになったときに生まれます。5つの責務がこの役割を定義し、監督スタックがそれを実装し、介入フレームワークがいつ行動すべきかを判断します。
この仕事のための訓練を受けた人はいません。教える大学の学科もなければ、正確に記述された求人票もありません。ある月はPythonを書いていたのに、翌月にはPythonを書き、APIを呼び出し、ファイルシステムを変更し、あなたが寝ている間にアーキテクチャの意思決定を行う自律システムを管理しています。Ralphループが私のインフラにおいてこの役割を生み出しました。新しいコンテキストでClaude Codeを再起動し、ファイルシステムの状態を読み取り、夜間セッションをまたいで作業を継続するシェルスクリプトです。エージェントを自律的に運用しているすべてのチームが、独立して同じ役割を発見しています。単一のインタラクティブセッションを超えてエージェントが動作するたびに、同じ問題が浮上するからです。
この役割には確立された名前がありません。「AI ops」と呼ぶチームもあれば、プラットフォームエンジニアリングに組み込むチームもあります。フックを一度も書いたことのないエンジニアリングマネージャーに任せるチームもあります。この曖昧さは重要です。役割を誤認すると、仕事の配分を誤るからです。システムの知識がないエンジニアリングマネージャーは、破損したエージェント状態をデバッグできません。プロダクトの判断力がないプラットフォームエンジニアは、エージェントの出力が仕様の意図に合っているかを評価できません。オペレーターの役割には両方が必要です。仕様の決定(エージェントが何を構築すべきか、どんな制約を課すか)と運用の実行(セッションの監視、障害からの復旧、インフラの保守)の両方です。
5つのオペレーター責務
1. 委任
委任とは、実行開始前にエージェントの行動を制約する仕様を書くことです。委任の質が、他のどの要因よりも自律的な出力の質を決定します。
CLAUDE.mdファイルは委任の成果物です。プロジェクトの規約、禁止パターン、必須の振る舞い、品質基準を、エージェントがセッション開始時に読むドキュメントにエンコードします。1 PRDは委任の成果物です。エージェントが完了を報告する前に検証する受け入れ基準を指定します。タスクの説明も委任の成果物です。タスク説明の具体性が、エージェントの意思決定空間を制約します。
委任が不十分だとショートカットスパイラルが発生します。仕様がステップを必須として列挙しなかったために、エージェントがステップを飛ばしてしまうのです。良い委任は、必要なステップを明示的にします。私のPRDには番号付きの受け入れ基準が含まれ、各基準は観察可能な成果物(ファイルパス、テスト結果、特定の振る舞い)に対応しています。成果物を生成しなければ、エージェントは基準を完了とマークできません。観察可能な成果を指定する委任は、ファントムコンプリーション(見せかけの完了)というクラスの問題を根絶します。
ここでの技術は、何を指定し、何をオープンにするかを見極めることです。過剰な仕様は、予期しないコードに遭遇したとき適応できない脆いエージェントを生みます。過少な仕様は、許可していないアーキテクチャ上の意思決定をエージェントに行わせます。この境界線は信頼とともに動きます。十分にテストされ、強力なフックを持つエージェントには広い裁量が与えられますが、初めての夜間セッションを実行する新しい設定には慎重な制約が必要です。
2. 監督
監督とは、アクティブなセッションの監視、差分のレビュー、ドリフトが蓄積する前の検出を意味します。
ドリフトが最大のリスクです。エージェントは仕様に沿って作業を開始し、わずかに逸脱する合理的なマイクロ判断を行い、その逸脱の上にさらなる判断を積み重ねます。8回目のイテレーションには、委任されたものとは別の問題を解いています。個々の判断は単独で見れば合理的でしたが、累積した軌道はターゲットを外していたのです。
ドリフトを検出するために2つのメカニズムを使っています。まず、フックがハードバウンダリーを強制します。ブロックされたコマンド、必須パターン、禁止されたファイル変更です。フックはエージェントが先に進む前に、リアルタイムで違反を検出します。次に、定期的なログレビューがフックでは検出できないソフトドリフトを捕捉します。不必要に複雑なアプローチの選択、仕様にない機能の構築、ボトルネックではないコードパスの最適化などです。ソフトドリフトには人間の判断が必要です。エージェントの軌道がオペレーターの意図と一致しているかを判定できる自動チェックは存在しないからです。
監督はエージェント数に対してスケールしにくい問題があります。1つのエージェントが1晩に1セッションを生成するなら、朝のコーヒーを飲みながらレビューできます。5つのエージェントがそれぞれ8イテレーションを生成すると、40のコンテキストウィンドウ分の作業が発生します。優先順位付けが必須になります。まず失敗をレビューし、次にクリティカルパスに触れたセッション、最後にリスクの低いタスクでクリーンに完了したものを確認します。
3. 介入
介入とは、タスク実行中にエージェントをいつ停止、方向転換、または再起動すべきかを見極めることです。
4つのパターンが介入を求めます。
エージェントがループにはまっている。 連続するイテレーションで同じエラーが発生し、わずかなバリエーションで同じ修正を試みています。各イテレーションがコンテキストウィンドウを消費しながら前進がありません。介入:セッションを停止し、根本原因を手動で診断し、ハンドオフドキュメントに診断結果を記載して再起動します。
エージェントがテストをパスする不正確な出力を生成した。 コードはコンパイルされ、テストはグリーンですが、振る舞いが仕様の意図と一致していません。エビデンスゲートは一部のケースを検出しますが、エージェントは誤った振る舞いに対してもっともらしい正当化を生成できます。介入:正しい振る舞いを捕捉する失敗テストを書き、再起動します。
エージェントが本番環境または外部システムに触れようとしている。 不可逆な結果を伴うあらゆる操作(本番へのデプロイ、メール送信、データベースの変更、有料APIの呼び出し)にはゲートが必要です。私のフックは破壊的なbashコマンドと外部ネットワーク呼び出しをブロックしています。どのゲートをいつ開くかはオペレーターが決定します。2
エージェントは進捗しているが、方向が間違っている。 作業は優秀だが、アラインメントがずれています。介入:停止し、ハンドオフドキュメントで仕様を明確化し、再起動します。同一セッション内の会話で軌道修正を試みてはなりません。エージェントはすでに誤った解釈に基づいてメンタルモデルを構築しており、同じコンテキストウィンドウ内での修正は一貫性のない出力を生みます。
介入しないパターン:エージェントが正しいゴールに向かってゆっくり進捗している場合です。走らせましょう。
4. リカバリー
リカバリーとは、障害発生後の対処を意味します。破損した状態、誤ったブランチ、壊れたビルド、データ損失への対応です。
エージェントの障害は痕跡を残します。クラッシュしたセッションは、不完全なファイルを書き込み、間違ったブランチにコミットし、作業ディレクトリに一時ファイルを残し、後続のセッションが引き継ぐ設定を変更している可能性があります。リカバリーでは、再起動前にこれらの痕跡を元に戻す必要があります。
私のリカバリープロトコルは次の通りです。被害を把握し(git status、git log、git diff)、セッションログを診断データとして保存し、最後に検証済みの正常なコミットに戻し、ハンドオフドキュメントに何が失敗しなぜ失敗したかを記載し、修正された制約で再起動します。失敗したセッションの部分的な作業を救おうとしてはなりません。その部分的な作業が明らかに正しく、分離可能な場合を除きます。ハンドオフは障害のコンテキストをセッション境界を越えて引き継ぎ、次のエージェントが同じ過ちを繰り返さないようにします。
最も危険なリカバリーシナリオは、成功に見える障害です。エージェントが完了を報告し、テストがパスし、ビルドがグリーンですが、実装が微妙に間違っています。コンフィデンスミラージュ(確信の蜃気楼)という障害モードが、まさにこの状況を生み出します。リカバリーには、完了レポートだけでなくコードを読むことが必要です。
5. ガバナンス
ガバナンスとは、すべてのエージェントセッションに適用されるポリシー、予算、権限、監査要件の設定を意味します。
ポリシーは、エージェントが何をしてよく、何をしてはならないかを定義します。私のガバナンスレイヤーには以下が含まれます。スポーン予算(夜間実行あたりの最大イテレーション数)、コスト上限(セッションあたりの最大API支出)、許可されたbashコマンドのホワイトリスト、禁止されたファイルパターンのブロックリスト、そして必須の完了基準のセットです。3 各ポリシーは特定の障害に由来しています。スポーン予算は、初期のセッションが収束せずに47イテレーション実行したことから生まれました。コスト上限は、デバッグセッションが見当違いの原因を追いかけてAPI呼び出しに200ドルを費やしたことから生まれました。各ポリシーは、高い代償を払って学んだ教訓の傷跡です。
権限は最小権限の原則に従います。ブログコンテンツを生成するエージェントは、コンテンツディレクトリ外へのファイルシステム書き込みアクセスを必要としません。テストを実行するエージェントは、ネットワークアクセスを必要としません。フックがこれらの境界をツール呼び出しレベルで強制し、セッションの権限スコープを超える操作をブロックします。2
監査要件がガバナンスレイヤーを完成させます。すべてのセッションが構造化されたログを生成します。実行されたコマンド、変更されたファイル、実行されたテスト、評価された完了基準です。7つの障害モードの分類体系は、6か月分のこれらのログをレビューし、人間の介入を必要としたすべての障害をカテゴリ分けすることで生まれました。
監督スタック
5つのインフラコンポーネントが5つの責務を実装します。
フックが自動化された監督を実装します。 Claude Codeのライフサイクルイベント(PreToolUse、PostToolUse、Notification)がシェルスクリプトをトリガーし、ポリシーをリアルタイムで強制します。2 rm -rfをブロックするフックは、PreToolUseチェックとしてエンコードされたガバナンスポリシーです。完了前にテスト実行を要求するフックは、PostToolUseチェックとしてエンコードされた委任制約です。私のシステムにある95のフックは、エージェントが何をしてよく何をしてはならないかについての95の判断をエンコードしており、それぞれが特定の障害に由来し、そのフックが今後の再発を防止しています。
エビデンスゲートが構造化された検証を実装します。 6つの基準(パターンに従っているか、最もシンプルな解決策か、エッジケースは処理されているか、テストはパスするか、リグレッションはないか、問題を解決しているか)が、エージェントが作業完了をマークする前に特定の成果物を生成しなければなりません。4 ゲートは監督を「エージェントはいい仕事をしたか?」(主観的、検証不能)から「エージェントは6つの基準すべてについてエビデンスを生成したか?」(客観的、監査可能)に変換します。完了レポート内のあらゆる曖昧な表現が再検証をトリガーします。
品質ループが反復的な改善を実装します。 7つのステップ(実装、レビュー、評価、改善、俯瞰、反復、報告)が、エージェントに自身の作業を複数回見直すことを強制します。5 このループは、シングルパス生成の構造的な限界を補います。モデルは、再読時にのみ見えるエラーを含む、もっともらしい最初のドラフトを生成するものです。品質ループがその再読を義務化します。
セッションログが事後監査を実装します。 システムはすべてのツール呼び出し、ファイル変更、完了レポートを構造化された形で記録します。6か月分のセッションログが障害分類体系を生み出しました。ログがなければ、各障害は孤立したエピソードのままだったでしょう。
コストゲートが予算強制を実装します。 スポーン予算がイテレーション数を制限し、APIコスト上限がトークン支出を制限します。スポーン予算内で収束しなかったエージェントは、おそらく行き詰まっており、さらなるイテレーションは助けになりません。予算は、次のイテレーションで問題が解決することを期待するのではなく、オペレーターに診断と介入を強制します。
介入すべきとき vs. 走らせるべきとき
介入の判断は、オペレーターにとって最も重大な判断です。早すぎる介入はエージェントの作業を無駄にし、遅すぎる介入はドリフトの蓄積を許します。フレームワークが助けになります。
| シグナル | アクション | 理由 |
|---|---|---|
| 3回以上のイテレーションで同じエラー | 介入 | エラーを解決するための情報がエージェントにありません。イテレーションを重ねても解決しません。 |
| 正しいゴールに向かってゆっくりだが着実な進捗 | 走らせる | スピードは変数ではありません。正しさこそが変数です。 |
| テストはパスするが仕様の意図と一致しない出力 | 介入 | 最も難しいケースです。正しい振る舞いを捕捉するテストを書き、再起動してください。 |
| エージェントが外部APIの呼び出しや本番環境の変更をしようとしている | ゲート | 不可逆な操作は、確信度に関係なく明示的な承認が必要です。 |
| エージェントが不要なはずの権限を要求している | 介入 | 予期されるスコープ外の権限要求は、エージェントがタスクからドリフトしていることを示しています。 |
| 完了レポートに曖昧な表現がある | 再検証 | 「動くはずです」「〜と考えます」はエビデンスではありません。成果物を求めてください。 |
| エージェントが仕様にないインフラを構築している | 評価 | 必要な準備の場合もありますが、多くの場合トンネルビジョンです。そのインフラがゴールに貢献するのか、遅延させるのかを確認してください。 |
メタ原則:スピードではなく、情報の非対称性に基づいて介入してください。あなたがエージェントの知らない何かを知っているとき(正しいコードパス、真の要件、前回セッションの障害モード)、介入はその知識を伝達します。エージェントがあなたの知っていることをすべて知っていて、単に問題を処理しているだけなら、作業を続けさせましょう。
オペレーターのチェックリスト
開始前
- [ ] 仕様レビュー済み:受け入れ基準が具体的、観察可能、かつ完全であること
- [ ] フック有効:タスクタイプに対してポリシーフックが有効化・テスト済みであること
- [ ] 予算設定済み:スポーン上限とコスト上限が設定されていること
- [ ] サンドボックス確認済み:エージェントが本番環境に到達できず、外部リクエストを送信できず、スコープ外のファイルを変更できないこと
- [ ] ハンドオフ最新:前回の作業を継続する場合、ハンドオフドキュメントに最新の修正が反映されていること
- [ ] ブランチクリーン:作業ディレクトリが正しいブランチにあり、未コミットの変更がないこと
実行中
- [ ] 定義された間隔でログを確認する(夜間実行では2〜3イテレーションごと)
- [ ] 軌道が仕様の文言だけでなく意図と合致しているか検証する
- [ ] リソース使用量を監視する:トークン支出、イテレーション数、ファイルシステムの変更
- [ ] 権限エスカレーションに注意する:タスクが必要としないはずのアクセス要求
- [ ] セッション後のレビューのためにソフトドリフトを記録する
完了後
- [ ] 完了レポートだけでなく、すべてのファイル変更をレビューする
- [ ] フルテストスイートを独立して実行する(エージェントが報告したテスト結果を信用しない)
- [ ] エージェントが明示的に変更していない隣接コードのリグレッションを確認する
- [ ] エビデンスゲートを検証する:すべての基準に一般的な保証ではなく具体的な成果物があること
- [ ] セッションの結果と修正をハンドオフドキュメントに更新する
- [ ] セッションをログに記録する:遭遇した障害モード、発火したフック、介入の判断
- [ ] ガバナンスを更新する:新しい障害パターンが出現した場合、再発防止のためのフックまたはポリシーを作成する
職人としてのオペレーター
エージェントオペレーターの役割は、エンジニアリングスキルとプロダクト判断力の交差点に存在します。フックの作成にはシステムの知識が必要です。仕様の作成にはプロダクトの理解が必要です。エージェントの出力のレビューには両方が必要です。コードが正しいかを評価する能力と、正しいコードが正しい問題を解決しているかを評価する能力の両方です。
チャットは間違ったインターフェースであると、この役割の運用面について述べました。会話のトランスクリプトをスクロールして自律的な作業を監督する方法は、単一のエージェントが単一のセッションを実行する以上にはスケールしません。上述の監督スタック(フック、エビデンスゲート、品質ループ、セッションログ、コストゲート)が、監督をインフラにエンコードすることでインターフェースのギャップを補います。インフラはオペレーターを置き換えるものではありません。インフラはオペレーターのリーチを増幅するものです。
テイストは技術的なシステムでは、判断力の側面を述べています。何を委任し、何を検証し、何をリジェクトするかを知るには、経験から構築されたパターン認識が必要です。各セッションがエージェントの振る舞いについてオペレーターに何かを教えます。オペレーターのスキルは、意図的な実践、振り返り、そして教訓を永続的にエンコードするインフラを通じて複利的に成長します。
ダークファクトリーは理論上の到達点、レベル5を示しています。人間がコードを読まない段階です。現在のプラクティスは、ほとんどのチームでレベル3または4に位置しています。エージェントが作業を行い、オペレーターが監督し介入します。レベル4とレベル5のギャップは検証レイヤーです。レベル2とレベル4のギャップがオペレーターです。
自律型エージェントを運用するすべてのチームがオペレーターを育成するでしょう。問題は、その役割を意図的に(定義された責務、インフラのサポート、明確なトレーニングを持って)育成するか、偶発的に(夜間セッションが失敗したときにたまたま起きていた人に仕事を割り当てることで)育成するかです。そこから技術が発展していきます。
-
Anthropic, “Claude Code Configuration,” published February 2026. https://docs.anthropic.com/en/docs/claude-code/settings ↩
-
Anthropic, “Claude Code Hooks,” published February 2026. https://docs.anthropic.com/en/docs/claude-code/hooks ↩↩↩
-
Blake Crosley, “The Ralph Loop: How I Run Autonomous AI Agents Overnight,” published February 2026. https://blakecrosley.com/blog/ralph-agent-architecture ↩
-
Blake Crosley, “The Evidence Gate: Proof Over Plausibility in AI Output,” published March 2026. https://blakecrosley.com/blog/the-evidence-gate ↩
-
Blake Crosley, “What Actually Breaks When You Run AI Agents Unsupervised,” published February 2026. https://blakecrosley.com/blog/what-actually-breaks-unsupervised ↩