乐于分享
好东西不私藏

OpenClaw 多 Agent 协作:四种模式,四种活法

OpenClaw 多 Agent 协作:四种模式,四种活法
用 OpenClaw 跑多 Agent 有一阵子了,踩了不少坑,也慢慢摸出了一些门道。
今天不聊概念,聊活法——四种协作模式,每种什么时候用、怎么用、容易栽在哪里。都是真实场景里磕出来的。

先说一个前提

很多人觉得多 Agent 是为了解决上下文窗口不够用的问题。不是的。
单个 Agent 的上下文窗口现在已经很大了,200K token 够干很多事。多 Agent 真正要解决的是两个更本质的问题:注意力稀释角色污染
注意力稀释:你让一个 Agent 同时关注架构设计、代码实现、测试用例、文档编写,它每一项都做得马马虎虎。不是能力不行,是注意力分散了。
角色污染:你让同一个 Agent 先写代码再审代码,它会对自己写的东西手下留情。这不是 bug,这是人性——或者说,是 LLM 模拟人性的副产品。
想清楚这个前提,再来看四种模式就通透了。

模式一:主从协作 Leader → Workers

这是最直觉的模式,也是大多数人上手多 Agent 的第一站。
一个 Leader 负责拆解任务、分配工作、收集结果。多个 Worker 各领一块活,干完交回来。Leader 做最终整合。

什么时候用?

任务天然可分的时候。比如一个全栈项目,前端、后端、数据库迁移脚本,三块活互相之间依赖不强,各自干各自的。
我之前做一个数据采集网关系统的原型,就是这个模式。Leader 拿到整体需求后拆成三个子任务:协议解析模块、数据清洗管道、上报接口。三个 Worker 各写各的,最后 Leader 把接口对齐,整合联调。

实际怎么跑?

在 OpenClaw 里,Leader 本质上就是你的主 Agent 实例。它通过 claude -p 或者 tmux + PTY 的方式拉起 Worker。每个 Worker 拿到的是一个高度聚焦的 prompt——只包含它需要知道的上下文,不多不少。
这里有个关键细节:给 Worker 的 prompt 要做减法,不要做加法。很多人恨不得把整个项目的 README、架构图、设计文档全塞进去。不要。Worker 只需要知道:我要干什么、接口契约是什么、输出格式是什么。多余的信息只会稀释注意力。

容易栽的坑:

Leader 的整合能力往往是瓶颈。三个 Worker 各自写得挺好,但拼到一起发现接口对不上、命名风格不统一、错误处理逻辑矛盾。
解法是 Leader 在分发任务之前,先生成一份「接口契约」——不是完整的设计文档,就是一个简洁的约定:函数签名、数据结构定义、错误码规范。Worker 必须遵守这个契约。这一步省不了,省了后面返工成本翻倍。

模式二:链式协作 A → B → C

前一个 Agent 的输出是后一个 Agent 的输入,像流水线一样串起来。

什么时候用?

任务有天然的先后依赖关系的时候。最典型的场景是「需求 → 设计 → 实现 → 测试」这条线。
我在做翻译 App 的时候用过这个模式。Agent A 负责解析 PRD,输出结构化的功能点列表。Agent B 拿到功能点,输出 SwiftUI 的组件拆分方案和数据模型设计。Agent C 拿到设计方案,逐个组件实现代码。Agent D 拿到代码,写单元测试。
链条上每个 Agent 都只看上一步的输出,不看原始需求。这不是偷懒,这是刻意为之——每个环节只处理自己该处理的抽象层级。

实际怎么跑?

链式协作的关键在于中间产物的格式设计。每个 Agent 之间传递的不是自然语言的大段描述,而是结构化的、可解析的中间产物。
我通常用 JSON 或者 Markdown 的固定模板。比如 Agent A 输出的功能点列表长这样:
{    "features": [        {            "id": "F001",            "name": "热键触发悬浮窗",            "priority": "P0",            "inputs": ["全局快捷键事件"],            "outputs": ["翻译悬浮窗实例"],            "constraints": ["需要辅助功能权限"]        }    ]}
Agent B 看到这个结构,就知道该怎么接。如果你传的是一段散文式的描述,下游 Agent 要花大量注意力去「理解」上游在说什么,信息损耗非常大。

容易栽的坑:

链条越长,误差累积越大。A 理解需求偏了一点点,B 在偏的基础上又偏一点,到 D 的时候已经面目全非了。
实话说,链条超过 4 步我就不太敢用了。如果业务逻辑确实需要更长的链条,我会在中间插入一个「校验节点」——一个轻量 Agent,不干活,只负责对比当前输出和原始需求是否还在轨道上。偏了就打回去重来。
还有一个务实的建议:链条的第一个 Agent 最重要。它的输出质量决定了整条链的上限。在这个环节多花时间打磨 prompt,比优化后面三个环节都有效。

模式三:并行协作 A → {B,C,D} → A

Leader 把任务并行分发给多个 Worker,等所有 Worker 都完成后,Leader 收集结果做汇总。
这看起来跟模式一很像,但有一个关键区别:模式一的 Leader 是做整合,模式三的 Leader 是做决策

什么时候用?

同一个问题需要多个视角的时候。比如技术选型——让三个 Agent 分别从性能、可维护性、团队学习成本三个角度去评估一个方案,最后 Leader 综合三个维度做决策。
我做电池换电平台的月度调账系统时用过这个模式。同一套业务逻辑,让三个 Agent 分别生成三个实现方案:一个偏重数据一致性(悲观锁 + 事务),一个偏重性能(Redis 分布式锁 + 最终一致性),一个偏重可运维(异步队列 + 人工审批兜底)。Leader 拿到三个方案后对比取舍,最终选了 Redis 方案但加上了人工审批兜底。
这个模式的精髓在于:让不同 Agent 带着不同的「偏见」去工作。这个偏见不是贬义词,是有意注入的视角约束。如果三个 Agent 都不带任何倾向,它们大概率会给出高度相似的方案,那并行就没意义了。

实际怎么跑?

每个并行 Worker 的 system prompt 里要明确它的「角色立场」。不是简单说"你是一个注重性能的工程师",而是要给具体的决策倾向:
Worker B:你在做技术选型时,响应时间低于 50ms 是硬约束,其他都可以妥协
Worker C:你在做技术选型时,新人上手成本是第一优先级,技术栈越主流越好
Worker D:你在做技术选型时,线上出问题后的回滚和排查效率是核心关注点
这样三个 Agent 才会真正走向不同的方向。

容易栽的坑:

Leader 在汇总阶段容易「和稀泥」——把三个方案的优点各取一点,拼出一个四不像。
解法是在 Leader 的 prompt 里明确要求:你必须选择一个主方案,其他方案的优点只能作为补丁叠加,不能搞成三合一。决策要有取舍,取舍要有理由。

模式四:对抗 / 评审协作 Builder ↔ Reviewer

一个造,一个拆。Builder 负责生成代码或方案,Reviewer 负责找问题、提改进意见,然后 Builder 根据意见修改,如此往复。
这是我个人用得最多、也觉得产出质量最高的模式。

什么时候用?

任何对质量有要求的场景。代码审查、方案评审、文档校对、甚至写文章。
前面提到的角色污染问题,在这个模式下被彻底解决了。写代码的 Agent 和审代码的 Agent 是两个独立实例,上下文完全隔离。Reviewer 看 Builder 的代码时是「冷眼旁观」的状态,不会因为"这是我写的"而放水。

实际怎么跑?

核心循环很简单:
  1. Builder 生成第一版输出
  2. Reviewer 审查,输出结构化的反馈(问题列表 + 严重程度 + 修改建议)
  3. Builder 根据反馈修改
  4. Reviewer 再审
  5. 重复,直到 Reviewer 的反馈里没有 P0/P1 级别的问题
关键是给 Reviewer 设计好反馈格式。我通常用这个模板:
[P0-阻塞] 并发场景下 Redis 锁没有设置过期时间,可能导致死锁→ 建议:加 30s 过期时间 + 看门狗续期机制[P1-重要] 错误处理只有 log,没有向上层抛异常,调用方无法感知失败→ 建议:定义业务异常类,关键路径必须向上传播[P2-建议] 变量命名 `data` 太笼统,建议改为 `rawMeterReading`→ 可选优化
Builder 只需要处理 P0 和 P1,P2 是可选项。这个分级很重要,不然 Builder 会陷入无限修改的循环——Reviewer 总能找到可以改进的地方,如果没有收敛条件,这个循环永远不会停。

进阶玩法:多 Reviewer

一个 Builder 配两个 Reviewer,一个看功能正确性,一个看安全性和边界情况。两个 Reviewer 的反馈合并后发给 Builder。
这比一个全能 Reviewer 效果好得多,原因还是注意力稀释——一个 Reviewer 同时关注正确性和安全性,两边都顾不好。拆成两个,各自深挖各自的维度。

容易栽的坑:

循环次数。我的经验是上限设 3 轮。超过 3 轮如果还有 P0 问题,说明任务拆解有问题,或者 Builder 的基础 prompt 需要调整。死磕下去只会越改越乱。
另一个坑是 Reviewer 的标准漂移。第一轮它说"命名不规范",Builder 改了,第二轮它又觉得改后的命名也不好,换了个标准来挑。解法是在 Reviewer 的 prompt 里固定评审标准——写死一个 checklist,Reviewer 只能按 checklist 打分,不能自由发挥。

混合使用才是常态

真实项目里很少只用一种模式。更常见的是嵌套组合。
举个例子,我做数据采集网关系统原型时的实际编排:
外层是主从协作:Leader 拆出协议解析、数据清洗、上报接口三个模块。
每个模块内部是对抗协作:一个 Builder 写代码,一个 Reviewer 审代码,跑 2-3 轮收敛。
模块整合阶段是链式协作:先跑集成测试 Agent(检查接口对接),再跑性能测试 Agent(检查吞吐量),最后跑文档 Agent(生成 API 文档)。
三种模式套在一起,每个 Agent 的职责清晰,注意力聚焦,角色不会互相污染。

几个实操层面的碎碎念

1. 日志和可观测性比什么都重要

多 Agent 一旦出了问题,排查难度是指数级上升的。每个 Agent 的输入输出都要落盘。我会让每个 Agent 在工作目录下生成一个 agent-log.md,记录它收到了什么、想了什么、输出了什么。出问题的时候顺着日志链条查,效率高很多。

2. 先单 Agent 跑通,再拆多 Agent

不要一上来就设计复杂的多 Agent 编排。先用单 Agent 把整个任务跑通一遍,跑通之后你才知道哪里是真正的瓶颈、哪里值得拆分。过早拆分 = 过早优化,一样的道理。

3. Agent 数量不是越多越好

每多一个 Agent,就多一层通信开销和一致性风险。能用 2 个 Agent 解决的问题别用 5 个。我目前单个任务很少超过 5 个 Agent 同时工作。

4. 失败要有兜底

Worker 可能会跑飞、死循环、输出格式不对。Leader 必须有超时机制和降级策略。我一般设 Worker 的执行时间上限,超时直接 kill 掉重来。重试 2 次还不行就 Leader 自己上,降级为单 Agent 模式,总比卡死强。

最后

多 Agent 不是银弹。它解决的是注意力稀释和角色污染,代价是引入了协调复杂性。这笔账要算清楚——如果单 Agent 能在 30 秒内搞定的事,就别折腾多 Agent 了。
但对于那些真正复杂的、需要多视角、多阶段、多轮迭代的任务,多 Agent 的投入产出比是实实在在的。
关键是想清楚:你的任务属于哪种模式,或者哪几种模式的组合。模式选对了,事半功倍。选错了,你只是在用更贵的方式写出同样质量的代码。
#openclaw#ai编程