子代理系统
概述
子代理(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 展示
子代理在 Claw 对话窗口中有特殊标记展示:

| 展示元素 | 说明 |
|---|---|
| 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
