首页
学习
活动
专区
圈层
工具
发布

详细讲讲Subagent

在 OpenClaw 的多智能体协同体系中,Subagent(子智能体)绝对是提升效率、控制成本的核心角色——它就像主Agent的“后台分身”,能独立并行干活,不耽误主会话,还能精准拆分复杂任务。

今天就从定义、特性、架构、用法到最佳实践,一次性把 Subagent 讲透,新手也能快速上手~

一、先搞懂:什么是 Subagent?

一句话总结:Subagent 是主Agent派生的独立后台工作单元,在完全隔离的会话中执行任务,完成后自动把结果回传给主会话,不用主Agent一直等待。

核心定位很明确:解决“主Agent忙不过来、任务阻塞、成本过高”的问题,主打一个「并行干活、分工明确」。

补充一个小细节:Subagent 有专属的会话标识(格式:agent:<agentId>:subagent:<uuid>),和主会话完全隔离,不会互相干扰。

二、必记核心特性(7个关键点)

Subagent 的优势的都藏在这些特性里,记牢就能灵活用对:

非阻塞:主Agent调用后立即返回 runId,不用等待子代理完成,主会话可以继续响应用户。

会话隔离:有自己的独立上下文、独立工具权限、独立对话历史,互不干扰更安全。

上下文精简:只加载 AGENTS.md + TOOLS.md 两个核心文件,大大节省 Token 成本。

禁止嵌套扇出:默认嵌套深度(depth)=1,子代理不能再创建自己的子代理,避免资源浪费。

工具权限收紧:默认不继承主会话的工具,需要手动配置,安全可控。

自动通知:任务完成后,会通过 announce 功能自动把结果回传到主会话频道,不用手动查询。

成本优化:主Agent用贵模型(比如 Opus)做规划,子代理用便宜模型(比如 Haiku)执行,能省60%+成本。

三、核心架构:Subagent 的三层深度体系

OpenClaw 对 Subagent 的层级有明确限制,避免无限嵌套导致资源爆炸,三层体系如下:

Depth 0(主Agent):顶层“大脑”,负责任务编排和决策,始终可以创建子代理(spawn)。

Depth 1(子代理):中层“执行者/协调者”,可以做具体任务,也可以协调其他子代理;只有当配置 maxSpawnDepth≥2 时,才能再创建子代理。

Depth 2(孙代理):底层“纯执行者”,只能做具体任务,永远不能再创建子代理。

结果回传逻辑也很清晰:孙代理 子代理 主Agent 用户,形成链式通告,确保结果不丢失。

四、完整生命周期:4步走完一个Subagent任务

从创建到完成,Subagent 的生命周期只有4步,流程简单且可控:

1. Spawn(创建)

主Agent调用 sessions_spawn 工具(或输入 /subagents spawn 命令),网关会生成一个专属会话ID,把任务加入 Subagent 专用队列,同时立即返回 runId,主会话继续正常响应。

2. Queue(排队)

任务会在专用队列中排队,并发数量受 maxConcurrent 控制(默认8个),不会影响主会话的调度速度。

3. Execute(执行)

Subagent 在独立会话中运行,加载精简版系统提示和必要文件,超时、重试、崩溃恢复等操作都独立管理,不影响主Agent。

4. Announce(通告)

任务完成后,自动把结果发回主会话频道;如果不需要回传,可以设置返回 ANNOUNCE_SKIP 跳过通告,结果默认保留60分钟后归档。

五、常用配置:一键复制就能用

Subagent 的配置主要在 agents.defaults.subagents 中,以下是最常用的配置模板,根据需求微调即可:

agents:defaults:   subagents:     enabled: true               # 启用子代理(必开)     model: claude-haiku-4       # 子代理默认模型(选便宜的更省成本)     maxConcurrent: 8            # 最大并发数(默认8,可按机器资源调整)     runTimeoutMinutes: 30        # 单任务超时时间(30分钟足够大多数任务)     archiveAfterMinutes: 60      # 结果保留时长(默认60分钟)     maxSpawnDepth: 1             # 嵌套深度(默认1,禁止子代理再 spawn)     tools: []                    # 子代理可用工具(默认空,按需添加)

六、两种使用方式:小白也能上手

Subagent 有两种常用使用场景,分别对应“用户直接操作”和“Agent内部调用”,按需选择即可。

1. 命令行方式(用户直接用)

适合手动触发子代理任务,复制命令修改参数即可:

# 后台创建子代理,执行数据分析任务/subagents spawn \ --name data_analyst \          # 子代理名称(自定义) --model claude-3-sonnet \      # 子代理使用的模型 --tools read,write,web_search  # 子代理可用工具 --task "分析 sales.csv 并生成报告"  # 具体任务

2. 代码/工具调用(Agent内部用)

适合Agent自动拆分任务时调用,用 JSON 格式传入参数:

{"type": "tool_use","name": "sessions_spawn","input": {   "task": "把 Python 代码转成 TypeScript",  # 任务描述   "model": "claude-3-sonnet",              # 模型   "label": "refactor-job",                 # 任务标签(自定义)   "tools": ["exec", "read"]                # 可用工具 }}

七、主Agent vs Subagent:一张表分清差异

很多人会混淆主Agent和Subagent,用这张表对比,一眼看清区别:

八、最佳实践:避坑+提效,少走弯路

掌握这些技巧,能让 Subagent 发挥最大价值,还能避免踩坑:

模型分层使用:主Agent用贵模型(Opus)做规划、综合决策,子代理用便宜模型(Haiku/Sonnet)做具体执行,能省60%+成本。

合理拆分任务:长任务、慢工具调用、可并行的任务,全部交给 Subagent,主会话只负责交互和任务编排。

权限最小化:子代理只给完成任务必需的工具,不继承主会话的敏感工具,降低安全风险。

控制嵌套深度:默认设置 maxSpawnDepth=1,避免无限嵌套导致资源爆炸,除非有特殊需求,否则不建议调高。

合理设置超时和并发:根据任务复杂度调整 runTimeout,maxConcurrent 匹配机器资源,避免队列拥堵。

及时保存重要结果:结果默认只保留60分钟,重要任务的结果要及时手动保存,避免丢失。

九、典型应用场景

Subagent 适合所有“不想阻塞主会话、需要并行执行”的场景,常见用法有:

并行数据爬取、数据分析

后台代码审查、代码重构

长文档摘要、批量翻译

批量文件处理(如格式转换)

慢 API/工具调用(不阻塞主聊天)

十、一句话总结

Subagent 是 OpenClaw 实现「多智能体并行、任务隔离、成本优化」的核心机制——主Agent做“大脑”负责规划,Subagent做“手脚”负责执行,各司其职,让多智能体协同更高效、更省钱。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OhEHfOvgHG0PdViK0OyWJEuA0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

领券