AI Agent 的上下文与记忆管理:让对话不丢关键信息

举报
yd_233053815 发表于 2026/11/12 00:30:07 2026/11/12
【摘要】 一、上下文才是真正的瓶颈很多 Agent 用起来“前几轮很聪明,后面就开始跑偏”,原因往往不是模型能力不够,而是上下文被稀释了:关键约束被更长的对话淹没,早期确认过的信息在后文里找不到,重复内容占满了窗口。上下文管理的目标不是“塞进更多信息”,而是让该出现的信息在需要时出现,让过时的信息及时退出。这和数据库的缓存策略很像:容量有限,必须做取舍。 二、先分清三类信息Agent 的上下文通常包...

一、上下文才是真正的瓶颈

很多 Agent 用起来“前几轮很聪明,后面就开始跑偏”,原因往往不是模型能力不够,而是上下文被稀释了:关键约束被更长的对话淹没,早期确认过的信息在后文里找不到,重复内容占满了窗口。

上下文管理的目标不是“塞进更多信息”,而是让该出现的信息在需要时出现,让过时的信息及时退出。这和数据库的缓存策略很像:容量有限,必须做取舍。

二、先分清三类信息

Agent 的上下文通常包含三类内容,它们的生命周期完全不同:

  1. 系统约束:角色、边界、输出格式、禁止事项。这类信息应当稳定、常驻,且优先级最高;
  2. 对话历史:用户与 Agent 的往返消息。它们会持续增长,需要压缩与摘要;
  3. 外部知识:检索到的文档、工具返回结果。它们与当前任务相关,任务结束即可丢弃。

把三类混在一起管理,是上下文混乱的根源。建议在结构上就分开存放,注入时再按优先级组装。

三、压缩:保留结论,丢弃过程

对话变长时,最有效的做法不是逐条保留,而是做“结论化压缩”:

  • 把已确认的事实整理成结构化条目(目标、约束、已决策项、待确认项);
  • 丢弃寒暄、重复确认、失败的尝试过程;
  • 对长文档只保留与当前任务相关的段落。

压缩后的内容应能被机器解析,而不是一段散文。结构化摘要天然适合后续复用。

四、记忆分层:短期与长期分开

把记忆分成两层:

  • 短期记忆:当前任务的上下文,任务结束即清空;
  • 长期记忆:跨任务复用的偏好、事实、经验,需要持久化。

长期记忆的关键是写入标准:不是所有对话都值得记。建议只记录稳定事实(用户偏好、项目约定、已确认结论),并给每条记忆打上来源与时间,便于后续判断是否过期。

五、检索与注入:只给需要的

上下文窗口有限时,“全量塞入”是最差策略。更合理的做法是:

  1. 根据当前问题生成检索意图;
  2. 从长期记忆与外部知识中召回少量高相关内容;
  3. 按相关度与时间排序后注入;
  4. 明确标注来源,让模型知道信息出处。

召回数量要克制:注入十条弱相关内容,不如注入三条强相关内容。

六、冲突与过期:必须显式处理

记忆最大的风险是“旧的错误覆盖新的正确”。常见场景:

  • 用户后来改了需求,但早期约束仍被注入;
  • 外部文档更新了,缓存里的旧版本仍在使用;
  • 两条记忆互相矛盾,模型随机选了一条。

处理原则:

  • 每条记忆带时间戳,冲突时以较新且来源可靠者为准;
  • 关键约束变更时,显式覆盖而不是追加;
  • 定期清理长期未使用的记忆,避免噪声累积。

七、可观测性:让上下文可复盘

上下文出问题时,最难的是复现。建议至少记录:

  • 每次请求注入了哪些记忆与知识片段;
  • 注入内容的来源与时间;
  • 压缩前后的长度变化;
  • 模型最终采用了哪些信息。

有了这些记录,才能判断是召回错了、压缩丢了,还是约束本身没写清楚。

八、小结

上下文与记忆管理可以概括成四句话:分类存放、结论化压缩、按需召回、显式处理冲突。做到这四点,Agent 就能在长对话里保持稳定,不会越聊越糊涂。真正决定体验的,往往不是模型多大,而是你如何组织它看到的信息。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。