logo
Development
検索
サブエージェントシステム

サブエージェントシステム

概要

サブエージェント(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 いいえ

実行フロー

  1. メイン Agent がサブエージェントの作成を決定し、タスクを指定する
  2. システムが独立した Agent Loop を起動する(デフォルトは最大 50 ラウンド)
  3. サブエージェントは独立したツールループを持ち、実行過程は親の対話ウィンドウで確認できる
  4. サブエージェントが完了すると、最終結果をメイン Agent に返す
  5. メイン 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 ツールを通じて、タスクを 他のノードにディスパッチ して実行させることができます。

ワークフロー

  1. メイン Agent がオンラインノードのリストを確認する(システムプロンプトに注入される)
  2. ノードの能力宣言に基づいてターゲットノードを選択する
  3. Gateway WebSocket を通じて node.invoke.request を送信する
  4. リモートノードが独立した Agent Loop を起動してタスクを実行する
  5. 完了後、node.invoke.result を通じて結果を返す

シーン例

  • A のパソコン上の Web 側で対話を開始する
  • タスクには B のパソコン上のローカルファイルへのアクセスが必要
  • Agent が Gateway を通じてファイル操作のサブタスクを B のパソコンの APP ノードにディスパッチする
  • B ノードが実行後に結果を返し、A のパソコン上で対話の表示を続行する

ネスト深度の制御

サブエージェントはネストして作成でき、最大深度は 3 段 です:

深度 0: メイン Agent(ユーザーとの対話) └── 深度 1: サブエージェント A └── 深度 2: サブサブエージェント A-1 └── 深度 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 対話ウィンドウ内で 特別なマーク とともに表示されます:

サブエージェントのツール呼び出し表示-CN

表示要素 説明
SubagentToolRow サブエージェント専用のツール呼び出し行。特別な配色で識別される(エメラルド色 emerald)
アクティビティのパススルー サブエージェントのツール呼び出し過程が親の対話ウィンドウにリアルタイムで表示される
結果表示 サブエージェントが完了すると、最終結果がツール出力として表示される

ユーザーは、どの操作がメイン Agent によって実行され、どの操作がサブエージェントによって実行されたかを明確に確認できます。



対話でサブエージェントを作成する方法

対話の中で自然言語を使って、Agent にサブエージェントの作成を指示できます。以下はいくつかのプロンプト例です:

プロンプト 効果
「関連資料を検索・整理するサブエージェントを作成して」 Agent が検索に特化したサブエージェントを作成する
「このタスクを 2 つのサブエージェントに分けて:1 つはコード担当、もう 1 つはドキュメント担当」 Agent がそれぞれ専門を持つ 2 つのサブエージェントを作成する
「この複雑なタスクを処理するために深度 2 のサブエージェントを作成して」 Agent がさらに委譲可能なサブエージェントを作成する
「リモートノードを使ってこのファイル処理タスクを実行して」 Agent が dispatch_multi_node_agent を使用する

サブエージェント実行中の画面の読み取り方

サブエージェントの実行過程-CN

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 の時代においては、協働はむしろ効率と品質を低下させます。時間を節約し提出効率を高めるための並列タスク実行のシーンにより適しています。

関連ドキュメント