logo
開發者文件
搜尋
子代理系統

子代理系統

概述

子代理(Subagent)是工作空間的任務分解與委派機制。主 Agent 可以將複雜的並行任務拆分為子任務,建立專門的子代理來獨立執行,子代理完成後將結果回傳給主 Agent 繼續處理。

系統支援三種子代理類型,最大巢狀深度 3 級

三種子代理類型

類型 工具名 建立方式 適用場景 執行位置
自動建立 create_local_sub_agent Agent 推理時自主建立 臨時子任務分解 本地節點
預先註冊派發 dispatch_sub_agent 使用者預先設定 固定專業角色反覆使用 本地節點
跨節點派發 dispatch_multi_node_agent Agent 選擇遠端節點 需要遠端資源或能力 遠端節點

自動建立子代理(create_local_sub_agent)

Agent 在推理過程中判斷目前任務需要分解時,會自主呼叫 create_local_sub_agent 工具建立臨時子代理。使用者也可以透過對話提示詞要求 Agent 建立子代理,例如:

「請建立一個子代理來負責搜尋相關資料,再建立另一個子代理來撰寫文件」

建立參數

參數 說明 必填
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 建立一個專注搜尋的子代理
「把這個任務分成兩個子代理來做:一個負責程式碼,一個負責文件」 Agent 建立兩個各有專長的子代理
「幫我建立一個深度為 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 處理即可,不必建立子代理。

什麼時候該用 / 不該用子代理

適合使用子代理 不需要子代理
任務自然分為獨立子部分(如:搜尋資料 + 撰寫文件) 單一線性任務(如:讀一個檔案並總結)
需要不同專業視角(如:程式碼審查 + 安全稽核) 簡單問答
需要遠端節點的資源(如:遠端伺服器上的檔案) 本地檔案操作
任務量大,可以並行加速 任務簡單快速

SubAgent 不建議賦予不同角色讓其分工協作,在 AI 時代協作反而是降低效率和品質的。在並行任務執行以節省時間、提升效率的場景更加適合。

相關文件