多 Agent 系统如何保证路由准确和消息正确传递?
未标记
询问 AI
考查重点:能力路由与消息关联。按能力与数据源路由,交接携 task_id、输入版本和所需上下文;返回时校验身份与状态,去重并处理超时
本题目录
参考答案
核心回答
我会分别控制**“选对执行者”和“正确交接、回收当前任务”**。路由准确靠能力边界、信息完整性和评测;消息正确靠可校验的任务契约与运行时状态管理。
- 先判断任务需要什么能力。 按数据来源、操作目标和必要输入匹配 Agent;模型可以做语义分类,程序再校验目标是否存在、能力和权限是否满足。缺少时间范围、对象或统计口径时先澄清;多个角色都可能接手时,补足信息或退回主 Agent 决定,不让它们反复转交。
- 把交接内容说清并绑定身份。 消息携带会话与任务 ID、接收者、输入版本、目标、必要上下文和依赖;返回结果也带任务 ID、状态、数据或产物及依据。只把属于当前任务、满足约定的结果交给汇总者。
- 由运行时处理失败。 设置截止时间和有限重试,识别重复与过期结果;有外部副作用的操作还要实现业务幂等。最后分别检查路由选得对不对,以及消息是否漏收、串任务或重复合并。
例如“统计内部药品销量并结合内部说明解释变化”,销量应交给数据库助手,说明交给知识库助手。仅因出现“药品”就派给网络搜索,即使消息送达也仍是路由错误。
展开说明
1. 先把“匹配”写成可以核对的标准
以研搜助手为参考场景,三个业务专家的边界是:网络助手查询互联网公开信息;数据库助手获取内部结构化业务数据;知识库助手检索内部非结构化文档。主 Agent 根据每个专家的 description 选择委派对象,专家的 system_prompt 再说明如何执行。
设计路由时,可以为每个角色登记支持的任务、所需输入、可用数据源、工具和不能处理的范围。先检查明确条件,再由模型处理自然语言的语义差异。例如“我们上个月卖了多少”包含内部数据和时间指代,不能按“销售”关键词直接送到网络助手。对象和时间可从可信会话状态补齐;仍不明确,就询问用户。
混合请求应拆成针对不同来源的子问题。已经明确的销量统计与内部说明检索可以分别派发;若第二步需要第一步得到的商品名单,就记录依赖,等名单确定后再执行。并行派发只是执行方式,不能解决输入缺失,也不能让不相关来源变得相关。
歧义回退也要有固定去处:允许专家返回“能力不匹配”或“缺少字段”,由主 Agent 澄清或重新规划,并限制重复转交次数。参考项目的主提示词含有“边界不明确则全部使用”的策略;若重点是减少误路由和无效调用,可以把这部分改成上述澄清与回退规则,并用样例比较效果。
2. 交接的是一项任务,不能只发一句“你处理一下”
可以约定一份任务信封,核心字段各有用途:
run_id、task_id、parent_task_id:区分本次执行、子任务及所属父任务;会话 ID 用来关联持续对话,未必能唯一标识每次执行。recipient、goal、input、input_version:明确交给谁、完成什么、采用哪版输入。例如数据库子任务应收到商品范围、起止日期、销量定义,而不只是原始的一句用户问题。dependencies、deadline、attempt:说明等待哪些结果、何时超时、当前第几次尝试。只有前置结果满足约定,调度器才启动依赖任务。
这些标识和允许的接收者由程序生成或校验,不能只让模型自由填写。发给专家的上下文应包括原始目标、已确认条件、相关上游结果及来源;其他专家的无关对话不必一起传递。
结果约定则包括原任务标识、输入版本、执行状态、结构化结果、证据或产物引用,以及可识别的错误原因。比如数据库任务超时,应返回失败或超时状态;“没有查到数据”应是一次正常查询的结果,二者不能都压成空字符串。汇总者据此决定能否回答、是否补查或说明缺失项。
若用 LangChain 的工具消息传递结果,还要保持调用与响应的 tool_call_id 匹配。子图交接时,工具调用消息与相应响应要成对保留,否则可能形成无效消息历史。这个 ID 负责模型工具交互,与业务 task_id 分工不同。
3. 按任务归并结果,处理迟到、重复和未知状态
假设用户先查“上个月销量”,随后改为“今年累计销量”。旧请求即使晚到,也不能覆盖新请求。汇总时应核对执行 ID、任务 ID 和输入版本,把旧结果保留在原执行记录中;不同专家写入各自任务的结果位置,再由一个明确的汇总者生成最终答案,避免同时覆盖同一个答案字段。
超时后的处理取决于任务性质。只读查询可以在剩余预算内重试,但仍需去重,避免同一结果被合并两次;创建工单、写数据库等操作超时后,不能直接认定执行失败,因为远端可能已完成。应使用稳定的业务幂等键、查询操作状态或唯一约束,确认同一逻辑操作不会重复生效。重新执行节点或启用检查点本身,不等于外部操作恰好执行一次。
研搜参考代码已经使用会话标识关联 thread_id、输出目录和 WebSocket 推送,主 Agent 通过框架的 task 工具委派专家。这能说明实际的调用和事件流;独立执行 ID、完整任务信封、输入版本和业务幂等则是上面提出的进一步设计,不能仅由这些会话机制推断已经实现。
4. 用两组检查定位问题
路由评测需要标注预期角色或允许的角色集合,覆盖单一来源、混合来源、缺字段、相近措辞和无法处理的请求。除了整体选对比例,还要看各类任务的漏派、误派、无效调用及应澄清却直接执行的情况。模型自报的“置信度”可以作为信号,不能未经校准就当成可靠概率。
消息链路则检查发出、开始、完成、超时、取消和归并记录能否按 ID 串起来,并故意验证重复返回、乱序到达、迟到结果及部分失败。发生错误时,就能区分是目标选错、上下文缺失、工具执行失败,还是正确结果被错误归并,再决定修改路由规则、任务契约或运行时逻辑。
常见追问
接入消息队列就能保证正确传递吗?
队列可以帮助跨进程缓冲、投递和重试,但业务任务的身份、版本、幂等和结果归属仍要实现。单进程中可以直接调用子图或异步函数;需要独立部署、削峰或跨服务协作时,再选择队列或 RPC。传输方式不能替代任务契约。
Router 和主 Agent 调度有什么区别?
专用 Router 通常先做一次分类,选择一个或多个目标;主 Agent 则可以根据对话和返回结果持续决定下一步。两者都需要校验目标与输入,区别主要在决策发生的位置、是否持续编排,而不是名字里有没有 Agent。
上下文应该完整传递还是只传摘要?
传完成子任务所需的最小充分信息。关键约束、已确认口径和必要证据应保留,长材料可以给摘要与可读取的引用。若接收方无法读取引用,就需要传入相关内容;若采用工具调用历史,还要保留合法的消息配对,不能为了压缩 Token 删掉必要响应。
对应教程
- LangGraph 多智能体与 A2A:阅读主管委派、专家结果回收与 Handoff 的区别,理解下一跳选择和交接上下文各承担什么职责。
- 深度研搜配套源码:主智能体与异步执行:对照
task子智能体调用、会话标识、流式结果与前端事件的实际连接;本文的任务版本和幂等约定是在此基础上展开的设计。 - 深度研搜配套源码:主从提示词:查看公开网络、内部业务表和私有文档的能力边界,以及可以改进的歧义派发策略。
参考资料
- 国内:JavaGuide:多 Agent 协作系统设计:借鉴任务契约、依赖、超时与失败恢复的设计,说明正文中任务标识、结果归属和外部操作幂等为何要分别处理。
- 国内:zero2Agent:多智能体协作——角色分工、通信机制与冲突仲裁:参考能力匹配、选择校验和重复转交处理,说明正文中角色路由的硬条件与歧义回退路径。
- 国内:WeThinkIn:Agent 设计模式与工作流编排高频考点:依据 Router、主管编排与运行时状态的分工,解释正文中路由决策、上下文传递和程序约束各自的职责。
- 国内:Datawhale:第六章 框架开发实践:借鉴消息组织与图状态更新示例,说明正文中 Agent 如何传递任务输入、交付结果并推动后续执行。
- 国外:LangChain:Router:采用分类、单目标选择与多目标派发的实现思路,解释正文中专用路由与持续主管编排的差别。
- 国外:LangChain:Handoffs:依据工具调用与响应的 ID 配对要求,说明正文中交接上下文时如何保留完整调用关系并筛选必要消息。
- 国外:LangChain:Graph API overview:依据节点重执行与幂等的说明,解释正文中检查点恢复为何不能保证外部副作用恰好发生一次。
相关面经
12 篇药明康德
AI 数据工程师阿里巴巴
AI 全栈开发工程师大模型推理干了啥?多 Agent 之间 交互逻辑怎么实现?
虾皮
Agent 应用开发工程师复杂任务场景下,中心调度 Agent 路由调用不同的subAgent?
阿里巴巴
大模型应用开发工程师(RAG 方向)主 Agent 与二级 Agent、子 Agent 之间如何通信?
中兴
软件开发工程师多Agent会涉及调度与路由问题,引入路由Agent之后,如何保证准确路由、消息正确传递?
展开剩余 7 篇面经
美团
Agent 开发工程师Agent系统中的路由机制是如何设计的?如何判断请求应该交给哪个Agent处理?
腾讯
大模型应用开发工程师(RAG 方向)详细说明该多Agent系统的整体架构:Supervisor和Worker各自承担什么角色?每个Worker是否对应一个独立的Agent?各Agent背后使用的模型是什么?Agent之间通过何种机制进行通信和数据传递?
腾讯
后端开发工程师你这个RouterAgent设计怎么做的?下面并行跑的这三个Agent又是设计的
小红书
AI 应用开发工程师多agent协作,如何做上下文管理?怎么共享上下文?
蚂蚁集团
Agent 应用开发工程师对着之前的一个agent项目详细的深挖,问了agent的架构,多个agent之间如何交互,skill怎么生成,检索机制,和单智能体比好在哪里等等
小红书
Agent 算法工程师多Agent协同是通过什么机制实现的?
未知公司
Agent 方向Agent 之间的通信该如何设计
收录题集
相关关键词:多 Agent、Multi-agent Routing



