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 展示

子代理在 Claw 对话窗口中有特殊标记展示:

子代理工具调用展示-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时代协作反而是降低效率和质量的。在并行任务执行以节省时间,提交效率的场景更加适合。

相关文档