Skip to main content
Agent にタスクを委任する

Multiagent オーケストレーション

Coordinator が専門 Agent に作業を委譲し、Session Thread を通じて連携を観測できるようにします。

Multiagent オーケストレーションでは、1 つの Agent が Coordinator として他の Agent に作業を委譲します。各 Child Agent は独立した Session Thread で実行され、Coordinator が結果をまとめて最終応答を生成します。 責任ごとに分割できる複雑なタスク、並列実行できる作業、段階的に進める作業に適しています。1 ステップで終わる作業や、複数の担当が同じファイルを頻繁に編集する作業では、単一 Agent のほうが簡潔です。

仕組み

Multiagent オーケストレーションは Session Thread モデル上に構築されています。Session 作成時に選択した Agent が Coordinator となり、システムプロンプトに従って multiagent.agents の Agent に作業を委譲します。
概念説明
CoordinatorCoordinator スレッド。各 Session につき 1 つだけ存在します。Session 作成時に指定された Agent を使用し、オーケストレーションとタスク委譲を担います
Child threadmultiagent.agents ロスターの Agent にバインドされる子スレッド。独立してタスクを実行し、Coordinator に結果を報告します
Session Threadスレッドエンティティ。ID プレフィックスは sthr_role(coordinator または child)、独立した Agent スナップショット、ステータスを含みます
同じ Session の Thread は Environment、Sandbox、ファイルシステム、Session にバインドされた Vault を共有します。一方、対話履歴と Agent 設定スナップショットは Thread ごとに分離されます。
並列の Child Agent は同じファイルシステムを共有します。複数の Agent が同じファイルを同時に編集しないよう、Coordinator のシステムプロンプトで担当範囲を明確にしてください。

委譲に適した作業

  • 独立した調査、モジュール実装、データ収集を別々の Agent に割り当てて並列実行します。
  • 実装、テスト、レビューを責任ごとに分けます。
  • 実装後にレビューするなど、依存関係がある作業を段階的に実行します。
Coordinator のシステムプロンプトには、委譲条件、各 Agent の出力形式、Coordinator 自身が処理する作業を明記します。

Coordinator を設定する

コンソールでは連携する Agent を先に作成し、Coordinator の Multiagent セクションで委譲先を選択します。API では Agent 設定の multiagent フィールドを設定します。
curl -X POST "https://api.qoder.com/api/v1/cloud/agents" \
  -H "Authorization: Bearer $QODER_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "task-coordinator",
    "model": "ultimate",
    "system": "You are a task coordinator responsible for delegating tasks to sub-agents.",
    "tools": [
      {
        "type": "agent_toolset_20260401",
        "enabled_tools": ["Bash", "Read", "Write"]
      }
    ],
    "multiagent": {
      "type": "coordinator",
      "agents": [
        {"type": "agent", "id": "agent_00nc01ht8gcn4w8sb7zv", "version": 3},
        {"type": "agent", "id": "agent_00nc01ht8gcn4w8sb7zw"},
        {"type": "self"}
      ]
    }
  }'

multiagent フィールドリファレンス

フィールド必須説明
typestringはい"coordinator" 固定
agentsarrayはい委譲可能な 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"} と等価
multiagent を設定する場合、tools には agent_toolset_20260401 エントリを含める必要があります。
Agent の 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.interruptsession_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 アイドル条件すべてのスレッドが実行を停止している必要がある

次のステップ