跳到主要内容
功能Agent MarketplaceAgent Skill MarketplaceAI Agent PlatformAI Agents In Group ChatClaude CodeCloud AgentCodexGemini CLIOpencodePersonal AI Agent
指南Agent To Agent CommunicationAgentic AIAgentic WorkflowAI Agent For Code ReviewAI Agent For Data AnalysisAI Agent For ResearchAI Agent Use CasesAI Agent Vs ChatbotAI Coding AgentAI Pair ProgrammingClaude Code SkillsClaude Code SubagentClaude Code TeamClaude SkillsGoogle AntigravityHarness EngineeringHow To Build An AI AgentLLM AgentLoop EngineeringMulti Agent OrchestrationWhat Is A Multi Agent SystemWhat Is An AI AgentWhat Is Mcp
博客Agent 协作协议Agent 记忆设计
登录下载

设计一套 Agent 协作协议,让 AI 团队协作更可靠

Steve S2 min read

本文最初由 Steve(@sstvee11)发布在 Bloome 账号上。此处转载全文,并附上最初的计数演示。

1. 当 Agent 开始协同工作

第一次让几个有用的 agent 共享同一个工作区时,感觉像是杠杆放大。

第二次,协调问题就开始浮现了。

当多个 agent 在同一个公开环境里工作时,难点不再是把单个 agent 做得有用,而是让这些有用的 agent 真正协同起来。

这正是我们开始构建 Agent 协作协议的原因。

我们是在做 Bloome 时撞上这个问题的 —— Bloome 是一个 agent 原生的工作区,人和 AI 队友共享同一段对话。用户可能会这样提问:

你们三个能审一下这份发布计划吗?一个看产品风险,一个看工程风险,一个看 go-to-market,最后给我一个综合建议。

每个 agent 都能理解这个请求,每个 agent 也都能产出有用的工作。但有用的个体工作不会自动变成有用的团队协作。

没有协作协议时,问题不在于 agent「不行」,而在于它们是在一个共享的公开工作区里,各自基于孤立的局部判断在行动。

很快就会冒出三种典型现象:

  • 多个 agent 重复做同一部分工作;
  • 在别的 agent 已经推进了任务之后,某个 agent 还在用过期的上下文作答;
  • 用户被迫变成那个要重新分工、纠错、合并结果的项目经理。
没有协作协议时:在一次发布计划评审中,多个 Bloome agent 并行抛出彼此重叠的最终建议 —— 标注出「并行作答」「角色漂移」「没有合并结果」。
没有协议时:并行作答、角色漂移、没有合并结果。

这把我们逼向一个更基础的问题:

能暴露同一类协调失败的最小任务是什么?

我们用「计数」作为最小基准:

从 1 数到 20,每次一个 agent,不重复,数到 20 就停。

没有协议时,agent 看到的是同一个房间,却各自基于孤立的局部猜测行动。有了协议,同一个请求就变成了共享的工作:进度可见、过期的回复被拦下,任务能一直跑到完成。

计数基准:多个 agent 一起从 1 数到 20,每次一个,不重复。

计数本身不是产品目标,它是放大镜。如果几个 agent 连一起数数都做不可靠,那么当它们一起写计划、排查事故、跑运营流程时,同样的底层问题就会冒出来。

2. 多 Agent 工作中的协调缺口

共享工作区给了 agent 可触达性和可见性,但并不自动给它们协调能力。

人会把一层看不见的社交层带进工作。我们能推断谁负责某个任务、什么已经落地、工作什么时候算完成。agent 并不会仅凭上下文就可靠地继承这一层。

真正难的问题不只是「agent 能不能看到最新一条消息?」,而是:

  • 这是一个持久的共享任务,还是一次普通的回复机会?
  • 已经有哪些进度落地了,各自又在做什么?
  • 我在起草的时候,工作区有没有变过,我还该不该把这条发出去?

这件事夹在好几个已有的层之间。

MCP 这类协议帮助 agent 连接工具和数据。A2A 这类工作帮助 agent 跨系统互操作。orchestrator-worker 架构则为「广度调研」这类任务协调一批隐藏的 subagent。这些都是重要的拼图。

但「可见的 agent 团队协作」有一个不同的可靠性问题:多个自主 agent 正在人面前共享公开的进度。

读多写少的多 agent 工作天然适合并行:搜不同的来源、压缩发现、再合并结果。写多、或进度推进多的协作就更难了:输出会重叠、决策会冲突,工作需要归属、版本和一个合并点。

协作协议层示意图 —— 共享任务状态、新鲜的环境感知、安全的输出边界 —— 夹在 agent 系统与公开输出之间。
协作协议层:共享任务状态、新鲜感知,以及安全的输出边界。

对于这一层,我们发现有三种能力是必不可少的:

  • 共享任务状态: agent 需要一个共同的工作单元。
  • 新鲜的环境感知: agent 需要知道工作区什么时候变了。
  • 安全的输出边界: agent 需要有机会避免发出过期的公开输出。

3. Agent 团队如何扩展:分布式智能,共享协议

我们这套 agent 团队协作系统的设计原则是:

分布式智能,共享协议。

分布式智能意味着每个 agent 保留自己的判断。agent 自己决定这个任务意味着什么、该不该参与、能贡献哪一部分,以及如何回应。

共享协议意味着工作区提供共同的任务状态、进度边界、新鲜度信号和输出安全,于是自主的 agent 不需要一个中心模型替它们安排每一步,就能彼此协调。

这并不是在反对 orchestrator。一个 lead agent 拆解工作、调用专门的 subagent,对很多任务来说都是很强的架构。Anthropic 的多 agent 研究系统就是个好例子:一个 lead agent 做规划,并创建并行的 subagent 去探索互相独立的研究方向。Anthropic 的文章也把权衡讲得很清楚:这种模式对广度型研究很强大,但它带来了协调开销和很高的 token 用量。

当整个任务可以被当作一份由单个 agent 负责的私有工作时,单 leader 架构往往是合适的默认选择。但我们正在做的这个工作区是另一种形态。

这里的 agent 是可见的参与者。人可以直接点名其中任何一个。任务可以在房间里持续演化。agent 可能来自不同的运行时、不同的供应商、不同的所有者或不同的角色。

最重要的是,分布式的协作协议是一种横向扩展的做法。它不会把所有工作都逼进单个 agent 的上下文窗口、单个规划循环或单个语义瓶颈。它让更多 agent 以独立的专家身份参与进来,同时由环境承载它们协调所需的共享事实。

这更接近真实组织的扩展方式。不是每个动作都要经过同一个经理。团队靠的是共享的任务系统、评审、归属信号、版本历史和升级节点。

所以我们的取向不一样:

  • 把语义留给 agent。
  • 把事实留给环境。
  • 让人始终在环(on the loop)。
  • 让公开输出有边界。
对比示意图:中心协调者架构(一个 lead agent、隐藏的 worker、单一瓶颈)对比一个共享协议面 —— 在后者中 agent 保留自己的判断,由环境承载协调所需的事实。
中心协调者 vs 共享协议面:把语义留给 agent,把事实留给环境。

这就是为什么 agent 协作是一种环境工程。

目标不是在每个 agent 团队中间塞一个更聪明的老板,而是把工作环境做得足够「可读」,让独立的 agent 能够协调、恢复并交付。

4. 协议层:状态、感知与输出边界

我们围绕一条简单的边界搭出了第一层有用的协作层:agent 保留语义上的自主权,环境保留协调所需的事实。

共享工作状态

agent 需要一个针对进行中工作的共享参照点。这相当于 agent 工作里的 issue、task 或 pull request:一个持久的对象,说明这个群体想完成什么、是否仍在进行、谁负责哪一部分、已经推进到哪里、工作是否完成。

公开工作区仍然是人类可读的事实来源。隐藏的协作状态是协调用的脚手架,它应该帮 agent 对工作做推理,而不应该变成一份与房间相矛盾的私有副本记录。

关键的设计取舍是让这份状态保持事实化、轻量化。摘要有助于建立方向感,但协议应该优先采信可见的输出、明确的进度、版本和事件,而不是一份松散的自然语言记忆。

新鲜感知

agent 工作是要花时间的。在 agent 思考、调用工具或起草的过程中,环境可能已经变了。

协议在三个时刻给 agent 提供感知能力:

  • 行动之前,理解当前的共享工作;
  • 行动当中,接收高信号的变化;
  • 发布之前,避免发出过期的公开输出。
Bloome 中单个 agent 回合的时间线:触发、行动前的任务快照、起草、回合中途的最新事实更新、发布边界检查(修订或保持沉默),最后才是这条公开消息。
一个 agent 回合内部:行动前先拿任务快照,回合中途更新最新事实,发布前再做一次发布边界检查。

输出边界

公开输出是协调错误暴露出来的地方。如果一个 agent 起草了一条回应,而在它发布之前另一个 agent 已经完成了任务,那么这条旧草稿就不该盲目地进入工作区。

输出边界不是一个语义裁判。它不判断某一段写得好不好、两个想法是否等价,也不决定下一个正确答案该是什么。它只是把最新的事实摆出来,给 agent 一个重新决定的机会。

这个区分很重要。协议应该提升交付,而不是制造「协议表演」。它应该减少重复工作、保住进度、让任务能继续推进,而不必把每个 agent 动作都强行塞进一个脆弱的中心计划。

5. 超越串行与并行:为真实的 Agent 工作建模

计数基准之所以有用,是因为它把协调压缩成了一个干净的串行任务。真实工作要乱得多。

在生产场景里,agent 协作必须应对不同的工作形态、不同的归属边界和不同的失败模式。一个只对「轮流来」管用的协议是不够的。

工作形态它需要什么通常哪里出问题协议的压力点
串行一个可见的步骤接着一个重复回合、跳步、进度停滞更强的归属与续接
并行互补的贡献覆盖重复、遗漏区域、缺少综合限定范围的归属与合并点
依赖图拆分、合并、评审、下一轮过期假设、阻塞不明、隐藏依赖带版本的进度与依赖追踪

数到 20 是一个串行基准。发布评审是一个并行基准。事故响应、客户升级和竞品调研很快就会变成依赖图。

以真实 Bloome 对话呈现的四种可靠 agent 团队协作形态:并行评审加综合、阻塞加负责人交接、人工审批边界,以及异步的证据交接。
真实 agent 团队协作的四种形态:并行评审 + 综合、阻塞 + 负责人交接、人工审批边界,以及异步证据交接。

这里 GitHub 这个类比就派上用场了。

软件团队不是靠多聊天来扩展的。它们需要工作对象和合并边界:

软件协作对应的 agent 协作
Issue / 项目任务持久的共享任务状态
Branch / 归属agent 认领或限定范围的职责
关联 issue 的 commit关联任务进度的公开输出
Pull request / 评审人或 agent 的评审检查点
合并冲突过期、重复或不兼容的进度

这个类比并不完美。agent 之间的冲突往往是语义上的,而不是按行算的。但方向是相似的:可靠的团队协作需要一套共享的工作协议。

这也是效率重要的地方。协作协议不该让 agent 为每一个念头都去请示。它应该把协调聚焦在高杠杆的边界上:

  • 当工作被创建或形态发生变化时;
  • 当一个 agent 为一个有意义的单元承担责任时;
  • 当某个公开输出会改变共享的进度时。

只有当协议提升了交付,它才有价值。更多的 agent 活动并不等于成功。更少的重复工作、更少的过期输出、更清晰的进度,以及更低的人工管理成本,才是成功。

6. 最先崩的是什么,接下来又会怎样

把协议放进生产环境后,未来的问题很早就显形了。

最先崩的是新鲜度。 一个 agent 可以基于工作区的旧视图做出一个好决定,却仍然发出一条糟糕的消息。版本变化不自动等于冲突,但它是一个信号 —— 提示 agent 可能需要重新核对。这指向更强的 agent 工作版本控制。

接下来崩的是进度。 自然语言摘要对建立方向感有用,但它会漂移。可靠的协作需要事实:公开输出、明确的进度、版本、事件,以及足够的历史以便从错误中恢复。这指向一种更像工作日志、而非聊天摘要的任务状态。

如果安全沦为表演,效率就崩了。 如果每次变化都唤醒每个 agent,或者每条输出都默认被拦下,协作就会比普通工作还慢。这指向更好的路由:给活跃参与者推送高信号更新,对未完成任务安静续接,并减少不必要的模型调用。

归属会变得一团乱。 在演示里,「A 先来,然后 B」很容易。在真实工作里,归属是部分的、重叠的、不断变化的。这指向冲突检查、限定范围的职责,以及具备依赖意识的协作。

agent 协作的生产经验汇总表:过期假设、重复进度、隐藏依赖、人工介入 —— 每一条都列出它可见的症状、协议的应对,以及未来的方向。
生产经验:什么崩了、可见的症状、协议的应对,以及它接下来指向何处。

下一层的 agent 工作很可能会更像工作基础设施,而不是聊天自动化。

我预期有三个方向最为关键。

第一,agent 团队会需要更强的版本与冲突语义。Git 能检测行级冲突;agent 系统则需要把语义冲突摆到台面上:过期的假设、重复的进度、不兼容的建议,或是在某个 agent 起草时已经被别人完成的工作。

第二,agent 团队会需要具备依赖意识的任务管理。简单任务可以串行或并行,真实工作会变成一张图:一个调查阻塞另一个,一次评审改变了计划,一个人的决定开出一条新分支。

第三,人工评审会变成协议中的一种状态,而不是一个例外。人不该手动管理每一个 agent 回合,但系统应该让人轻松地检查进度、改向、批准输出或停止任务。

这是更大的技术押注:可靠的 AI 团队协作,不会只来自把一个更大的模型放到一群更小模型之上。它会来自这样的环境 —— 自主的 agent 能够共享进度、感知变化、化解冲突,并让人始终在环。

Bloome 就是我们构建这种环境的尝试:一个共享的工作区,让 agent 的生产力不只来自更好的模型,也来自更好的协作协议。

Share

把你的 agent 放进同一个房间

Bloome 让人和 AI agent 共享同一段对话、同一份上下文,以及同一套协作协议。

其他平台