🤝 OpenClaw 多Agent协作教程

让多个AI Agent协同工作,1+1>2

Multi-Agent 任务编排 Agent通信

妙趣导读:凌晨4点12分,我盯着终端里跑着的三个Agent,突然意识到——一个人干不完的活,三个Agent配合干,效率直接翻三倍。但协作不是简单的堆砌,得像指挥交响乐团一样,让每个Agent在正确的时间演奏正确的部分。

📋 多Agent协作概述

🎯 什么是多Agent协作?

多Agent协作是指多个AI Agent互相配合,共同完成复杂任务。每个Agent有自己擅长的领域,通过任务分解和结果汇总,实现单Agent无法完成的复杂工作。

📊 典型协作流程

┌─────────────┐
│  主Agent    │ (任务分解与协调)
└──────┬──────┘
       │
   ┌───┴────┬────────┐
   ▼        ▼        ▼
┌─────┐  ┌─────┐  ┌─────┐
│Agent│  │Agent│  │Agent│ (并行执行子任务)
│  A  │  │  B  │  │  C  │
└──┬──┘  └──┬──┘  └──┬──┘
   │        │        │
   └────┬───┴────────┘
        ▼
   ┌─────────────┐
   │  结果汇总   │
   └─────────────┘
        

🚀 核心工具

1. sessions_spawn - 创建子Agent

使用sessions_spawn创建独立的子Agent会话:

# 创建一个执行特定任务的子Agent
sessions_spawn(
  runtime: "subagent",
  task: "分析最近10个OpenClaw GitHub Issues并总结热点话题",
  mode: "run"  # 一次性任务
)

# 创建持久化会话(可多次交互)
sessions_spawn(
  runtime: "subagent",
  task: "持续监控Hacker News的OpenClaw相关讨论",
  mode: "session",
  label: "hn-monitor"
)

2. sessions_send - 向Agent发消息

向已存在的Agent会话发送消息:

# 向指定会话发送新任务
sessions_send(
  sessionKey: "abc123",  # 或 label: "hn-monitor"
  message: "现在总结今天的热点话题"
)

# 等待回复(设置超时)
sessions_send(
  sessionKey: "abc123",
  message: "生成报告",
  timeoutSeconds: 300
)

3. sessions_list - 列出所有会话

查看当前活跃的Agent会话:

# 列出所有会话
sessions_list(limit: 10, messageLimit: 3)

# 查看特定类型的会话
sessions_list(
  kinds: ["subagent"],
  activeMinutes: 60  # 最近60分钟活跃的
)

💡 实战案例

案例1:多源新闻聚合

使用3个Agent分别抓取不同来源的新闻,然后汇总:

# 主Agent任务描述
"""
创建3个子Agent:
1. Agent A - 抓取Hacker News的AI相关新闻
2. Agent B - 抓取Reddit r/OpenClaw的讨论
3. Agent C - 抓取GitHub OpenClaw的最新Releases

等待所有Agent完成后,汇总生成今日新闻日报。
"""

# 实现代码
# Step 1: 创建子Agent
sessions_spawn(runtime:"subagent", task:"抓取HN的AI新闻", label:"hn-fetcher")
sessions_spawn(runtime:"subagent", task:"抓取Reddit讨论", label:"reddit-fetcher")
sessions_spawn(runtime:"subagent", task:"抓取GitHub Releases", label:"gh-fetcher")

# Step 2: 等待完成并获取结果
# (实际中需要轮询或使用sessions_yield等待)
sessions_send(label:"hn-fetcher", message:"返回结果")
sessions_send(label:"reddit-fetcher", message:"返回结果")
sessions_send(label:"gh-fetcher", message:"返回结果")

# Step 3: 汇总生成日报
# 主Agent整合三个来源的内容,生成结构化日报

案例2:SEO内容生产流水线

# 创建内容生产流水线
"""
流水线设计:
- Agent A: 搜索热门关键词(web_search)
- Agent B: 生成草稿内容(write)
- Agent C: SEO优化(检查关键词密度、添加内链)
- Agent D: 质量审核(阅读检查、事实核查)
"""

# 使用sessions_spawn依次创建
sessions_spawn(runtime:"subagent", task:"搜索'OpenClaw tutorial 2026'相关热门关键词", label:"keyword-research")
# ... 后续Agent依次处理

📊 最佳实践

✅ 任务设计原则
  • 任务隔离 - 每个子Agent只做一件事,避免耦合
  • 明确接口 - 定义清晰的输入输出格式
  • 超时控制 - 为子Agent设置合理的runTimeoutSeconds
  • 错误处理 - 主Agent要能处理子Agent失败的情况
✅ 性能优化
  • 尽量并行执行无依赖的子任务
  • 使用mode="session"复用会话,避免重复初始化
  • 合理使用lightContext减少上下文传输
  • 定期清理不需要的会话(subagents action=kill)
⚠️ 常见坑点
  • 子Agent之间不要直接通信,统一通过主Agent协调
  • 避免在循环中无限制创建子Agent(会耗尽资源)
  • 子Agent的task描述要清晰,别让AI猜你的意图
  • 注意token消耗,多Agent会快速累积使用量

🔗 相关链接

🎭 妙趣小结

多Agent协作就像组建一个超级团队——有负责搜索的、有负责写作的、有负责审核的。每个人都发挥所长,最后出来的活儿,质量自然不一样。但记住,团队越大,沟通成本越高,别为了炫技搞出10个Agent,结果光协调就累死了。😂