Agent Memory:从上下文管理到持续学习的完整闭环
发布时间:2026/8/15 12:30:17 作者:尧图编辑部 阅读量:1,286

很多 Agent Demo 在第一轮对话里表现很好到了第二天却像换了一个人用户偏好没了项目约定没了上次失败的路径又被重新走一遍。这不是模型突然变笨了而是系统没有把“经历”变成可以被下一次任务使用的状态。Agent Memory 要解决的正是这件事。Memory 不是聊天记录LLM 的参数里有通用知识但不会自动写入某个用户刚刚说过的话也不会因为一次工具调用成功就永久学会这条流程。没有应用层的持久化机制下一次会话通常只能看到新的输入、系统提示和有限的上下文。因此有知识不等于有记忆。知识是模型训练阶段获得的通用模式记忆是某个用户、项目、任务、环境或 Agent 在运行中积累的状态未来可以重新参与决策。Agent 一旦开始长时间工作问题会更明显。它的轨迹通常包含用户消息、计划、工具调用、工具返回、文件内容、失败重试和环境变化。若每一轮都把完整历史重新塞进提示词成本、延迟和噪声都会上升。更长的上下文也不是万能药。Lost in the Middle 的研究发现相关信息出现在长上下文中间时模型使用它的能力会明显下降信息在开头或结尾时通常更容易被利用。[1] LangChain 的文档也提醒过长的历史会让模型被过时或离题内容分散即使没有超过上下文上限也可能影响速度、成本和准确率。[2]LongMemEval 则从长期交互角度测试了信息提取、跨会话推理、时间推理、知识更新和拒答五种能力。它说明长期记忆不是“体验加分项”而是长周期 Agent 能否稳定工作的基础能力。[3]短期记忆和长期记忆最简单的理解是短期记忆服务当前任务长期记忆服务未来任务。短期记忆也叫 thread-scoped memory通常包括当前对话、任务目标、计划、已完成步骤、工具结果和临时变量。它应该让 Agent 在同一个线程里保持连续性。LangGraph 把这类内容放在 Agent state 中并用 checkpointer 保存使线程可以中断后恢复。[2]长期记忆则跨越线程和会话。它可以是用户偏好、项目事实、历史事件、领域知识也可以是可复用的做法和失败教训。LangGraph 把长期数据放在可自定义的 namespace/store 中Mem0 则按 conversation、session、user、organization 等生命周期组织记忆。[2][4]还有一条容易混淆的分类轴语义记忆、情景记忆和程序记忆。语义记忆是事实和关系例如项目使用 PostgreSQL。情景记忆是发生过的事件例如某次升级因为版本冲突失败。程序记忆是可复用的做法例如修改 schema 后先跑契约测试。所以短期/长期说的是“保存多久、在哪些任务可见”语义/情景/程序说的是“记住的内容是什么”。一个 Agent 可以同时拥有短期的工作记忆、长期的用户画像、历史事件和项目规则。上下文压缩和记忆压缩两者都叫 compression但处理的东西不同。上下文压缩服务当前这一轮上下文压缩处理的是即将发给模型的 prompt。常见操作包括删除已消费的工具输出、保留最近消息、把早期历史总结为任务状态、把长日志折叠成关键证据。Google ADK 将 context compaction 定义为在 Agent 运行中总结较早的 session history包括指令、输入和模型回复让上下文保持紧凑以降低延迟和成本同时保留必要信息。[5]上下文压缩的标准是“下一步还能不能做对”。它通常不应该销毁原始历史。原始消息和工具轨迹应保存在持久层必要时可以重新检索。记忆压缩服务长期存储记忆压缩处理的是外部 memory store合并重复记录、抽象稳定事实、降低低价值条目的权重、归档或删除过期内容甚至改变记忆的表示形式。它的标准是“长期知识库是否更小、更准、更容易召回”。这通常是有损操作因此最好保留压缩后的记忆、来源指针、时间和置信度。只有摘要、没有证据的记忆日后很难判断是否过时或被误解。什么是记忆提炼记忆提炼不是普通摘要而是把原始经历重编码成未来可以直接使用的记忆单元。例如原始记录是“我不想要太多背景介绍。上次你把迁移脚本放在部署前运行导致 staging 数据库锁住了以后先在临时数据库跑一遍再开发布窗口。”这段话至少可以提炼成三类内容用户偏好回答先给结论少铺垫。情景事件某次迁移脚本在 staging 造成锁表。程序规则迁移脚本先在临时库验证再进入发布窗口。如果只总结成“用户重视数据库安全”文字更短却失去了下一次行动真正需要的细节。一个可靠的提炼过程通常包括判断是否值得记、拆成原子事实/事件/规则、标注来源和时间、确定作用域、与旧记忆去重或冲突检测再写入对应的长期记忆层。A-MEM 的研究采用了类似 Zettelkasten 的思路新记忆形成带有上下文描述、关键词和标签的结构化 note并和历史记忆建立关联新信息还可能触发旧记忆表示的更新。[6]工程上建议把“证据”和“结论”分开。记忆最好能回答是谁说的、什么时候成立、适用于哪个用户/项目、是原话还是推断、最近一次验证是什么。完整循环怎么跑起来一个可用的闭环至少包含八步观察接收输入、工具结果和环境变化保存原始事件。维护短期工作区记录当前目标、约束、进度和最新状态。压缩上下文接近 token 阈值时删噪声、保状态、保关键证据。记忆提炼识别值得跨轮次或跨会话复用的事实、事件和做法。合并更新去重、处理冲突、写入时间和失效状态。分层存储profile、episodic、procedural、raw log 各自放在合适位置。按任务召回结合当前问题、实体、时间、权限做检索和重排。行动并验证Agent 根据记忆做事结果和用户纠正成为下一轮证据。可以把它写成一句话观察 → 短期工作 → 上下文压缩 → 记忆提炼 → 合并更新 → 分层存储 → 召回 → 行动 → 结果反馈。这里最容易忽略的是最后一步。记忆不是写进去就结束了。新证据可能让旧规则失效用户可能缩小记忆适用范围工具结果也可能证明先前的推断是错的。没有验证和更新长期记忆只会变成越来越自信的历史误差。业界方案怎么区分Letta / MemGPTAgent 运行时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 MemoryLlamaIndex 当前文档推荐 Memory把短期 FIFO 消息队列与可选的长期 memory blocks 组合起来旧的 ChatMemoryBuffer 已标记为 deprecated。Memory 可以设置 token limit、flush 比例并使用 static、fact extraction、vector memory blocks。[11]如果 Agent 的主要工作是文档、知识库和多工具 Workflow它的抽象会比较顺手。Semantic KernelProvider 组合Semantic Kernel 提供 WhiteboardProvider把需求、提案、决策和行动保存在白板中以便对话截断后仍能保留关键状态也支持 Mem0Provider 做跨线程长期记忆二者可以组合。[12] 但官方文档仍明确标注 Agent Memory 功能为 experimental所以适合已经在 Microsoft/.NET 生态中的团队落地时要锁定版本并做回归测试。托管记忆服务Vertex AI Memory Bank 与 AgentCore MemoryGoogle ADK 把 Session、context compaction 和长期 MemoryService 分开。应用可以在会话结束或出现关键信息时把事件写入 Vertex AI Memory Bank再在下一轮预加载或按需搜索直接写入还可以启用 consolidation合并相关记忆。[14]Amazon Bedrock AgentCore Memory 则提供框架相对独立的托管 API把短期事件与长期记忆分开并内置用户偏好、语义事实、会话摘要和情景记忆等策略。[15] 这两类产品适合已经在对应云上运行 Agent、希望减少自建存储与治理工作的团队。代价是云服务绑定与持续费用而且“托管”不等于不用评测写入和召回质量。选型和治理建议先别问哪个框架“最强”先问要解决哪一层问题只要线程恢复优先 checkpointer/持久化 state。要跨会话个性化接独立记忆层或结构化 profile。要时间关系和多跳查询考虑 temporal graph。要复杂任务的中断、人审和恢复优先工作流运行时。要托管抽取、检索和治理按云环境考虑 Vertex AI Memory Bank 或 AgentCore Memory。要降低记忆构建成本采用后台或触发式提炼不要每轮都调用 LLM。生产环境至少要做四件事作用域隔离用户、Agent、组织、工单和临时会话不要共用无边界的记忆池。来源与版本保存原始证据、时间、置信度、有效期和推断标记。安全治理对 Prompt Injection、秘密、PII 和可执行指令做过滤、隔离、审计和删除。闭环评测测试写入、召回、更新、拒答和“召回后是否真的改变行动”而不是只看向量相似度。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%免费】