这篇论文解决了什么问题?
长期的记忆不是“查一次数据库”这么简单,不同的问题需要不同粒度的记忆信息,比如“用户长期喜欢什么游戏?”需要主题信息总结;“用户最近的兴趣发生了什么变化?”需要跨会话轨迹信息。但是传统方法通常把所有记忆都当作一组平铺文本,然后执行一次或多次检索,即使底层有不同类型的记忆,最终模型看到的仍然只是若干检索片段。
这篇论文的核心问题是:能否不再把记忆看成“系统自动塞进上下文的知识”,而是把它变成 Agent 可主动调用、连续决策的 structured action space?
换言之,让 Agent 自己决定:
- 当前问题是否需要记忆?
- 应查询哪种粒度信息?
- 当前证据是否充分
- 是否继续检索或停止并回答。
NapMem 核心架构:记忆金字塔

Figure 1:Overview of NapMem
这篇论文的核心就是构造了NapMem,一个记忆金字塔。如Figure 1所示,它将记忆内容分为了Raw Conversation、Memory Records、Topic Tracks和User Profile这四大类别,用于组织不同粒度的记忆信息。
Raw Conversation 原始对话层:
这是记忆金字塔的最下层,存储信息包括:时间戳、原始对话等等,它是整个记忆系统的证据底座,当高层记忆存在歧义时,智能体需要下钻到 Raw Conversations,检查用户究竟说了什么。
Memory Records:结构化原子记忆层:
Memory Record 不是存储整段对话,而是从对话中抽取出来的一条相对独立、可复用的记忆信息。图中从 Raw Conversations 指向 Memory Records 的箭头写着:extract + reconcile,extract表示从原始会话中抽取有长期价值信息,reconcile表示新抽取的信息要和旧记录比较(是否冲突?是否需要更新?等等)
Topic Tracks:主题轨迹层:
Topic Track 可以理解为某一主题下的跨会话长期档案。例如例如系统可能为同一个用户建立如Research.md、Health.md等等档案,图中使用的是Nate-Entertainment.md,它把与 Nate 娱乐偏好有关的多条记忆(喜欢的游戏、偏好变化等)整合起来。
Memory Records 到 Topic Tracks 之间的箭头写着summarize + file operation,其中summarize表示把多条原子记忆整合成主题叙事,file operation表示对主题文件执行类似文件系统的操作(新建文件、更新文件等等)
User ProFlie:用户画像层
这是记忆金字塔的最上层,是对用户长期信息的最高层概括,包含用户基本情况、长期兴趣方向等等信息。Topic Tracks 指向 User Profile 的箭头写着create / modify,这表示系统会根据主题轨迹创建/修改用户画像、更新长期偏好信息等
NapMem 记忆检索:从“检索记忆”到“导航记忆”
Figure 1右侧展示的是系统推理时的记忆访问过程。
系统构造了五种不同的Memory Tools:Read File、Search Records、Get Records、Get Conv.和Search Conv.
- Read File:读取文件形式的高层记忆
- Search Records:在结构化 Memory Records 中进行语义或关键词检索
- Get Records:根据已知 Record ID 精确获取记录(通常发生在 Search Records 或读取主题文件之后)
- Get Conv.:根据消息 ID 精确读取原始消息
- Search Conv.:在原始对话中搜索
如图Figure 1右侧所示,在接受到一个用户query之后,由Policy-guided Navigation(强化学习中Agent学习到的记忆访问策略)决定该使用哪些工具、该怎么做。这个例子下调用了三个工具最后推理出了答案。
主实验结果:
实验用Qwen3.5-9B模型作为Base Model,使用GRPO算法训练(训练数据从LoCoMo和PersonaMem-v2采样),并且对照组还使用了Qwen3.5-122B和Qwen3.5-397B模型(无RL训练)。

RL奖励函数设计,F表示答案格式是否规范,C表示答案正确与否,U表示是否调用记忆工具回答(调用为1)
memory-intensive tasks Benchmark(评测F1分数和LLM-as-a-Judge分数):
- PersonaMem-v2
- LoCoMo
- LongMemEval
non-memory tasks(评测准确率):
- BFCL-v3
- GPQA-Diamond
- V*Bench

Table 1:Memory-intensive task performance
如Table 1所示,在Memory-intensive task上,经过RL训练的NapMem-9B几乎在所有的Benchmark上都是最好的score,甚至超越了122B和397B的模型。

Table 2:Generalization to non-memory tasks
Table 2展示了NapMem-9B 模型在通用Benchmark上的结果,可以看到经过RL训练的模型效果也是最好的(超过了没有训练的Base Model),并且在GPQA-D上不仅准确率高而且大幅降低了Memory Call的次数。

Table 3:Memory-bank storage size in GiB. Values in parentheses denote storage relative to NapMem.
Table 3展示了实验最后记忆数据存储的大小,以NapMem为基准,可以看到仅仅AgeMem的存储大小比NapMem要小,展示了NapMem强大性能下的Storage efficiency
消融实验:

Table 4:Ablation study on memory access design
Table 4展示了论文的消融实验,做了4个部分的消融:
- 去掉 RL训练,用Base Model
- 去掉主动导航改成被动检索
- 只使用records-only tools检索 Memory Records
- 去掉高层记忆
可以看到,完整的NapMem达到了最好的效果。没有 RL,模型不会有效使用工具;改回被动检索,性能明显下降;高层摘要和底层证据都很重要。
NapMem 的性能来自“多层记忆结构 + 主动导航 + 策略训练”的组合
总结
读完这篇论文之后,我发现现在有关于Agent Memory,大家都抛弃了传统的检索 -> 取top-k -> 交给LLM进行分析这种方式,转而构建一套Memory-tool,通过RL训练模型自己学会调用工具获取记忆,这种方法带给我很大启发。
