多 Agent 共享哪些上下文,如何同步和管理?
未标记
考查重点:最小共享状态与版本合并。共享目标、有效约束、依赖结果和产物引用,各角色私有历史不全量共享;分支结果带任务/版本后按规则合并
本题目录
参考答案
核心回答
多 Agent 应共享协作所需的任务信息和可交付结果,而不是把所有 Agent 的完整历史放进同一个 Prompt。通常可以分成三部分:
- 任务公共信息:当前目标、有效约束、必要的用户确认、任务版本,以及供执行层使用的身份和资源范围;每个 Agent 按职责读取其中需要的部分。
- 可共享结果:各子任务的完成状态、结论、证据位置、数据时间、产物引用和待解决问题,便于下游继续处理。
- 分支私有内容:各自的详细工具过程、临时草稿和无关历史,默认留在分支内,需要核查时再提供必要证据。
同步时由编排器传入明确的输入快照,子 Agent 返回局部更新;并行结果按分支保存,再由归并节点形成最终结论。对共同修改的字段定义合并或单一写入规则,对旧版本、重复和迟到结果做检查。简单的同进程任务用参数、返回值和 State 就能实现,需要跨进程恢复或并发写入时,再补可靠存储、条件更新或消息机制。
展开说明
1. 共享范围按任务与职责确定
共享信息首先要有任务、用户或租户范围。所有 Agent 都需要理解总体目标,但不一定需要读取同一份用户资料、全部记忆或所有工具结果。执行层可以保存可信身份和访问策略,模型只接收完成当前子任务必要的业务信息,凭据不随公共上下文广播。
例如设计一个研搜任务,两个分支分别检索公开资料和内部知识库。它们可以共享主题、时间范围、输出要求和已确认术语;各自维护查询过程,交回“结论、来源位置、数据时间、缺失项”。主 Agent 根据这些结果组织报告,需要复核时再读取相应原文,而不是先把两条搜索历史全部互相复制。
来源、时间和适用条件要跟随结论保留。一个分支的假设不能因为写进共享区就自动变成已确认事实;两边结论矛盾时,应保留证据并由归并步骤判断,不能靠最后写入者覆盖另一个结论。
2. 并行结果怎样合并
最直接的做法是各分支写自己的结果,权威字段由一个明确的归并步骤更新。例如公开资料分支提交 web_result,知识库分支提交 kb_result,分支状态和错误也分别记录;两个分支都不直接覆盖 final_report。
也可以把结果汇总到一个集合,但需要按稳定的子任务或结果 ID 合并,明确重复结果、更新和排序规则。简单列表相加只会追加,不会自动识别重试带来的重复内容;两个分支都返回整份旧列表,也可能重复已有项或丢掉对方更新。节点宜提交本次新增或修改的部分,而不是各自改完一份旧快照再整份覆盖。
以 LangGraph 为例,State 保存共享数据,节点返回局部更新,每个字段通过对应的 Reducer 合并。消息字段的 add_messages 可以按消息 ID 追加或更新;业务证据集合仍需按自己的主键和版本定义规则。同一步中,多个并行节点同时写一个不支持并发合并的字段,会触发并发更新错误,不能依赖默认的“谁晚到就保留谁”。
归并节点还需知道哪些分支是必需的、哪些可以降级。必需资料未完成时不能直接生成完整结论;允许部分结果时,应明确缺失项。共享状态不会让两个并行 Agent 实时看到对方尚未提交的中间变化,需要相互依赖的步骤应安排在后续阶段。
3. 用版本避免旧结果覆盖新任务
设两个分支开始时都接到任务版本 7,要求查询“第一季度”。执行中用户改为“第二季度”,编排器将有效目标更新为版本 8。分支返回时要携带任务 ID、子任务 ID 和输入版本,接收方先判断结果是否仍适用;受时间范围变化影响的旧结果应标记过期并重查,不能直接填入新版报告。未受影响的材料也应经过适用性检查后再复用。
共同存储中的写入竞争则是另一个问题。若两个执行者都基于状态修订号 12 计算更新,存储端可以要求“当前修订号仍为 12 才提交,并推进版本”。第一个更新成功后,第二个会发生条件冲突;它需要重读当前状态,再决定如何合并或重新计算,而不是照着旧快照重试覆盖。
版本检查必须与写入在存储端原子完成。本地先比较版本、随后无条件写入,之间仍可能被其他任务修改。进程内可以由单一协调者串行提交;持久化场景可使用数据库事务或条件更新,不要求一开始就引入分布式锁平台。
状态合并也不能代替业务幂等。两份相同通知即使只在 State 中保留一份,外部可能已经发送了两次;真正的副作用还需明确执行责任和业务幂等控制。
4. 状态放在哪里,怎样取回上下文
可以区分三种用途:运行状态保存任务目标、分支进度和结果索引;原始材料或产物保存长文、文件和详细工具输出;长期记忆保存经确认、跨任务仍有意义的信息。它们可以由同一套存储承载,不必物理上各建一个系统。
同进程短任务可以直接传参数与返回值,由编排器维护状态。需要中断恢复时,配置相应检查点或数据库后端;向量检索适合找相关历史,不能替代精确定位当前任务状态和版本。SSE、WebSocket 等进度通道可以展示变化,持久状态仍需由明确的存储维护。
每次调用模型时,再按当前步骤从这些信息中选择必要部分。共享状态保存了什么,与某个 Agent 这次实际看到什么,是两回事。 长结果可以按引用读取,状态变化也可以在下一次调用前刷新,不需要把所有分支的每次变化都立即广播给所有模型。
常见追问
主子 Agent 是直接共用全部 State 吗?
取决于框架和组装方式。可以共享部分键,也可以通过适配节点显式转换输入输出。研搜参考环境中的子 Agent 会以任务描述开始自己的消息历史,部分非私有状态字段另行传递和合并;设计时应检查实际传递的字段,而不能只根据“子 Agent”判断完全共享或完全隔离。
两个 Agent 同时改同一个文件怎么办?
优先明确一个写入者,其他分支交付建议、补丁或独立产物。如果确实需要并行修改,可以拆到不同文件或隔离工作副本,汇总时检查基线版本、冲突和验证结果。把文件路径放在共享 State 中,并不会自动防止覆盖。
Schema 标成 private,就能保证其他 Agent 看不到吗?
Schema 可以约束节点的输入和输出接口,但不等于底层访问控制。日志、流式输出或共享存储仍可能暴露字段;例如 LangGraph 的私有通道不应被理解成安全沙箱。敏感数据需要在传入节点、工具访问和对外展示的实际边界上控制。
怎样验证同步规则有效?
用明确场景检查:两个分支并发提交时都能保留,重放结果不重复追加,用户改目标后旧结果不覆盖新版,必需分支失败时不会被当作成功,不同用户和任务不会串数据。再检查每个 Agent 实际收到的输入及最终产物,不能只看共享字典里出现了全部键。
对应教程
- LangGraph API:图与状态:阅读局部状态更新、逐字段 Reducer、
add_messages和自定义合并边界,理解并行节点的结果怎样进入共享 State。 - LangGraph 高级特性:阅读线程内检查点与跨线程 Store 的职责,区分运行状态恢复和长期信息复用,并按实际后端决定持久化能力。
参考资料
- 国内:JavaGuide:多 Agent 系统:参考公共任务信息、角色结果槽、原始产物引用和单一归并写入者,说明共享范围与并发冲突如何落到数据结构。
- 国内:zero2Agent:多 Agent 协作:参考分层共享、读写职责和交接摘要,解释为什么既不能广播完整历史,也不能只传最后一句话。
- 国内:WeThinkIn:Agent 记忆与上下文工程:参考消息与分支标识、来源和版本检查,以及读取和持久写入分离,说明重复、迟到和过期信息怎样处理。
- 国外:LangChain:LangGraph Graph API:依据共享 State、局部更新与逐字段 Reducer 的机制,说明正文中消息 ID 合并及私有通道的边界,区分线程安全与业务合并。
- 国外:AWS:Optimistic locking with version number:参考存储端按预期版本执行条件更新、冲突后重读的机制,解释版本号为什么必须与原子写入配合;不要求采用特定数据库。
相关面经
21 篇字节跳动
后端开发实习生多个 Agent 之间的上下文,你是怎么协调的?
药明康德
AI 数据多智能体系统中,上下文以及memory记忆问题你们是如何解决的?
百度
大模型算法介绍大模型双层记忆机制的设计逻辑,在多智能体共享上下文、共用任务场景下,如何保障全局数据的一致性与唯一性?
收钱吧
AI 应用开发Memory 如何与多 Agent 架构结合?
腾讯
大模型算法多智能体(Multi-Agent)协作场景下,多个Agent的通信机制是什么?如何统一管理全局上下文与对话记忆?
展开剩余 16 篇面经
凯通科技
软件开发项目中多agent的编排上下文是通过什么进行沟通
字节跳动
AI应用开发多 Agent 协作系统如何设计?Agent 之间的通信机制和状态共享如何实现?
浦银金科
AI Agent开发工程师多智能体系统的记忆管理是怎么做的?如何避免记忆爆炸?
公司未注明
### 3. 了解目前主流的 Multi-Agent 框架吗?如果将你的心理咨询 Agent 拆分,你认为状态同步的难点在哪?
阿里巴巴
Agent 应用开发工程师字节跳动
全栈开发工程师(Agent)多agent系统,agent之间如何协作?多agent之间的上下文怎么管理?任务状态如何去进行传递?
阿里巴巴
Agent项目一,子Agent之间的上下文怎么传递?
阿里巴巴
AI 研发工程师是如何共享上下文的?
小红书
AI 应用开发工程师多agent协作,如何做上下文管理?怎么共享上下文?
蚂蚁集团
AI 应用开发多智能体改的架构,怎么上下文管理,传递消息,共享记忆
阿里巴巴
AI 应用研发多Agent如何协同,为什么用多Agent
腾讯
AI 应用开发实习生多 Agent 系统采用什么架构?任务如何编排?
小红书
Agent 算法工程师上下文是共享的对吧?具体会共享哪些信息?
荣耀
大模型算法工程师多个agent之间是如何进行信息交互的?
拼多多、蚂蚁集团
多agent上下文如何处理
阿里巴巴
AI Agent 开发在多 Agent 协作系统中,不同 Agent 之间的记忆如何实现隔离与共享?如何避免不同工具间的上下文污染?






