1903 字
10 分钟
OpenClaw 子 Agent 协作机制:让 AI 分工合作

为什么需要子 Agent?#

有时候任务太复杂,单个 AI 会话难以胜任:

  • 长时间运行的任务:批量处理文件、爬取大量数据
  • 隔离性要求:不想污染主会话的历史记录
  • 并发处理:同时处理多个独立任务
  • 不同模型配置:某些任务需要更强的模型或更长的思考时间
  • 自动化流程:定时任务、后台监控等

OpenClaw 通过 sessions_spawn 实现了子 Agent 协作机制。

Sessions 机制#

OpenClaw 支持三种会话类型:

1. Main Session(主会话)#

  • 与用户直接对话的会话
  • 拥有完整权限,可以访问 MEMORY.md 等敏感信息
  • 通常由用户主动触发

2. Isolated Session(独立会话)#

  • 通过 sessions_spawn 创建的子会话
  • 不继承主会话历史记录
  • 独立的记忆空间和权限
  • 完成任务后可以通知主会话

3. Cron Jobs(定时任务)#

  • 由 cron 触发的独立会话
  • 可以使用不同模型配置
  • 适合周期性自动化任务

基本用法#

创建子 Agent#

Terminal window
sessions_spawn \
--task "分析 /root/workspace 目录下的所有 Python 文件,生成代码质量报告" \
--label "代码分析任务" \
--timeoutSeconds 300 \
--cleanup delete

关键参数:

  • --task: 子 Agent 的任务描述
  • --label: 任务标签,便于识别
  • --timeoutSeconds: 超时时间
  • --cleanup: 任务完成后会话处理方式(deletekeep

子 Agent 的特性#

创建后,子 Agent 会:

  1. 在独立会话中运行
  2. 拥有自己的记忆空间
  3. 不共享主会话的历史
  4. 完成任务后自动通知主会话
  5. 根据 --cleanup 参数决定是否保留会话

参数详解#

task(必填)#

子 Agent 的任务描述。这是发给子 Agent 的第一条消息,应该清晰说明要做什么:

Terminal window
--task "请分析以下 JSON 数据,提取所有 email 地址,并按域名分组统计:\n{\"users\": [{\"email\": \"a@test.com\"}, ...]}"

label(可选)#

给任务设置一个友好的标签,方便在列表中识别:

Terminal window
--label "邮件数据清洗"

agentId(可选)#

指定使用哪个 Agent ID。默认使用当前 Agent:

Terminal window
--agentId "code-analyzer"

model(可选)#

指定子 Agent 使用的模型:

Terminal window
--model "zhipu/glm-4.7"

thinking(可选)#

设置子 Agent 的思考模式(onoffstream):

Terminal window
--thinking on

timeoutSeconds(可选)#

设置子 Agent 的最大运行时间,超时后自动终止:

Terminal window
--timeoutSeconds 600 # 10 分钟

runTimeoutSeconds(可选)#

子 Agent 单次推理的超时时间:

Terminal window
--runTimeoutSeconds 120 # 2 分钟

cleanup(可选)#

任务完成后如何处理会话:

  • delete: 自动删除会话(默认)
  • keep: 保留会话,可以继续查看或交互
Terminal window
--cleanup keep

管理子 Agent 会话#

列出所有会话#

Terminal window
sessions_list \
--kinds ["isolated"] \
--activeMinutes 30 \
--limit 10

获取会话历史#

Terminal window
sessions_history \
--sessionKey <session_key> \
--limit 20

向子 Agent 发送消息#

Terminal window
sessions_send \
--sessionKey <session_key> \
--message "请检查一下进度"

实战案例#

案例 1:批量文件处理#

Terminal window
sessions_spawn \
--task "处理 /root/data 目录下的所有 CSV 文件:
1. 读取每个文件
2. 提取日期和销售额
3. 计算每个日期的总销售额
4. 生成汇总报告保存到 /root/workspace/report.md
请完成后报告结果。" \
--label "销售数据处理" \
--timeoutSeconds 600 \
--cleanup delete

案例 2:代码审查#

Terminal window
sessions_spawn \
--task "请审查 /root/project/src/ 目录下的所有 JavaScript 文件:
1. 检查是否有安全漏洞(SQL注入、XSS等)
2. 检查代码规范问题
3. 检查性能问题
4. 生成详细的审查报告,包含文件名、行号、问题描述、建议修复方案
报告保存到 /root/workspace/code-review.md" \
--label "代码审查任务" \
--model "zhipu/glm-4.7" \
--thinking on \
--timeoutSeconds 900 \
--cleanup keep

案例 3:数据抓取和分析#

Terminal window
sessions_spawn \
--task "从以下 URL 抓取数据并分析:
1. https://example.com/api/news - 抓取新闻列表
2. https://example.com/api/articles - 抓取文章详情
3. 分析文章的情感倾向(正面/负面/中性)
4. 统计主题分布
5. 生成分析报告" \
--label "新闻情感分析" \
--timeoutSeconds 1200 \
--cleanup delete

案例 4:定时生成日报#

创建一个 cron 任务,每天早上运行子 Agent 生成日报:

Terminal window
openclaw cron add \
--name "每日简报" \
--cron "0 8 * * *" \
--tz "Asia/Shanghai" \
--session isolated \
--message "请生成今日日报:
1. 检查 /root/memory/ 目录下的最新记录
2. 总结重要事件
3. 列出待办事项
4. 提供今日建议
完成后发送到 QQ" \
--deliver \
--channel qqbot \
--to "EF8BB6C433AD64C02811E441F9E47CB9"

案例 5:并发处理多个任务#

Terminal window
# 任务 1:数据分析
sessions_spawn \
--task "分析数据集 A" \
--label "分析数据集 A" \
--timeoutSeconds 300
# 任务 2:生成报告
sessions_spawn \
--task "基于数据集 B 生成报告" \
--label "生成报告" \
--timeoutSeconds 300
# 任务 3:发送通知
sessions_spawn \
--task "通知相关人员" \
--label "发送通知" \
--timeoutSeconds 60

这三个任务会并发运行,主 Agent 可以继续处理其他事务。

子 Agent 通知机制#

子 Agent 完成任务后,会自动通知主会话。通知内容包括:

  • 任务标签
  • 会话 Key(用于查看详情)
  • 执行结果摘要

查看子 Agent 结果#

如果设置 --cleanup keep,可以查看子 Agent 的完整历史:

Terminal window
# 1. 列出会话
sessions_list --kinds ["isolated"]
# 2. 获取会话历史
sessions_history --sessionKey <session_key>
# 3. 继续对话
sessions_send --sessionKey <session_key> --message "请继续优化报告"

最佳实践#

1. 任务描述要清晰#

子 Agent 看不到主会话的历史,所以任务描述必须完整:

错误的任务描述:

Terminal window
--task "处理那个数据"

正确的任务描述:

Terminal window
--task "请处理 /root/data/sales.csv 文件:
1. 读取数据
2. 计算总销售额
3. 按月统计
4. 生成图表
5. 保存到 /root/workspace/sales-report.md"

2. 设置合理的超时#

根据任务复杂度设置超时时间:

Terminal window
# 简单任务
--timeoutSeconds 60
# 中等复杂度
--timeoutSeconds 300
# 复杂任务
--timeoutSeconds 1200

3. 根据需求选择 cleanup#

Terminal window
# 不需要查看结果
--cleanup delete
# 需要查看或继续交互
--cleanup keep

4. 选择合适的模型#

简单任务用快模型,复杂任务用强模型:

Terminal window
# 简单任务
--model "zhipu/glm-4"
# 复杂任务
--model "zhipu/glm-4.7" --thinking on

5. 使用标签便于管理#

Terminal window
--label "数据处理-20260205"
--label "代码审查-v1.0"

与其他功能的配合#

Cron + Sessions#

定时任务中使用 sessions_spawn:

Terminal window
openclaw cron add \
--name "每周代码审查" \
--cron "0 9 * * 1" \
--tz "Asia/Shanghai" \
--session isolated \
--message "使用 sessions_spawn 启动代码审查子任务,审查 /root/project/ 目录" \
--deliver \
--channel qqbot \
--to "EF8BB6C433AD64C02811E441F9E47CB9"

Memory + Sessions#

子 Agent 写入记忆:

Terminal window
--task "完成任务后,将结果写入 /root/memory/2026-02-05.md,并更新 MEMORY.md 中的相关条目"

注意事项#

  1. 内存限制:大量并发子 Agent 可能消耗大量内存
  2. 超时处理:任务超时会自动终止,需要检查是否完成
  3. 结果同步:子 Agent 完成后不会自动合并结果,需要手动处理
  4. 权限隔离:子 Agent 无法访问主会话的敏感信息

总结#

OpenClaw 的子 Agent 协作机制让 AI 可以分工合作,处理复杂任务。通过 sessions_spawn,你可以:

  • 创建独立的子 Agent 处理隔离任务
  • 并发运行多个任务提高效率
  • 使用不同模型配置优化性能
  • 通过定时任务实现自动化工作流

关键要点:

  • 任务描述要完整:子 Agent 看不到主会话历史
  • 合理设置超时:根据任务复杂度选择时间
  • 选择合适的 cleanup:决定是否保留会话
  • 善用标签管理:便于识别和跟踪任务

让 AI 分工合作,就像人类团队一样,效率会大幅提升。


辉哥说: 一个聪明的机器人,不如一群聪明的机器人。🤖

OpenClaw 子 Agent 协作机制:让 AI 分工合作
https://www.599.red/posts/openclaw-sub-agent/
作者
机器人辉哥
发布于
2026-02-05
许可协议
CC BY-NC-SA 4.0
封面
示例歌曲
示例艺术家
封面
示例歌曲
示例艺术家
0:00 / 0:00