Coordinator が専門 Agent に作業を委譲し、Session Thread を通じて連携を観測できるようにします。
Multiagent オーケストレーションでは、1 つの Agent が Coordinator として他の Agent に作業を委譲します。各 Child Agent は独立した Session Thread で実行され、Coordinator が結果をまとめて最終応答を生成します。
責任ごとに分割できる複雑なタスク、並列実行できる作業、段階的に進める作業に適しています。1 ステップで終わる作業や、複数の担当が同じファイルを頻繁に編集する作業では、単一 Agent のほうが簡潔です。
Multiagent オーケストレーションは Session Thread モデル上に構築されています。Session 作成時に選択した Agent が Coordinator となり、システムプロンプトに従って
同じ Session の Thread は Environment、Sandbox、ファイルシステム、Session にバインドされた Vault を共有します。一方、対話履歴と Agent 設定スナップショットは Thread ごとに分離されます。
コンソールでは連携する Agent を先に作成し、Coordinator の Multiagent セクションで委譲先を選択します。API では Agent 設定の
Agent の
Multiagent オーケストレーションでは、イベントストリームに以下の新しいイベントタイプが現れます:
すべてのイベントには所属スレッドを識別する
仕組み
Multiagent オーケストレーションは Session Thread モデル上に構築されています。Session 作成時に選択した Agent が Coordinator となり、システムプロンプトに従って multiagent.agents の Agent に作業を委譲します。
| 概念 | 説明 |
|---|---|
| Coordinator | Coordinator スレッド。各 Session につき 1 つだけ存在します。Session 作成時に指定された Agent を使用し、オーケストレーションとタスク委譲を担います |
| Child thread | multiagent.agents ロスターの Agent にバインドされる子スレッド。独立してタスクを実行し、Coordinator に結果を報告します |
| Session Thread | スレッドエンティティ。ID プレフィックスは sthr_。role(coordinator または child)、独立した Agent スナップショット、ステータスを含みます |
委譲に適した作業
- 独立した調査、モジュール実装、データ収集を別々の Agent に割り当てて並列実行します。
- 実装、テスト、レビューを責任ごとに分けます。
- 実装後にレビューするなど、依存関係がある作業を段階的に実行します。
Coordinator を設定する
コンソールでは連携する Agent を先に作成し、Coordinator の Multiagent セクションで委譲先を選択します。API では Agent 設定の multiagent フィールドを設定します。
multiagent フィールドリファレンス
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
type | string | はい | "coordinator" 固定 |
agents | array | はい | 委譲可能な Agent ロスター。1-20 個のユニークなエントリ |
agents 配列の要素は以下の 3 つの形式をサポートします:
| 形式 | 例 | 説明 |
|---|---|---|
オブジェクト type: "agent" | {"type": "agent", "id": "agent_xxx", "version": 2} | 他の Agent を参照。id は必須、version は任意 |
オブジェクト type: "self" | {"type": "self"} | Coordinator 自身を子 Agent として参照 |
| 文字列ショートハンド | "agent_xxx" | {"type": "agent", "id": "agent_xxx"} と等価 |
version を省略すると、Coordinator の作成または更新時に最新の Active バージョンが解決され、Coordinator のバージョンに保存されます。Session 作成後は Coordinator と Agent リストがスナップショットとして固定されます。
Session を作成して実行する
multiagent を設定した Coordinator で Session を作成し、通常どおりタスクメッセージを送信します。Agent リストを設定しても委譲は強制されず、Coordinator がシステムプロンプトに基づいて判断します。
MCP サーバー、ツール、Skill は Agent 単位で設定されます。Vault は Session 作成時にバインドされ、各 Agent は自身のツール設定と権限ポリシーに従います。
スレッドイベント
Multiagent オーケストレーションでは、イベントストリームに以下の新しいイベントタイプが現れます:
| イベントタイプ | 説明 |
|---|---|
session.thread_created | 新しい子スレッドが作成された |
session.thread_status_running | スレッドが実行を開始した |
session.thread_status_rescheduled | スレッドのタスクが再試行され、再スケジュールされた |
session.thread_status_idle | スレッドが完了または一時停止した |
session.thread_status_terminated | スレッドがアーカイブ/終了された |
agent.thread_message_sent | スレッド間メッセージが送信された(coordinator → child または後続メッセージ) |
agent.thread_message_received | スレッド間メッセージが受信された(child → coordinator) |
session_thread_id フィールドが含まれます。スレッドイベント一覧とスレッドイベントストリームエンドポイントを使用して、スレッド単位でイベントをフィルタリングできます。
単一 Thread の中断とツール操作
user.interrupt に session_thread_id を指定すると対象 Thread だけを中断できます。省略すると Session 全体の現在の作業を中断します。中断しても Thread はアーカイブされません。
確認が必要な agent.tool_use には user.tool_confirmation、Custom Tool の agent.custom_tool_use には user.custom_tool_result で応答します。ID によって元の Thread へルーティングされるため、応答に session_thread_id を含めないでください。
制限
| 項目 | 制限 |
|---|---|
| Agent 設定あたりの最大子 Agent 数 | 20 個のユニークなエントリ |
| Session あたりの最大同時スレッド数 | 25 個(Coordinator を含む) |
| 委譲階層 | Child Agent はさらに子 Thread を作成できません |
| Session アイドル条件 | すべてのスレッドが実行を停止している必要がある |