メインコンテンツへスキップ
Managed Agents は、1 つの Agent を Coordinator として動作させ、他の Agent にタスクを管理・委譲することで、マルチ Agent 協調を実現する機能です。Coordinator Agent は子 Agent スレッドの作成、メッセージ送信、結果の待機が可能で、複雑なタスクを複数の独立したサブタスクに分解し、並列または直列で実行できます。

コアコンセプト

Managed Agents は Session Thread モデル上に構築されています。1 つの Session には複数のスレッドを同時に保持でき、各スレッドは独立した Agent スナップショットにバインドされ、独自の対話履歴と実行コンテキストを持ちます。
概念説明
CoordinatorCoordinator スレッド。各 Session につき 1 つだけ存在します。Session 作成時に指定された Agent を使用し、オーケストレーションとタスク委譲を担います
Child thread子スレッド。Coordinator がツール呼び出しを通じて作成します。multiagent.agents ロスターの Agent にバインドされ、独立してタスクを実行し、send_to_parent で結果を報告します
Session Threadスレッドエンティティ。ID プレフィックスは sthr_role(coordinator または child)、独立した Agent スナップショット、ステータスを含みます
Mailboxスレッド間のメッセージキュー。CAS が内部で管理します。メッセージはキューイングされ、ターゲットスレッドのステータスに応じてスケジューラが自動的に配信します

Managed Agents の設定

Managed Agents 機能を有効にするには、Agent 設定で multiagent フィールドを設定します:
curl -X POST "https://api.qoder.com/api/v1/cloud/agents" \
  -H "Authorization: Bearer $QODER_PAT" \
  -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_019f000000000000000000000000001a", "name": "Research Agent"},
        {"type": "agent", "id": "agent_019f000000000000000000000000002b"},
        {"type": "self"}
      ]
    }
  }'

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

フィールド必須説明
typestringはい"coordinator" 固定
agentsarrayはい委譲可能な Agent ロスター。1-20 個のユニークなエントリ
agents 配列の要素は以下の 3 つの形式をサポートします:
形式説明
オブジェクト type: "agent"{"type": "agent", "id": "agent_xxx", "version": 2, "name": "Reviewer"}他の Agent を参照。id は必須、versionname は任意
オブジェクト type: "self"{"type": "self"}Coordinator 自身を子 Agent として参照
文字列ショートハンド"agent_xxx"{"type": "agent", "id": "agent_xxx"} と等価
multiagent を設定する場合、tools には agent_toolset_20260401 エントリを含める必要があります。システムは実行時に create_agentsend_to_agentlist_agentsAgent 制御ツールを自動的に注入します。

Coordinator 制御ツール

Session の Agent が multiagent を設定しており、現在のスレッドロールが Coordinator の場合、以下のツールが自動的に注入されます:

create_agent

新しい子 Agent スレッドを作成し、初期タスクを送信します。子 Agent の完了を待たずに、スレッド ID を即座に返却します。
パラメータ必須説明
agent_idstringはいロスター内の Agent ID、または "self"。値は multiagent.agents で決定されます
agent_namestringいいえ子スレッドの表示名
taskstringはい子 Agent に送信する初期タスク記述
返却例: "Created agent thread: sthr_019f..."

Agent

子 Agent にフォーカスされたタスクを委譲し、同期的に結果を待ちます。これはブロッキング型ツールで、Coordinator のターンは子 Agent が完了する(send_to_parent を呼び出す)か中断されるまで一時停止します。
パラメータ必須説明
agent_idstringはいロスター内の Agent ID、または "self"
promptstringはい子 Agent に委譲するタスクプロンプト

send_to_agent

既存の子スレッドに後続メッセージを送信します。
パラメータ必須説明
thread_idstringはいターゲット子スレッド ID(sthr_ プレフィックス)
messagestringはい送信するメッセージ内容
返却例: "Message queued for agent thread: sthr_019f..."

list_agents

現在の Session 内のすべての子スレッドのステータス、保留中メッセージ数、および利用可能な Agent ロスターを一覧表示します。パラメータは不要です。

Child 制御ツール

スレッドロールが child の場合、システムは以下のツールを 1 つ自動的に注入します:

send_to_parent

結果、ステータス更新、または質問を Coordinator に送信します。この呼び出し後、子スレッドは idle ステータスに遷移します。
パラメータ必須説明
messagestringはいCoordinator に送信するメッセージ

Session Thread ライフサイクル

1

Session を作成

クライアントが multiagent 設定済みの Agent を参照する Session を作成します。
2

ターン開始

クライアントが user.message イベントを送信します。CAS は自動的に Coordinator スレッド(role: coordinator)を作成します。
3

Coordinator が委譲

モデルが create_agent または Agent ツールを呼び出します。CAS は子スレッドを作成し、タスクメッセージを mailbox にキューイングします。
4

Child が実行

CAS スケジューラが mailbox メッセージを子スレッドに配信します。CAW は子の Agent スナップショットをロードし、独立して実行します。
5

Child が結果を報告

Child が send_to_parent を呼び出します。メッセージは mailbox 経由で Coordinator にルーティングされ、子スレッドは idle に遷移します。
6

Coordinator が継続

Coordinator は child の報告を受け取り、結果を統合して処理を継続するか、新たな委譲を開始します。
7

Session アイドル

実行中のすべてのスレッドが停止すると、Session は idle ステータスに遷移します。

スレッドイベント

Managed Agents シナリオでは、イベントストリームに以下の新しいイベントタイプが現れます:
イベントタイプ説明
session.thread_created新しい子スレッドが作成された
session.thread_status_runningスレッドが実行を開始した
session.thread_status_idleスレッドが完了または一時停止した
session.thread_status_terminatedスレッドがアーカイブ/終了された
agent.thread_message_sentスレッド間メッセージが送信された(coordinator → child または後続メッセージ)
agent.thread_message_receivedスレッド間メッセージが受信された(child → coordinator)
すべてのイベントには所属スレッドを識別する session_thread_id フィールドが含まれます。スレッドイベント一覧スレッドイベントストリームエンドポイントを使用して、スレッド単位でイベントをフィルタリングできます。

制限

項目制限
Agent 設定あたりの最大子 Agent 数20 個のユニークなエントリ
Session あたりの最大同時スレッド数25 個(Coordinator を含む)
Session アイドル条件すべてのスレッドが実行を停止している必要がある

次のステップ

multiagent を設定

Agent 作成時に multiagent フィールドを設定します。

Agent スキーマ

multiagent と agent entry のフィールドリファレンス。

Session Threads 一覧

Session 内のすべてのスレッドを表示します。

Session Thread オブジェクト

Session Thread オブジェクトのフィールドとライフサイクル。