前端进阶之旅前端进阶之旅
  • 基础篇HTML/CSS/JS 打底
  • 进阶篇原理与工程化
  • 高频篇面试最常问的那批
  • 精选篇按模块收敛的总结
  • 手写篇常考代码手写实现
  • 面经篇真实面试问题复盘
  • AI 篇NEWAI 时代的前端考点
  • 历年面经NEW按年份追踪真实考点
  • 每日一题每天一道,攒手感
  • 专项自测100 题快速查漏
  • 小程序题库小程序专项刷题
  • 算法题库NEW在线编码即时判题
  • 知识卡片NEW碎片时间过考点
  • 面试题大全常见问题解析
  • AI 答疑NEW随时提问,即时解析
  • AI 模拟面试NEW模拟真实面试 + 报告
  • AI 定制路线NEW按你的简历现排
  • AI 知识地图NEW串起全站知识点
  • 原理篇React / Vue 源码拆解
  • HTTP从报文一路讲到 HTTPS
  • 浏览器渲染、事件循环、进程
  • 计算机基础Linux、网络、操作系统
  • 设计模式23 种模式怎么用
  • Node学习指南从环境搭建到服务端
  • NPM工作流script、依赖与发布
  • Docker容器化部署上手
  • Canvas图形与动画实战
  • 前端系统进阶学习大型项目工程化
  • 前端综合文章长期沉淀的实践文
  • 思维导图知识点全景图
  • 学习路线按图索骥不跑偏
  • AI 热点NEWAI 每日动态
  • 公众号动态公众号历史文章
  • 博客动态站长的技术博客
  • 开发者导航常用工具与文档站
  • 基础篇HTML/CSS/JS 打底
  • 进阶篇原理与工程化
  • 高频篇面试最常问的那批
  • 精选篇按模块收敛的总结
  • 手写篇常考代码手写实现
  • 面经篇真实面试问题复盘
  • AI 篇NEWAI 时代的前端考点
  • 历年面经NEW按年份追踪真实考点
  • 每日一题每天一道,攒手感
  • 专项自测100 题快速查漏
  • 小程序题库小程序专项刷题
  • 算法题库NEW在线编码即时判题
  • 知识卡片NEW碎片时间过考点
  • 面试题大全常见问题解析
  • AI 答疑NEW随时提问,即时解析
  • AI 模拟面试NEW模拟真实面试 + 报告
  • AI 定制路线NEW按你的简历现排
  • AI 知识地图NEW串起全站知识点
  • 原理篇React / Vue 源码拆解
  • HTTP从报文一路讲到 HTTPS
  • 浏览器渲染、事件循环、进程
  • 计算机基础Linux、网络、操作系统
  • 设计模式23 种模式怎么用
  • Node学习指南从环境搭建到服务端
  • NPM工作流script、依赖与发布
  • Docker容器化部署上手
  • Canvas图形与动画实战
  • 前端系统进阶学习大型项目工程化
  • 前端综合文章长期沉淀的实践文
  • 思维导图知识点全景图
  • 学习路线按图索骥不跑偏
  • AI 热点NEWAI 每日动态
  • 公众号动态公众号历史文章
  • 博客动态站长的技术博客
  • 开发者导航常用工具与文档站
首页程序员面试题库多 Agent 共享黑板与消息传递对比
AIAI Agent多 Agent 协作

多 Agent 协作该用共享黑板还是消息传递,两者怎么组合?

共享黑板方便读取共同事实,消息更适合表达谁要做什么;它们可以承担不同职责。

前端进阶之旅 · 一题精讲更新于 2026.09.06
AI Agent#多 Agent 协作#多 Agent
先看核心答案
理解线索

把事实与动作分开设计

  1. 公共状态保存当前任务状态、版本和产物引用
  2. 任务消息指明接收者、工作目标和关联身份
  3. 结果处理核对版本与证据后更新权威状态

黑板可以由数据库等存储实现,消息也可以进程内传递;两者的实际保证取决于实现。

核心回答

先记住这个答案

共享黑板让多个 Agent 读取和更新一份公共任务状态,适合共同事实、阶段进度和可复用产物的持续协调;消息传递把任务、事件或结果明确发给接收方,适合责任交接和异步解耦。前者需要处理版本、写入归属和冲突,后者需要处理投递、重复、顺序和确认。工程中常把可靠状态存储作为当前事实来源,用消息触发工作并携带任务标识与版本引用。不能因为消息已经发出就假定状态落地,也不能因为黑板里出现一行任务就假定有人负责执行。

  • 黑板表达共享事实,消息表达交接或事件
  • 共享写入与消息投递各有需要落实的可靠性规则
  • 混合设计应明确哪一份数据是权威状态

共同阅读和明确交接解决不同问题

研究任务里,多个 Agent 都需要查阅已确认资料、未解决问题和最终报告版本,这些信息放入共享状态较容易形成一致视图。若每次都把完整资料广播给所有成员,消息体会越来越大,还可能出现不同成员拿着不同旧版本继续工作。

但只在黑板里写“需要检查引用”也不够,谁领取、何时开始、超时后谁接管仍然没有答案。显式任务消息可以携带接收者与期限,接收方确认后承担执行责任。黑板偏向当前事实,消息偏向发生了什么或请求谁行动。

两种方式都会遇到重复和过期信息

共享黑板中的旧读可能导致覆盖,因此需要版本检查或明确的单写者规则。消息也可能重复、延迟或乱序,接收方不能把每次投递都当作新的业务任务。稳定身份和输入版本在两种设计里都很有用,但发挥作用的边界不同。

例如完成消息晚于取消消息到达,系统应该根据任务当前状态判断是否接纳产物,而不是按最后收到的消息无条件改写状态。使用至少一次投递的队列时尤其要让重复处理可被识别;队列本身不替业务定义哪些结果可以重复应用。

混合设计需要解决状态与消息的一致发布

一种常见设计是在状态库保存任务与产物,消息只传递任务标识、预期版本和事件类型。接收方收到后读取权威记录,验证当前仍需执行。这样消息保持简洁,原始证据也不必在每次交接时复制。

但写状态成功、发消息失败会产生无人处理的任务,先发消息后写状态也可能让消费者读取不到记录。可采用事务发件箱等机制把待发送事件和状态在同一事务中记录,再由发布器投递;消费者仍需幂等,不能把这一设计说成自动获得端到端恰好一次。

回答前,多想一步

容易答错的地方

共享黑板意味着所有 Agent 随时修改任何字段
这会放大冲突并让责任模糊,应划分字段或产物归属,给最终状态设置明确提交规则,并保留提交者与输入版本以便追查覆盖原因。
用了消息队列就不用持久化任务状态
消息能够传递工作,但恢复、查询和验收仍可能需要稳定状态;是否持久化应由故障恢复要求决定,不能只看通信方式。
试着用自己的话回答

面试官还会怎么问?

小规模进程内 Agent 是否需要上消息中间件?

未必,函数调用或内存队列可能已经足够。只有跨进程隔离、独立扩缩容、可靠投递等需求出现时,才需要承担更复杂的基础设施成本。

消息应该放完整产物还是引用?

小而稳定的结果可直接携带,大产物更适合版本化引用;引用必须对接收方可访问且能校验,不能只给发送方机器上的临时路径。

事件日志能直接当共享黑板吗?

可以从日志构建当前视图,但需要明确事件顺序、去重与投影更新规则;读者通常使用投影状态,而不是每次重新解释全部历史消息。

从一道题,走向一组知识

把知识连起来

多 Agent 协作

多个 Agent 并发更新共享状态,怎样避免旧结果覆盖新决策?

选择共享状态后要落实版本与冲突处理

多 Agent 协作

多 Agent 任务交接消息应包含哪些字段,才能让接收方独立执行?

消息中的任务契约需要支持独立执行

参考资料

  • Amazon SQS:At-least-once delivery
  • A2A Protocol:Tasks and messages
  • AWS:Transactional outbox pattern

示例用于理解所注明的运行环境与边界;延伸学习可结合原文中的更多案例。

本题目录
  1. 先记住这个答案
  2. 共同阅读和明确交接解决不同问题
  3. 两种方式都会遇到重复和过期信息
  4. 混合设计需要解决状态与消息的一致发布
  5. 容易答错的地方
  6. 面试官还会怎么问
  7. 把知识连起来
读懂,再试着讲出来

先看核心答案,再读代码。最后展开追问,检查自己有没有遗漏边界。

试着回答追问
浏览全部面试题理解原理,也关注真实的使用场景。回到顶部 ↑