サブエージェントシステム
概要
サブエージェント(Subagent)は、ワークスペースにおけるタスク分解と委譲のメカニズムです。メイン Agent は、複雑な並列タスクをサブタスクに分割し、専用のサブエージェントを作成して独立して実行させることができます。サブエージェントが完了すると、その結果をメイン Agent に返し、処理を続行します。
システムは 3 種類のサブエージェントタイプに対応しており、最大ネスト深度は 3 段 です。
3 種類のサブエージェントタイプ
| タイプ | ツール名 | 作成方法 | 適用シーン | 実行場所 |
|---|---|---|---|---|
| 自動生成 | create_local_sub_agent |
Agent が推論時に自律的に作成 | 一時的なサブタスク分解 | ローカルノード |
| 事前登録ディスパッチ | dispatch_sub_agent |
ユーザーが事前に設定 | 固定的な専門ロールを繰り返し使用 | ローカルノード |
| ノード間ディスパッチ | dispatch_multi_node_agent |
Agent がリモートノードを選択 | リモートのリソースや能力が必要な場合 | リモートノード |
自動生成サブエージェント(create_local_sub_agent)
Agent は推論の過程で、現在のタスクに分解が必要だと判断した場合、create_local_sub_agent ツールを 自律的に呼び出して 一時的なサブエージェントを作成します。ユーザーも対話のプロンプトを通じて、Agent にサブエージェントの作成を指示できます。例えば次のようにです:
「関連資料を検索するサブエージェントを 1 つ作成し、さらにドキュメントを作成する別のサブエージェントを作成してください」
作成パラメータ:
| パラメータ | 説明 | 必須 |
|---|---|---|
task |
サブエージェントのタスク記述 | はい |
systemPrompt |
サブエージェントのアイデンティティ/ロール定義 | はい |
cwd |
作業ディレクトリ(デフォルトでは親から継承) | いいえ |
maxSpawnDepth |
ネスト深度(1〜3)、デフォルトは 1 | いいえ |
実行フロー:
- メイン Agent がサブエージェントの作成を決定し、タスクを指定する
- システムが独立した Agent Loop を起動する(デフォルトは最大 50 ラウンド)
- サブエージェントは独立したツールループを持ち、実行過程は親の対話ウィンドウで確認できる
- サブエージェントが完了すると、最終結果をメイン Agent に返す
- メイン Agent が結果に基づいて後続の作業を続行する
事前登録ディスパッチサブエージェント(dispatch_sub_agent)
ユーザーは APP 設定で、特定の構成を持つサブエージェントを 事前に登録 できます。Agent は必要に応じて dispatch_sub_agent ツールを通じて呼び出します。
事前登録されたサブエージェントの記述は、メイン Agent のシステムプロンプトに 自動的に注入 されます。LLM は一致するタスクを認識すると、適切なサブエージェントを自動的に選択します。
設定項目:
| 設定 | 説明 |
|---|---|
name |
サブエージェント名 |
description |
能力の記述(親 Agent のシステムプロンプトに注入される) |
systemPrompt |
アイデンティティ/ロール定義 |
tools |
ツールのホワイトリスト(省略した場合はすべてを継承) |
disallowedTools |
ツールのブラックリスト |
skills |
使用可能なスキル ID のリスト |
mcpServers |
使用可能な MCP サーバー名のリスト |
model |
親のモデルを上書き |
maxTurns |
デフォルトの最大ラウンド数を上書き |
canSpawn |
下位のサブエージェントを作成できるかどうか |
maxSpawnDepth |
最大ネスト深度 |
管理画面の詳細は サブエージェントの登録と管理 を参照してください。
ノード間ディスパッチ(dispatch_multi_node_agent)
タスクにリモートデバイスのリソースや能力が必要な場合、Agent は dispatch_multi_node_agent ツールを通じて、タスクを 他のノードにディスパッチ して実行させることができます。
ワークフロー:
- メイン Agent がオンラインノードのリストを確認する(システムプロンプトに注入される)
- ノードの能力宣言に基づいてターゲットノードを選択する
- Gateway WebSocket を通じて
node.invoke.requestを送信する - リモートノードが独立した Agent Loop を起動してタスクを実行する
- 完了後、
node.invoke.resultを通じて結果を返す
シーン例:
- A のパソコン上の Web 側で対話を開始する
- タスクには B のパソコン上のローカルファイルへのアクセスが必要
- Agent が Gateway を通じてファイル操作のサブタスクを B のパソコンの APP ノードにディスパッチする
- B ノードが実行後に結果を返し、A のパソコン上で対話の表示を続行する
ネスト深度の制御
サブエージェントはネストして作成でき、最大深度は 3 段 です:
深度 0: メイン Agent(ユーザーとの対話)
└── 深度 1: サブエージェント A
└── 深度 2: サブサブエージェント A-1
└── 深度 3: 最深層エージェント(これ以上委譲不可)
| パラメータ | 値 | 説明 |
|---|---|---|
DEFAULT_MAX_SPAWN_DEPTH |
1 | デフォルト:サブエージェントは下位を作成できない |
MAX_ALLOWED_SPAWN_DEPTH |
3 | ハード上限 |
SUBAGENT_DEFAULT_MAX_TURNS |
50 | サブエージェントのデフォルト最大ラウンド数(メイン Agent の 25 より高い) |
深度が高いほど自律性は強まりますが、それに応じて Token の消費と実行時間も増加します。
ツール継承のメカニズム
| モード | 説明 |
|---|---|
| デフォルト継承 | サブエージェントは親 Agent の使用可能なすべてのツールを継承する |
| ホワイトリスト | tools パラメータで使用を許可するツールのリストを指定する |
| ブラックリスト | disallowedTools パラメータで特定のツールを除外する |
| スキル継承 | 親のスキルや MCP サーバーを継承または上書きできる |
| モデル上書き | サブエージェントは親とは異なる LLM モデルを使用できる |
UI 表示
サブエージェントは Work 対話ウィンドウ内で 特別なマーク とともに表示されます:

| 表示要素 | 説明 |
|---|---|
| SubagentToolRow | サブエージェント専用のツール呼び出し行。特別な配色で識別される(エメラルド色 emerald) |
| アクティビティのパススルー | サブエージェントのツール呼び出し過程が親の対話ウィンドウにリアルタイムで表示される |
| 結果表示 | サブエージェントが完了すると、最終結果がツール出力として表示される |
ユーザーは、どの操作がメイン Agent によって実行され、どの操作がサブエージェントによって実行されたかを明確に確認できます。
対話でサブエージェントを作成する方法
対話の中で自然言語を使って、Agent にサブエージェントの作成を指示できます。以下はいくつかのプロンプト例です:
| プロンプト | 効果 |
|---|---|
| 「関連資料を検索・整理するサブエージェントを作成して」 | Agent が検索に特化したサブエージェントを作成する |
| 「このタスクを 2 つのサブエージェントに分けて:1 つはコード担当、もう 1 つはドキュメント担当」 | Agent がそれぞれ専門を持つ 2 つのサブエージェントを作成する |
| 「この複雑なタスクを処理するために深度 2 のサブエージェントを作成して」 | Agent がさらに委譲可能なサブエージェントを作成する |
| 「リモートノードを使ってこのファイル処理タスクを実行して」 | Agent が dispatch_multi_node_agent を使用する |
サブエージェント実行中の画面の読み取り方

| UI 要素 | 意味 |
|---|---|
| エメラルド色でマークされたツール行 | これはサブエージェントが実行中のツール呼び出しです |
| 「create_local_sub_agent」ツール呼び出し | メイン Agent がサブエージェントを作成中です |
| サブエージェント内のツール呼び出し | サブエージェントが自律的に判断して呼び出したツールがリアルタイムで表示されます |
| 最終結果 | サブエージェント完了後のまとめ出力です |
費用への影響
サブエージェントの token 消費は 独立して計算 されます:
| シーン | 推定 token 消費 |
|---|---|
| メイン Agent のみ(サブエージェントなし) | 1x |
| メイン Agent + サブエージェント 1 個 | 1.5x 〜 2.5x |
| メイン Agent + サブエージェント 2 個 | 2x 〜 4x |
| 3 段ネスト(メイン + 子 + 孫 + 曾孫) | 3x 〜 6x |
推奨:サブエージェントは、本当に分解が必要な複雑なタスクに適しています。単純なタスクはメイン Agent に直接処理させればよく、サブエージェントを作成する必要はありません。
サブエージェントを使うべき場合/使わないべき場合
| サブエージェントに適している | サブエージェント不要 |
|---|---|
| タスクが自然に独立した部分に分かれる(例:資料検索 + ドキュメント作成) | 単一の線形タスク(例:1 つのファイルを読んで要約する) |
| 異なる専門的視点が必要(例:コードレビュー + セキュリティ監査) | 単純な質疑応答 |
| リモートノードのリソースが必要(例:リモートサーバー上のファイル) | ローカルファイル操作 |
| タスク量が大きく、並列で高速化できる | タスクが単純で速い |
SubAgent は、異なるロールを与えて分業・協働させることは推奨しません。AI の時代においては、協働はむしろ効率と品質を低下させます。時間を節約し提出効率を高めるための並列タスク実行のシーンにより適しています。
関連ドキュメント
- サブエージェントの登録と管理 — 事前登録サブエージェントの設定
- マルチノードアーキテクチャ — ノード間ディスパッチの基盤メカニズム
- Agent ループエンジン — サブエージェントが使用する Agent Loop
