Agent Memory 文献追踪:异构存储与经验记忆机制解析
综述背景
在 AI Agent 领域,Memory(记忆)是构建长期对话智能体的核心组件。《Memory in the Age of AI Agents: A Survey》一文将记忆形式化地划分为三个层次:形成、演进和召回。这与早期 Survey《Rethinking Memory in AI》中提出的梳理、索引、更新、删除、检索、整合六大任务框架高度契合。

从方法总结来看,不同工作侧重点各异。对于工程实现而言,异构内容的存储形态尤为关键。

此外,Survey 还强调了一个常被忽视的议题:记忆系统不仅要记录用户信息和事实,更要沉淀 Agent 的经验。这直接关系到 Agent 如何演化,也是本文后续关注的重点。
下文将聚焦于几个典型方案,分析其在具体实践中的做法与优劣。需要注意的是,现有 Benchmark 虽覆盖了该领域的诸多方面,但指标与实际开发中的适用性仍有差距,因此本文侧重方法论分析而非单纯的效果对比。
MemoryBank: 长期记忆的初步探索
MemoryBank 作为早期经典工作,常被用于基准比较。
记忆入库
- 会话总结:针对每日对话,提取关键信息摘要和用户画像描述。
- 全局整合:归总所有用户画像,形成全局用户画像。
- 时间戳与强度:为每日对话和摘要打上时间戳及
callback 强度指标(初始值为 1)。
记忆检索
直接使用当前用户的语义表征进行查询,无额外处理。
记忆更新与遗忘
该方案采用基于记忆曲线的管理方式。每当历史记忆被召回,其 callback 强度 加 1。是否丢弃取决于两个因素:callback 强度 (S) 和上次召回距今的时间差 (t)。丢弃条件为 R > 阈值,其中 $R = e^{t/S}$。
不过该机制存在明显局限:记忆是否被遗忘主要看召回频率,而召回依赖相似度。一些有用但不常用的内容注定会被遗忘;需要知识推理做二度关联的内容,也会因表征不相似而无法被检索到。
ZEP: 时序知识图谱架构
ZEP 提出了一种三层记忆库架构,均以图的形式存储:原始层(Episode)、知识图谱层(Semantic)和信息图聚类层(Community)。其中原始层和信息图聚类层仅与知识图谱层有边连接。
记忆入库
- 一次性初始化:原始消息存入原始层;利用 LLM 提取实体关系三元组存入知识图谱层;通过 LPA 图聚类生成 Cluster 节点存入信息图聚类层。
- 记忆更新:新消息直接存入原始层;提取三元组后查询已有关系,若冲突则将旧知识标记为无效并写入新知识;新知识继承关联节点的标签。
记忆查询
- 召回:将用户消息作为 Query,结合表征检索、BM25 检索及 BFS 图搜索。实验选取 Top-20 节点与边。
- 重排:使用 BGE-reranker 进行重排。
- 整合:将记忆填入 Prompt 模板。

效果评估
在 LongMemEval 上,ZEP 在单轮检索、时序推理、跨 Session 检索及知识更新上均有优势。但在检索 Assistant 信息时表现不如直接使用历史对话,这是因为 ZEP 仅对 User 信息构建了知识图谱层,Assistant 信息仅在 Episode 层记录,且召回时易受干扰。
SGMEM: 句子图记忆
SGMEM 将 User 和 Assistant 的话切分为句子,基于语义相似性构图。查询时以 User Message 为起点,在图上做 1-hop 遍历。
记忆入库
- 设置 chunk_size=N,将对话历史按 N 句切分为 Chunk。
- 将每个 Chunk 内的句子作为图节点,构建归属边和语义相似边。
记忆检索
- 将用户 Message 切分为句子,查找语义相似节点。
- 查询这些节点的 1-hop 邻居。
- 提取 Step 2 和 Step 3 节点所属的 Chunk 作为结果。
记忆整合
使用语义 Re-ranker 对 Chunk 和 Message 的相似度排序,取 Top-k 个拼接成 Context。

需注意实验环境差异,SGMEM 使用的测试模型为 Qwen2.5-32B-Instruct,而 ZEP 使用了 GPT-4o。尽管如此,SGMEM 在 Top-10 Chunk 的综合准确率上仍达到了 70%+,略高于 ZEP 的结果。
MemTree: 分层树结构
MemTree 为 Agent 对话记录建立了 Hierarchical Cluster 结构。分支节点保留内容简述 c,叶子节点挂载记忆内容。
记忆入库
- 每条记忆原文生成语义表征。
- 从根节点开始逐层遍历分支节点的
c表征,计算距离。 - 若找到距离小于阈值的节点,继续向下查找;若最终找到叶子节点,新记忆挂载其上,原叶子变为分支节点。
- 若所有子节点距离均大于阈值,则在当前层级新增叶子节点。
- 挂载后,所有上级节点执行描述更新动作,确保
c包含新记忆信息。
记忆检索
将当前语句转化为检索表征,与树上所有节点的 c 进行相似性检索,不区分层级,配合阈值过滤和 Top-K 排序。
效果
在超长对话场景下,该方法优于全文上下文。特别是当知识线索集中于长对话最后几十段时,全文回答正确率为 76.7%,而本文方法可达 84.2%。

Human-Inspired Episodic Memory: KV Cache 优化
该方法处理的是体外参数记忆(KV Cache),不区分 User 和 Assistant 信息,将 LLM 处理的所有上文视为历史。
核心步骤
- 分块标志:计算 Token 的意外概率,超过阈值的 Token 作为分块标志。
- 边界调试:基于块内部的 modularity 调试边界,Key 向量即为 Modularity 表征。
- 索引生成:用块中累计 Attention Score 最高的 Key 向量作为索引。
- 上下文构建:生成下一句时,用 Query 查得 Top-K 个 KVCache 及其前后块,形成上下文。
Buffer of Thoughts: 经验性记忆
BOT 旨在解决 LLM 成功经验如何沉淀的问题。它将成功结题的 COT 和回答抽象为解题模板,存储于 Buffer 中。
记忆入库
LLM 解决成功后,提炼模板。通过表征相似度检测新增模板,若高于阈值则丢弃,避免冗余。
记忆索引与整合
使用【问题描述器】输出文字对应的表征向量作为检索 Key,匹配后将模板插入提示工程指导模型执行。
PRINCIPLES: 策略记忆
针对引导性对话场景,该方法通过 Role-play 模拟对话,评估策略有效性,提取成功与失败路径的策略。
记忆入库
利用多 LLM 进行 Role-play,采样好策略与坏策略,总结场景、成功策略及失败原因。
记忆整合
召回策略后,通过重写模块微调细节以适应当前场景,再注入上下文。
思考与总结
回顾上述方案,有几个关键点值得深思:
-
记什么比怎么记更重要:在不同场景下,有用的记忆内容差异巨大。例如 Code/Tool Agent 已将记忆升格为 Skill,这对对话 Agent 而言可能并非最佳抽象。核心在于明确任务需求。
-
图搜索的局限:多数方法利用图搜索补充语义检索,但本质上未解决深层推理问题。图结构本身也常由语义表征建立,存在同构性缺陷。若要挖掘潜层信息(如学生认知缺陷),必须引入特定抽象工具,先挖掘出本场景关心的信息。
-
上下文腐烂风险:部分工作在记忆整合上下了功夫,但缺乏对记忆系统长期运行态的考量。如何防止信息整合导致上下文质量下降,仍是待解之题。
-
学术与工程的平衡:学术方法倾向于泛用性,工程方案侧重适用性。实际场景设计中,效用(效果、扩展性、维护难度)远比贴合论文趋势重要。这也解释了为何该领域方法尚未收敛——既要泛用性又要工程简洁,往往难以兼得。
综上,Agent Memory 的设计应回归场景本质,在理论趋势与工程实效之间寻找最优解。

