如何解决 Agent 之间上下文丢失?

考查重点:必要事实交接与原文回查。交接目标、硬约束、输入版本和证据引用,关键事实结构化,大材料可回查,接收方核缺项再执行

本题目录

参考答案

核心回答

解决Agent之间上下文丢失,关键是明确交接契约,把关键事实结构化,把长材料保留为可回查产物。不能只传一段自由摘要,也不宜把所有Agent的完整历史互相复制。

派发时传子目标、必要约束、输入字段、上游证据和预期输出;返回时传结果、证据引用、未解决项和状态。编排层校验必需字段与版本,再推进下游。会话状态、任务状态和大文件分别保存,恢复时按同一任务标识重新加载。

先判断丢在了哪里

可以比较发送前、接收后、上下文组装后和模型输出四个位置:消息本来就没带订单ID,是任务构造问题;消息带了但Schema转换漏掉,是适配问题;字段存在却被裁剪,是上下文预算问题;信息完整但结论忽略它,才进一步看模型理解。

追踪时保留task_id、parent_task_id、消息ID、输入输出版本及产物引用,不需要复制全部敏感业务数据。这样能够定位哪次交接、哪个字段开始缺失。

以适配器漏传币种为例,沿着交接过程定位缺口:

flowchart TB
  S["发送:订单 ID、币种、引用"] --> R["适配后:币种缺失"]
  R --> P["校验发现缺口,受控补取"]
  P --> V{"重新校验通过?"}
  V -->|否| F["缺口未解,停止"]
  V -->|是| C["组装后复核字段"]
  C --> O["输出复核对象与币种"]

补取沿用接收方已有访问权限,并设重试上限;补取后仍缺失就报告具体缺口。图只展示适配漏字段,其他丢失位置仍按上文逐站检查。

摘要如何不漏关键字段

以订单诊断为例,订单ID、币种、时间范围、状态和用户约束直接作为必填字段传递;分析过程压成摘要,完整订单列表保存到受控存储,用产物引用和分页读取。下游需要重新核查时读取原始记录,避免摘要成为唯一证据。

接收方校验格式、必填字段和业务一致性,例如退款金额是否与币种、订单对应。字段缺失时返回具体缺口,补取源数据或重新派发;重复生成一段更长摘要不能可靠修复缺失。

共享状态与独立上下文如何并存

每个Agent保留自己的工具轨迹,跨角色只共享协作必要字段。多个分支分别写自己的结果槽,再由归并节点生成最终状态,避免互相覆盖;异步消息通过版本号、幂等键和确认机制处理过期、乱序与重投。

LangGraph可以用checkpointer保存thread范围内的图状态,Store保存应用定义的跨thread数据。子图有自己的状态边界,必要时显式映射输入输出;不是接入checkpointer后所有Agent就自动共享上下文。内存保存器在进程重启后也无法恢复。

常见追问

共享越多越安全吗? 不是。完整广播会增加干扰、成本和串会话风险;按角色提供最小充分信息,并保留授权回查路径,通常更容易定位和修复交接问题。

对应教程

参考资料

相关面经

3 篇

字节跳动

AI Agent 开发工程师
校招秋招一面
查看原面经 →
项目追问
主 Agent 跟子 Agent 上下文怎么传,怎么保证不漏掉关键信息?

名创优品

Agent 开发工程师
实习秋招一面
查看原面经 →
在多 Agent 开发过程中,有没有遇到上下文传递丢失的问题?怎么解决的?

自变量

Agent 平台开发工程师
社招一面
查看原面经 →
追问
怎么解决agent 之间上下文丢失的问题

相关题目

4 题