エージェントHandoff
あるエージェントがタスクを完了または特定の条件を満たした際に、次のエージェントへ制御と文脈を渡すパターン。エージェントオーケストレーションの一形態。
動機
複雑なワークフローを一つのエージェントで処理しようとすると:
- コンテキストが肥大化し、品質が低下する
- 役割の専門化ができない
- ワークフローのステップが不明確になる
Handoffパターンは、各ステップを専門エージェントに委ねながら、全体の流れを制御する。
GitHub Copilotでの実装
Copilotではhandoffsフィールドで宣言的に定義する:
---
name: planner
description: 実装計画を立てる
handoffs:
- label: "実装を開始"
agent: implementer
prompt: "上記の計画に基づいて実装してください"
send: false
---
ユーザーは「実装を開始」というラベルのボタンを押すことで、次のエージェントへ制御が移る。
Handoffの方向性
線形チェーン
Planner → Implementer → Reviewer
各エージェントが前のエージェントの成果物を受け取り、次のステップを実行する。
条件分岐
Analyzer ─→ 問題なし → Deployer
└→ 問題あり → Fixer → Reviewer
分析結果に応じて異なるエージェントへHandoffする。
Claude Codeとの対比
Claude Codeでは明示的なHandoff機能はなく、代わりに:
- Hooksでチェーン化(前後処理の自動実行)
- Taskツールでサブエージェントを起動し、結果を受け取る
Copilotのhandoffsが宣言的であるのに対し、Claude CodeはHooksやプロンプトで命令的に制御する。
ユーザー関与の選択
Handoffには以下の選択肢がある:
- 自動Handoff: 条件を満たすと即座に次のエージェントへ
- 承認型Handoff: ユーザーの承認(ボタン押下など)が必要
- 確認型Handoff: 次のステップの内容を表示し、変更を促す
承認型を選ぶことで、プランニングフェーズと実行フェーズの間にヒューマンインザループを確保できる。