🎭 OpenClaw 多Agent编排模式完全指南
协作、通信、调度 — 生产级多Agent系统设计
TL;DR:多Agent编排是构建复杂AI系统的关键。本文介绍 OpenClaw 中的5种核心编排模式,包含完整的代码示例和生产级最佳实践。
🎯 5种核心编排模式
模式1:Leader Election(领导者选举)
一个 Agent 作为协调者,分配任务给其他 Agent,汇总结果。
# Leader Agent 配置
agents:
leader:
model: claude-sonnet-4-20250514
role: coordinator
can_spawn: true
subordinates:
- researcher
- writer
- reviewer
researcher:
model: claude-haiku
role: research
writer:
model: claude-sonnet-4-20250514
role: writing
reviewer:
model: claude-sonnet-4-20250514
role: review
适用场景:内容生产流水线、多步骤分析、团队协作任务
模式2:Swarm Intelligence(群体智能)
多个平等的 Agent 并行工作,各自独立完成任务,最后汇总。
# 并行执行多个独立任务
sessions_spawn(task="分析竞品A", label="competitor-a")
sessions_spawn(task="分析竞品B", label="competitor-b")
sessions_spawn(task="分析竞品C", label="competitor-c")
# 等待所有完成
sessions_yield(message="等待竞品分析完成")
# 汇总结果
sessions_history(sessionKey="competitor-a")
sessions_history(sessionKey="competitor-b")
sessions_history(sessionKey="competitor-c")
适用场景:并行数据采集、多维度分析、A/B测试
模式3:Pipeline(流水线)
Agent 按顺序处理,前一个的输出是后一个的输入。
# 流水线:采集 → 分析 → 写作 → 发布
# Step 1: 数据采集 Agent
result_1 = sessions_spawn(task="采集今日AI新闻")
# Step 2: 分析 Agent(使用 Step 1 的结果)
result_2 = sessions_spawn(task=f"分析这些新闻: {result_1}")
# Step 3: 写作 Agent
result_3 = sessions_spawn(task=f"撰写日报: {result_2}")
# Step 4: 发布 Agent
result_4 = sessions_spawn(task=f"发布到网站: {result_3}")
适用场景:内容生产流水线、ETL流程、多阶段处理
模式4:Debate(辩论式)
多个 Agent 从不同角度分析问题,通过辩论达成共识。
# 正方 Agent
sessions_spawn(
task="作为正方,论证为什么应该采用方案A",
label="pro"
)
# 反方 Agent
sessions_spawn(
task="作为反方,论证为什么不应该采用方案A",
label="con"
)
# 裁判 Agent 综合判断
sessions_spawn(
task="作为裁判,综合正反方观点做出最终判断",
label="judge"
)
适用场景:决策分析、风险评估、方案评审
模式5:Expert Panel(专家小组)
不同领域的专家 Agent 各自提供专业意见。
# 技术专家
sessions_spawn(
task="从技术可行性角度评估这个方案",
label="tech-expert"
)
# 商业专家
sessions_spawn(
task="从商业价值角度评估这个方案",
label="biz-expert"
)
# 法律专家
sessions_spawn(
task="从法律合规角度评估这个方案",
label="legal-expert"
)
适用场景:全面评估、尽职调查、多维度审查
📡 Agent间通信协议
| 通信方式 | 实时性 | 复杂度 | 适用场景 |
| sessions_send | 同步 | ⭐ | 简单消息传递 |
| 共享文件 | 异步 | ⭐⭐ | 大数据交换 |
| 消息队列 | 异步 | ⭐⭐⭐ | 高并发场景 |
| 数据库 | 异步 | ⭐⭐ | 持久化状态 |
# 使用 sessions_send 进行 Agent 间通信
sessions_send(
label="researcher",
message="请查找关于 MCP 无状态化的最新信息"
)
# 等待回复
response = sessions_send(
label="researcher",
message="总结一下你的发现",
timeoutSeconds=60
)
🔧 SubAgent 工厂模式
# SubAgent 工厂:动态创建专业 Agent
def create_specialist_agent(domain):
sessions_spawn(
task=f"""你是一个{domain}领域的专家Agent。
你的任务是:
1. 分析用户的问题
2. 提供专业的建议
3. 给出可执行的步骤
请用中文回答,保持专业但通俗易懂。""",
taskName=f"{domain}-specialist",
mode="run"
)
# 动态创建不同领域的专家
create_specialist_agent("SEO优化")
create_specialist_agent("内容营销")
create_specialist_agent("技术架构")
⚠️ 多Agent系统常见陷阱
❌ 陷阱1:无限循环
Agent A 让 Agent B 做事,B 又让 A 做事。解决方案:设置明确的任务边界和超时。
❌ 陷阱2:信息丢失
Agent 之间传递信息时丢失上下文。解决方案:使用结构化消息格式。
❌ 陷阱3:资源争抢
多个 Agent 同时写入同一文件。解决方案:使用文件锁或消息队列。