AI 手记AI 手记

多 Agent 协作,最难的不是分工是对齐

3 分钟1 阅读

我第一次搭多 Agent 协作,搭得挺得意。

任务是个内容生产流程:一个 Agent 负责选题和写大纲,另一个负责把大纲扩写成正文。分工清晰,各司其职。我让第一个把结果用消息传给第二个,第二个收到就开干。架构图很漂亮。

跑起来一塌糊涂。

各自「完成」,合不上

第一个 Agent 交付的「大纲」,是个带标题层级的 Markdown 列表。第二个 Agent 收到后,把它理解成了「这是六个独立的小标题,每个我自由发挥」。于是产出的正文是六段互不相干的话,跟前一个 Agent 设想的「层层递进」完全两码事。

两个 Agent 在各自的定义里都「成功」完成了任务——第一个生成了大纲,第二个扩写了。但合起来看,是两份对不上号的产物。问题出在哪?我想了半天,才意识到不是分工的问题,是对齐的问题。

分工是简单的,对齐是难的

多 Agent 协作,大家容易把精力放在「分工」上——这个 Agent 干什么,那个 Agent 干什么。分工确实不难,把任务切开就行。

真正的难点在分工之后:它们各自的产物,怎么保证能拼到一起

第一个 Agent 觉得「大纲」是结构骨架,第二个觉得「大纲」是话题清单。同一个词,两个 Agent 各自理解,没有共享的定义。这是对齐失败。而纯靠消息传递「我给你一段文本」,根本保证不了对齐——文本是模糊的,接收方会按自己的理解消化。

用共享状态和契约替代消息

我后来改了架构,从「消息传递」换成「共享状态 + 契约」。

共享状态:两个 Agent 不直接对话,而是读写同一个结构化的「任务黑板」。第一个 Agent 把大纲写成黑板上的一个 JSON(明确字段:主题、每节标题、每节要点、节与节的关系)。第二个 Agent 从黑板读这个 JSON,扩写时严格按结构来,不能自由发挥。

契约:这个 JSON 的结构是两个 Agent 都遵守的契约。第一个必须按契约产出,第二个必须按契约消费。谁违反了,产物结构会立刻异常,能被抓出来。

这一改,产物对得上了。第一个 Agent 交付的「层级结构」,第二个 Agent 原样保留进了正文。因为它们不再各自理解「大纲」这个词,它们都对着同一份 JSON 干活。

消息传递为什么对不齐

我后来想明白了纯消息传递为什么靠不住。

消息是「我说你听」,天然有信息损失和解读偏差。发送方心里想的,编码成文字,接收方解码成自己理解的意思,两头都不是原样。一个 Agent 越多,这种「传话游戏」的失真越严重。

共享状态是「都看同一个东西」,没有传话。两个 Agent 都对着黑板上的那份数据干活,数据是什么它们就理解什么,不存在谁的理解跑了偏。

所以多 Agent 协作的架构,我现在的原则是:能共享状态就别传消息。消息适合通知(「我做完了,你开始」),不适合传递产物本身。

一个反直觉的收尾

这次教训让我对「分工」这词祛了魅。

大家说多 Agent,爱聊「怎么分工高效」。但分工是表面工作,真正决定成败的是分工后那个对齐机制。没有对齐,分工越清晰,合不上的时候越尴尬——因为每个 Agent 都「没错」,错的是设计者没给它们一个共享的真相源。

多 Agent 不是 1+1=2,是 1+1 要等于一个能用的整体。能不能等于,看的不是分工多漂亮,是对齐多扎实。对齐,才是多 Agent 的真功夫。