ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Agent Memory:从上下文管理到持续学习的完整闭环

Agent Memory:从上下文管理到持续学习的完整闭环

很多 Agent Demo 在第一轮对话里表现很好,到了第二天却像换了一个人:用户偏好没了,项目约定没了,上次失败的路径又被重新走一遍。

这不是模型突然变笨了,而是系统没有把“经历”变成可以被下一次任务使用的状态。

Agent Memory 要解决的,正是这件事。

  1. Memory 不是聊天记录

LLM 的参数里有通用知识,但不会自动写入某个用户刚刚说过的话,也不会因为一次工具调用成功,就永久学会这条流程。没有应用层的持久化机制,下一次会话通常只能看到新的输入、系统提示和有限的上下文。

因此,有知识不等于有记忆。

知识是模型训练阶段获得的通用模式;记忆是某个用户、项目、任务、环境或 Agent 在运行中积累的状态,未来可以重新参与决策。

Agent 一旦开始长时间工作,问题会更明显。它的轨迹通常包含用户消息、计划、工具调用、工具返回、文件内容、失败重试和环境变化。若每一轮都把完整历史重新塞进提示词,成本、延迟和噪声都会上升。

更长的上下文也不是万能药。Lost in the Middle 的研究发现,相关信息出现在长上下文中间时,模型使用它的能力会明显下降;信息在开头或结尾时通常更容易被利用。[1] LangChain 的文档也提醒,过长的历史会让模型被过时或离题内容分散,即使没有超过上下文上限,也可能影响速度、成本和准确率。[2]

LongMemEval 则从长期交互角度测试了信息提取、跨会话推理、时间推理、知识更新和拒答五种能力。它说明,长期记忆不是“体验加分项”,而是长周期 Agent 能否稳定工作的基础能力。[3]

  1. 短期记忆和长期记忆

最简单的理解是:短期记忆服务当前任务,长期记忆服务未来任务。

短期记忆,也叫 thread-scoped memory,通常包括当前对话、任务目标、计划、已完成步骤、工具结果和临时变量。它应该让 Agent 在同一个线程里保持连续性。LangGraph 把这类内容放在 Agent state 中,并用 checkpointer 保存,使线程可以中断后恢复。[2]

长期记忆则跨越线程和会话。它可以是用户偏好、项目事实、历史事件、领域知识,也可以是可复用的做法和失败教训。LangGraph 把长期数据放在可自定义的 namespace/store 中;Mem0 则按 conversation、session、user、organization 等生命周期组织记忆。[2][4]

还有一条容易混淆的分类轴:语义记忆、情景记忆和程序记忆。

  • 语义记忆是事实和关系,例如项目使用 PostgreSQL。
  • 情景记忆是发生过的事件,例如某次升级因为版本冲突失败。
  • 程序记忆是可复用的做法,例如修改 schema 后先跑契约测试。

所以,短期/长期说的是“保存多久、在哪些任务可见”;语义/情景/程序说的是“记住的内容是什么”。一个 Agent 可以同时拥有短期的工作记忆、长期的用户画像、历史事件和项目规则。

  1. 上下文压缩和记忆压缩

两者都叫 compression,但处理的东西不同。

上下文压缩:服务当前这一轮

上下文压缩处理的是即将发给模型的 prompt。常见操作包括删除已消费的工具输出、保留最近消息、把早期历史总结为任务状态、把长日志折叠成关键证据。

Google ADK 将 context compaction 定义为:在 Agent 运行中总结较早的 session history,包括指令、输入和模型回复,让上下文保持紧凑,以降低延迟和成本,同时保留必要信息。[5]

上下文压缩的标准是“下一步还能不能做对”。它通常不应该销毁原始历史。原始消息和工具轨迹应保存在持久层,必要时可以重新检索。

记忆压缩:服务长期存储

记忆压缩处理的是外部 memory store:合并重复记录、抽象稳定事实、降低低价值条目的权重、归档或删除过期内容,甚至改变记忆的表示形式。

它的标准是“长期知识库是否更小、更准、更容易召回”。这通常是有损操作,因此最好保留压缩后的记忆、来源指针、时间和置信度。只有摘要、没有证据的记忆,日后很难判断是否过时或被误解。

  1. 什么是记忆提炼

记忆提炼不是普通摘要,而是把原始经历重编码成未来可以直接使用的记忆单元。

例如,原始记录是:

“我不想要太多背景介绍。上次你把迁移脚本放在部署前运行,导致 staging 数据库锁住了;以后先在临时数据库跑一遍,再开发布窗口。”

这段话至少可以提炼成三类内容:

  1. 用户偏好:回答先给结论,少铺垫。
  2. 情景事件:某次迁移脚本在 staging 造成锁表。
  3. 程序规则:迁移脚本先在临时库验证,再进入发布窗口。

如果只总结成“用户重视数据库安全”,文字更短,却失去了下一次行动真正需要的细节。

一个可靠的提炼过程通常包括:判断是否值得记、拆成原子事实/事件/规则、标注来源和时间、确定作用域、与旧记忆去重或冲突检测,再写入对应的长期记忆层。

A-MEM 的研究采用了类似 Zettelkasten 的思路:新记忆形成带有上下文描述、关键词和标签的结构化 note,并和历史记忆建立关联;新信息还可能触发旧记忆表示的更新。[6]

工程上建议把“证据”和“结论”分开。记忆最好能回答:是谁说的、什么时候成立、适用于哪个用户/项目、是原话还是推断、最近一次验证是什么。

  1. 完整循环怎么跑起来

一个可用的闭环至少包含八步:

  1. 观察:接收输入、工具结果和环境变化,保存原始事件。
  2. 维护短期工作区:记录当前目标、约束、进度和最新状态。
  3. 压缩上下文:接近 token 阈值时删噪声、保状态、保关键证据。
  4. 记忆提炼:识别值得跨轮次或跨会话复用的事实、事件和做法。
  5. 合并更新:去重、处理冲突、写入时间和失效状态。
  6. 分层存储:profile、episodic、procedural、raw log 各自放在合适位置。
  7. 按任务召回:结合当前问题、实体、时间、权限做检索和重排。
  8. 行动并验证:Agent 根据记忆做事,结果和用户纠正成为下一轮证据。

可以把它写成一句话:

观察 → 短期工作 → 上下文压缩 → 记忆提炼 → 合并更新 → 分层存储 → 召回 → 行动 → 结果反馈。

这里最容易忽略的是最后一步。记忆不是写进去就结束了。新证据可能让旧规则失效,用户可能缩小记忆适用范围,工具结果也可能证明先前的推断是错的。没有验证和更新,长期记忆只会变成越来越自信的历史误差。

  1. 业界方案怎么区分

Letta / MemGPT:Agent 运行时

MemGPT 的起点是虚拟上下文管理:把有限上下文看成快速内存,把外部存储看成慢速内存。[7] 当前 Letta Agent SDK 把 Agent 记忆表示为 MemFS 中的版本化文件:system/ 下的记忆每轮进入系统提示,其他文件由 Agent 按需读取;dreaming 可以在后台复盘近期会话并更新记忆。[8]

它适合长期存在的个人助理、编码 Agent 和数字协作者。它最强的地方不是“某个向量库”,而是定义了一个有状态 Agent 如何管理自身上下文。代价是运行时和记忆编排的绑定更深,需要严格设计哪些内容允许常驻、哪些内容允许 Agent 修改。

Mem0:通用记忆层

Mem0 更像接入现有 Agent 的记忆基础设施:从消息中抽取内容,写入或更新记忆,再按当前查询检索。其文档提供 user、agent、app、run 等 scope,方便隔离、共享和清理;官方还描述了向量与图存储的组合方式。[4]

它适合客服、个性化助手和跨框架应用。论文报告了在特定评测配置下的准确率、延迟和 token 成本结果,但这些数字不能直接当作所有业务的保证。[9]

Graphiti / Zep:时间知识图谱

Graphiti 把记忆建模成随时间变化的 Context Graph:节点是实体,边是带时间元数据的事实,支持 episode 增量处理、事实失效和混合检索;Zep 是面向企业规模的托管产品。[10]

如果问题是“用户喜欢什么”,profile 或向量记忆通常够用;如果问题是“客户在某个时间使用哪个合同版本、谁批准过、后来何时变化”,图和时间轴会更自然。代价是实体消歧、图建模和运维更复杂。

LangGraph:可恢复工作流

LangGraph 的核心是 graph state、checkpointer 和跨线程 store。它适合中断恢复、人工审批、故障重试和时间旅行调试。[2] 它给开发者很强的控制力,但不会替你决定什么值得记、如何提炼和怎样解决冲突。

LlamaIndex:文档与 Workflow Memory

LlamaIndex 当前文档推荐 Memory,把短期 FIFO 消息队列与可选的长期 memory blocks 组合起来;旧的 ChatMemoryBuffer 已标记为 deprecated。Memory 可以设置 token limit、flush 比例,并使用 static、fact extraction、vector memory blocks。[11]

如果 Agent 的主要工作是文档、知识库和多工具 Workflow,它的抽象会比较顺手。

Semantic Kernel:Provider 组合

Semantic Kernel 提供 WhiteboardProvider,把需求、提案、决策和行动保存在白板中,以便对话截断后仍能保留关键状态;也支持 Mem0Provider 做跨线程长期记忆,二者可以组合。[12] 但官方文档仍明确标注 Agent Memory 功能为 experimental,所以适合已经在 Microsoft/.NET 生态中的团队,落地时要锁定版本并做回归测试。

托管记忆服务:Vertex AI Memory Bank 与 AgentCore Memory

Google ADK 把 Session、context compaction 和长期 MemoryService 分开。应用可以在会话结束或出现关键信息时把事件写入 Vertex AI Memory Bank,再在下一轮预加载或按需搜索;直接写入还可以启用 consolidation,合并相关记忆。[14]

Amazon Bedrock AgentCore Memory 则提供框架相对独立的托管 API,把短期事件与长期记忆分开,并内置用户偏好、语义事实、会话摘要和情景记忆等策略。[15] 这两类产品适合已经在对应云上运行 Agent、希望减少自建存储与治理工作的团队。代价是云服务绑定与持续费用,而且“托管”不等于不用评测写入和召回质量。

  1. 选型和治理建议

先别问哪个框架“最强”,先问要解决哪一层问题:

  • 只要线程恢复:优先 checkpointer/持久化 state。
  • 要跨会话个性化:接独立记忆层或结构化 profile。
  • 要时间关系和多跳查询:考虑 temporal graph。
  • 要复杂任务的中断、人审和恢复:优先工作流运行时。
  • 要托管抽取、检索和治理:按云环境考虑 Vertex AI Memory Bank 或 AgentCore Memory。
  • 要降低记忆构建成本:采用后台或触发式提炼,不要每轮都调用 LLM。

生产环境至少要做四件事:

  1. 作用域隔离:用户、Agent、组织、工单和临时会话不要共用无边界的记忆池。
  2. 来源与版本:保存原始证据、时间、置信度、有效期和推断标记。
  3. 安全治理:对 Prompt Injection、秘密、PII 和可执行指令做过滤、隔离、审计和删除。
  4. 闭环评测:测试写入、召回、更新、拒答和“召回后是否真的改变行动”,而不是只看向量相似度。

RecMem 的一个启发是:短暂交互先放入低成本的轻量存储,重复出现后再触发 LLM consolidation,并在其评测配置下显著减少记忆构建 token。[13] 记忆建设也需要成本控制和触发策略。

结语

上下文窗口解决“眼前能放多少”;短期记忆解决“当前任务别断片”;长期记忆解决“下次不用从零开始”;记忆提炼解决“经历如何变成可复用知识”;记忆压缩解决“长期知识如何保持小而准”;召回与验证解决“记住的东西能否在正确时机改变行动”。

所以,Agent Memory 的核心不是把系统做得更像人脑,而是建立一条可追溯、可更新、可评测的学习流水线:保留证据,提炼语义,按范围存储,按任务召回,用结果校正。

学AI大模型的正确顺序,千万不要搞错了

🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!

有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!

就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋

📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇

学习路线:

✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经

以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!

我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

返回列表