子代理系統
概述
子代理(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 | 否 |
執行流程:
- 主 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 建立一個專注搜尋的子代理 |
| 「把這個任務分成兩個子代理來做:一個負責程式碼,一個負責文件」 | Agent 建立兩個各有專長的子代理 |
| 「幫我建立一個深度為 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 處理即可,不必建立子代理。
什麼時候該用 / 不該用子代理
| 適合使用子代理 | 不需要子代理 |
|---|---|
| 任務自然分為獨立子部分(如:搜尋資料 + 撰寫文件) | 單一線性任務(如:讀一個檔案並總結) |
| 需要不同專業視角(如:程式碼審查 + 安全稽核) | 簡單問答 |
| 需要遠端節點的資源(如:遠端伺服器上的檔案) | 本地檔案操作 |
| 任務量大,可以並行加速 | 任務簡單快速 |
SubAgent 不建議賦予不同角色讓其分工協作,在 AI 時代協作反而是降低效率和品質的。在並行任務執行以節省時間、提升效率的場景更加適合。
相關文件
- 子代理註冊與管理 — 預先註冊子代理設定
- 多節點架構 — 跨節點派發的底層機制
- Agent 循環引擎 — 子代理使用的 Agent Loop
