把记忆焊进模型内部:MemT-1.0 让"记忆"不再是外挂,而是前向计算的一部分

你有没有这种感觉——现在的 Agent 记忆方案,不管是 Mem0、MemOS 还是各种 RAG,说到底都是"外挂硬盘":模型每次回答前先去硬盘里翻一圈,翻到什么算什么。硬盘越来越大,翻得越来越慢,而模型自己对"记住的东西"其实一无所知。

这周看到的这篇 MemT-1.0(arXiv:2610.26825),走了一条完全不同的路:把记忆直接做成模型前向计算的一部分。历史信息不进 context,而是写进一组随交互不断演化的矩阵状态里;回答问题时,模型通过一路并行的"记忆注意力"去读这个状态。128K 历史下端到端推理加速约 1.86 倍,持久化存储相比全量 KV cache 缩小约 66 倍,而且在 11 个记忆基准上把所有参数化记忆 baseline 甩开 9 到 13 个点。

说实话,我第一反应是"这不就是线性注意力换皮吗"。读完之后想法变了——它更像是一套完整的"记忆原生模型"工程体系:架构、训练范式、分布式基础设施、scaling 规律、Agent 落地,全都给齐了。66 页的技术报告,诚意是足的。

核心摘要:记忆基础模型 MemT-1.0 用 Gated DeltaNet-2 风格的稳定 token 级更新机制替代了上一代 Metis 的 token 选择策略,并提出 Mixture-of-Storage(MoS)把单块记忆扩展成多个"记忆专家"来扩容量。通过骨干准备 + 持续预训练 + 蒸馏式后训练的两阶段流水线(34B token 数据),MemT-1.0-Nano(36B 总参/3B 激活/10M 动态记忆)和 MemT-1.0-Flash(288B/17B/336M)在参数化记忆方法中平均分排前二,与检索增强方法的差距明显收窄,同时通用能力基本无损。在 SWE-bench Verified 上,把检索到的过程性经验写进原生记忆后,pass^3 从 54.00% 提到 62.80%——比把经验塞进文本 context 还高 1 个点。这是"记忆从检索走向内化"的一次相当扎实的工程验证,虽然离文本记忆系统的上限还有距离。

论文信息

  • 标题:MemT-1.0: Towards Memory-Native Evolution
  • arXiv:https://arxiv.org/abs/2610.26825 (v2,2026-10-20)
  • 作者:Zhiyu Li、Zeyu Zhang、Linyun Liu 等(70+ 作者的大团队,致谢中包括 Shanghai Kupas Technology 与 INESA 的支持)
  • 前作:Metis(arXiv:2607.26760),首个提出"记忆基础模型"概念的工作

🎯 问题:记忆到底该放在哪?

现在给 LLM 加记忆,主流就两条路,各有各的难受。

文本记忆(Full Context / RAG / Mem0 / MemOS 这类系统):把历史以文本形式塞回 context。优点是保真度高——证据原封不动摆在模型面前。代价是 context 越滚越大,prefill 成本线性上涨,KV cache 存储随历史长度线性膨胀。长到 128K 以上,体验和账单都开始失控。

参数化记忆(Temp-LoRA、Doc-to-LoRA、MemoryLLM、ICAE 这类):把历史信息压进参数或辅助模块。存储固定、查询快,但一直以来的问题是——记不住。细节在压缩过程中丢得七零八落,所以这类方法在记忆基准上普遍被文本方法吊打。

MemT-1.0 想干的事,是把第二条路真正做通:让记忆像"推理能力"、"多模态能力"一样,变成基础模型内生的能力,而不是部署时挂上去的外设。作者管这个叫 memory-native evolution(记忆原生演化)——模型权重在部署前定型,记忆状态在交互中持续演化,两条通道共同塑造模型行为。

这个愿景本身不新鲜,新鲜的是他们真把整套系统跑通了,而且敢于把短板摊开在 Limitations 里讲。


🏗️ 架构:每个 Transformer block 挂一块"记忆外挂",但共享前向传播

MemT-1.0 架构图

图 4:MemT-1.0 架构。左侧是整体结构——选定的 Transformer block 各挂一个 Native Memory Block;中间是每个 block 内 Original Attention 与 Memory Attention 并行相加;右侧上半是存储流程(K/V 投影 + 擦除/写入/遗忘三个门 + 稳定 token 级 GDN-2 更新),下半是利用流程(Q 投影读记忆矩阵 → RMSNorm → SoftCapSiLU 输出门 → 跨通道拼接)。左上绿色是动态 Local Memory(每条轨迹独立、新轨迹清零),右上橙色是可训练的 Hyper Memory(离线训练、在线冻结)。

一句话讲清楚核心设计:注意力输出 = 原始注意力 + 记忆注意力,两路并行,相加后继续走 backbone 原来的计算。

\[ \mathbf{A}^{(l)}_{t,k} = \mathbf{A}^{(l)}_{\text{ori},t,k} + \mathbf{A}^{(l)}_{\text{mem},t,k} \]

骨干网络的 Pre-Attention / Attention / Post-Attention 一概不动,能力完整保留;所有新东西都在 MemoryAttention 这一路里。这个"只加不改"的原则挺聪明的——backbone 冻结后还能直接当蒸馏老师用(后面讲训练时会看到这件事多关键)。

记忆本身分两层:

  • Local Memory(局部记忆):动态状态 \(\mathbf{M}_t^{(l)} \in \mathbb{R}^{H_{kv} \times d_k \times d_v}\),多通道矩阵,随每轮交互更新,新轨迹清零。这就是"记住的内容"本身。
  • Hyper Memory(超记忆):所有可训练的投影矩阵和门控参数 \(\phi\)(Q/K/V 投影、擦除门、写入门、遗忘门、输出门),离线训练好,在线冻结。这是"怎么记、怎么读"的能力。

存储:稳定版 GDN-2 的 token 级更新

相比 Metis 的 token 选择机制,MemT-1.0 改用基于 Gated DeltaNet-2 的逐 token 更新。核心更新式长这样:

\[ \tilde{\mathbf{M}}_{t,i,h}^{(l)} = \left[\mathbf{I} - \mathbf{U}_{t,i,h}^{(l)\top}\mathbf{U}_{t,i,h}^{(l)}\right] \cdot \mathbf{D}_{t,i,h}^{(l)}\tilde{\mathbf{M}}_{t,i-1,h}^{(l)} + \mathbf{U}_{t,i,h}^{(l)\top}\left(\bm{\omega}_{t,i,h}^{(l)} \odot \mathbf{V}_{t,i,h}^{(l)}\right) \]

其中 \(\mathbf{U} = \sqrt{\bm{\beta}} \odot \mathbf{K}\) 是擦除门调制后的归一化 key,\(\mathbf{D}\) 是遗忘门给出的对角衰减,\(\bm{\omega} \odot \mathbf{V}\) 是写入门调制后的 value。

看懂这个式子其实不难:\(\mathbf{I} - \mathbf{U}^\top\mathbf{U}\) 是"先从旧记忆里擦掉与新 key 方向相关的成分",后面一项是"再写入新 value"——先擦后写,Delta 规则的经典套路。MemT-1.0 相对原版 GDN-2 的改动是引入了一个稳定机制(把擦除项重构成 \(\sqrt{\beta}\odot K\) 的形式),防止记忆状态在长程更新中发散,细节在附录 C。

为什么要 token 级而不是 turn 级?消融实验给了硬答案:换成 turn 级聚合,平均分从 46.97 掉到 40.98,掉了 5.99 个点——是所有架构变体里伤害最大的一刀。逐 token 更新能在同一轮内不断修正刚建立的关联,turn 级一锅端就做不到了。

利用:矩阵读出 + 软帽门控

读记忆就是一次矩阵乘法:

\[ \mathbf{R}_{t,h}^{(l)} = \frac{\mathbf{Q}_{t,h}^{(l)}\mathbf{M}_{t,h}^{(l)}}{\sqrt{d_k}} \]

然后过 RMSNorm、乘上 SoftCapSiLU 输出门(\(\tau=2\) 的 tanh 软帽,防激活爆炸),跨 \(H_q\) 个通道拼接,得到记忆注意力输出。注意这个读出的计算量与历史长度完全无关——状态尺寸是固定的。这是后面所有效率优势的根源。

MoS:把记忆块扩展成"记忆专家"

单块记忆容量有限,怎么办?作者从 MoE 借了个思路,提出 Mixture-of-Storage:把每个记忆块扩成 \(E\) 个并行的记忆专家,每个专家有独立的动态状态和超记忆参数。

MoS 的结构(论文图 5)很直白:存储路由与利用路由共享一组可学习的"专家地址" \(\mathbf{C}^{(l)}\),但各自学独立投影,所有专家稠密参与计算。跟传统稀疏 MoE 不同,MoS 是稠密路由——每个专家都参与计算,路由概率决定信息往哪个专家写、从哪个专家读。存储路由概率调制擦除门和写入门,利用路由概率对各专家的读出做加权和。两个路由共享同一个可训练的专家地址矩阵 \(\mathbf{C}^{(l)} \in \mathbb{R}^{E \times d_{\text{addr}}}\),语义对齐但投影各自学。

这个设计在 scaling 实验里被验证有效:4 专家对比 2 专家,在 5500 步后训练时平均分高 2.69 个点,LoCoMo 高 2.20 个点,而且收益随训练推进在扩大。


🔧 训练:先备好骨干,再让记忆模块"蒸馏"全上下文老师

训练流水线有三个层次,每层都有值得说的决策。

骨干准备(Backbone Preparation)。作者先讲了一个挺扎心的发现:在骨干自己的验证样本上做后训练,本质是对已有分布的重加权——骨干偶尔能做对的任务提升明显,但八次尝试全错的任务,训完也只有 1.6% 到 4.0% 的准确率。而给一个硬知识探测集补上相关事实后,准确率从 27% 跳到 91%。这说明后训练提升的是"可靠性",缺的信息得靠记忆来补——这正是原生记忆的生态位。

于是他们对 DeepSeek-V4-Flash 做了一套"能力画像 → 干预归因 → 按类合成"的三步后训练:可靠任务做回放,偶尔做对的任务用骨干自己通过程序验证的采样,缺流程/惯例的用引导采样或强模型示范,纯知识缺口留给记忆去补。最终混合 126.5K 条轨迹(2.4B token),骨干在六个监控基准上平均提升 6.3 个点。

骨干准备后的 Agentic 性能

图 2:准备后的骨干(MemT-1.0-Flash,284B 总参/13B 激活,此时还没加记忆模块)在六个 Agentic 基准上对比更大的开源模型。SWE-bench Multilingual 上 72.00 超过 GLM-5.3 Flash(70.33,320B/18B)和 DeepSeek-V4 Pro(68.33,1.6T/49B);IFBench v2 上 81.67 更是全场最高。当然 Claude Opus 5 在多数项仍领先,差距要认。

两阶段记忆训练。CPT 阶段用 20B token 通用语料,把序列切成 2K token 的段,段内做因果语言建模、段间靠记忆状态传递信息,CE 损失。后训练阶段用 14B token 的记忆任务数据(记忆原生语言建模、存储/利用监督、长程记忆任务三类),统一成"context 写入记忆 → query → answer"格式,用 KL 蒸馏:冻结的骨干拿着全文本历史当老师,学生只能靠记忆状态,对齐两者的 next-token 分布(Top-64 截断 + 温度 1)。部分语料来自 MemOS 匿名化的真实交互数据。

这个 off-policy 蒸馏框架我觉着是整个训练里最漂亮的设计:老师的条件分布里天然包含"如何从历史取信息"的行为模式,学生要逼近它就必须学会把等价信息塞进记忆状态再读出来。历史 token 不直接吃 loss,但梯度会穿过读出和写入链路回传——模型自己学会"该留什么"。


📊 实验:参数化记忆里排第一,但离文本记忆还有差距

记忆能力主实验

记忆基准表现

图 1:六个代表性记忆基准上的表现。左半灰色是文本记忆方法(DeepSeek-V4-Flash 与 Qwen3.6-35B-A3B 两种骨干各跑一遍),右半蓝色系是参数化记忆方法。LoCoMo 上 MemT-1.0-Flash 65.1、Nano 57.5,碾压 Doc-to-LoRA(24.5/26.7)、δ-mem(20.3)等参数化方法,但离 MemOS 的 85.7 还有明显距离;ImplicitMemBench 上 Flash 49.2 反而接近 DenseRAG 的 55.0/52.2;PerMemSafe 上 Nano 38.7 甚至超过 MemOS 之外的多数文本方法。

11 个基准按轨迹长度分四组的完整结果(Table 2 关键数字):

方法 类别 平均分(11 基准)
MemOS(DS / QW 骨干) 文本记忆 68.55 / 68.46
Full Context(DS / QW) 文本记忆 64.98 / 66.27
Mem0(DS / QW) 文本记忆 65.53 / 65.98
DenseRAG(DS / QW) 文本记忆 57.28 / 56.49
Graphiti(DS / QW) 文本记忆 49.43 / 45.72
MemT-1.0-Flash 参数化 50.60
MemT-1.0-Nano 参数化 46.97
Temp-LoRA 参数化 38.08
δ-mem 参数化 31.20
Doc-to-LoRA 参数化 30.93
LiveMem-RL 参数化 29.74
MemoryLLM 参数化 25.26
SHINE 参数化 25.55
ICAE 参数化 22.87

两个值得说的观察。

其一,Flash 比最强参数化 baseline(Temp-LoRA 38.08)高 12.5 个点,Nano 高 8.9 个点,这个幅度在参数化记忆赛道里是断代式的。而且在超长历史组(LongMemEval-S、MemoryAgentBench、BEAM-1M)上同样领跑参数化组。

其二,但别高潮——跟文本记忆系统比还差得远。MemOS 平均 68.5,MemT-1.0-Flash 50.6,差了近 18 个点。BEAM-1M 上 MemOS 72.59,Flash 只有 37.04。作者自己也承认:文本系统在回答时能看到原始证据,而 MemT-1.0 要从不断演化的压缩状态里还原细节,保真度是硬伤。这个 gap 不是工程调优能抹平的,是固定容量状态的结构性代价。

通用能力:噪声设定下基本无损

Table 3 的设定我觉得挺良心——不是干净地测通用能力,而是先往记忆里灌无关信息再测,模拟真实使用中记忆被污染的情况。结果:Flash 相对骨干平均变化 0.0(BigCodeBench-Hard 涨 2.0,MMLU-Pro 跌 1.8);Nano 平均跌 0.9 个点,最大伤口在 LiveCodeBench v6(跌 5.8 个点)。有意思的是 BigCodeBench-Hard 反而涨——同一能力域内两个基准一涨一跌,说明记忆干扰的影响是任务级的,不能一概而论。

消融:token 级粒度 > 更新规则细节

Table 4 的消融信息量很大,挑重点:

变体 平均分 相对 Nano
MemT-1.0-Nano(完整版) 46.97 0.00
去掉稳定机制(原版 GDN-2) 46.43 降 0.54
换成 GDN 46.72 降 0.25
加双向编码(BE) 45.43 降 1.54
换 turn 级更新(TL) 40.98 降 5.99
无 CPT 直接后训练 44.85 降 2.12
只有 CPT 无后训练 36.28 降 10.69

几个判断:更新规则的精确形式(GDN vs GDN-2 vs 稳定版)居然不太重要,差距都在 0.5 个点以内——真正值钱的是 token 级粒度和后训练阶段。后训练贡献 10.69 个点,CPT 作为初始化再贡献 2 个多点。双向编码这种看起来更花哨的设计反而负收益,在当前训练预算下不划算。

效率:长历史下的碾压局

推理效率与存储开销

图 3:MemT-1.0-Nano 的效率。上半是端到端延迟(对数轴):128K 历史下 Full Context 30.07 秒、Temp-LoRA 700.82 秒、Nano 16.19 秒;256K 下分别是 94.47 / 1400.88 / 23.69 秒。下半是存储开销:Full Context 在 256K 时要 5.061 GiB 且 1M 直接超限,Temp-LoRA 恒定 172.5 MiB,Nano 恒定 40.00 MiB。

数字值得展开:

  • 端到端延迟:短历史上 Nano 反而更慢(记忆写入要花钱),32K 打平,64K 加速约 1.20 倍,128K 约 1.86 倍,256K 约 3.99 倍。优势主要来自历史准备阶段——增量式写记忆比全量 prefill 便宜。
  • 查询 TTFT:这才是更性感的指标。历史准备完成后,Nano 的查询首 token 延迟稳定在 104 到 112 ms,不随历史长度增长;而 Full Context 在 128K 时 257 ms、256K 时 445 ms。对应 2.44 倍和 4.19 倍的加速。
  • 存储:每条轨迹的持久状态是固定 40 MiB,128K 历史下比 Full Context 的 KV cache 小约 66 倍。Temp-LoRA 也是恒定存储但体积是 Nano 的 4 倍多。

不过要泼一盆冷水:这些效率数字是拿 HF 推理在双卡上测的,跟生产级的 vLLM/SGLang 全上下文服务比,绝对值参考意义有限。优势的量级方向是可信的,具体倍数别当真。

Scaling:记忆能力和容量都在涨

两个 scaling 发现。数据维度上,后训练两个 epoch 内平均分从 36.65 一路涨到 46.80、LoCoMo 从 40.39 涨到 57.53,第二 epoch 重复看同样的数据仍在涨——记忆能力远没饱和。容量维度上前面提过,4 专家稳定优于 2 专家且差距随训练扩大。这俩结果合在一起的含义是:记忆容量确实是一个可以像模型参数、数据量一样去 scale 的新维度。这对后续工作是个重要的通行证。

另外低秩分解实验(图 10)也有意思:对记忆状态做在线 SVD 截断,LoCoMo 上保留更多奇异值单调变好,PersonaMem 上中间秩就饱和——记忆状态确实有冗余,但压太狠保真度就崩,和前面"保真度是硬伤"的判断互相印证。


🤖 Agent 落地:经验写进记忆,比塞进 context 还管用

这是我觉着全文最有想象力的部分。现在做经验复用的 Agent(比如各种 experience memory 方案),都是把检索到的经验文本塞进 context——本来就臃肿的执行 context 雪上加霜。MemT-1.0 换了个姿势:经验单独做一次前向写入记忆状态,任务 context 里一个字都不留。

经验引导的 Agentic 框架

图 11:三步流程。一、用 BGE-M3 从经验库(1040 条可复用编码经验,从 Scale-SWE 的 41057 条成功轨迹归纳而来)按任务描述检索经验;二、选择存储时机——Before Execution(开局就写)或 Harness-Triggered(执行中检测到命令失败/空观察/重复操作等断点信号时才写,每个 episode 最多写一次);三、经验以文本形式留在 context,或写入 MemT-1.0-Nano 的原生记忆,后续每一步动作都能读到。

训练数据的构造方式是反事实执行:让 Qwen3.6-35B-A3B 先跑,失败轨迹在断点处注入不同经验组合重新执行,能通过测试的"前缀 + 经验 + 成功续写"留下当训练样本。18820 条原始轨迹、199500 个断点干预变体、45481 条成功续写、最终 42403 条样本。训练时只更新超记忆块,经验写入记忆、断点前关闭记忆读取、断点后开启读取并用蒸馏监督成功续写。

SWE-bench 结果(三次独立运行,关键数字):

基准 / 时机 方法 pass^3 平均成功率 pass@3
Verified / Before 无经验 54.00 66.07 77.60
Verified / Before 文本经验 61.60 68.87 76.40
Verified / Before 原生记忆 61.60 69.33 77.40
Verified / Triggered 无经验 54.00 66.07 77.60
Verified / Triggered 文本经验 61.80 69.13 76.80
Verified / Triggered 原生记忆 62.80 69.73 77.80
Multilingual / Triggered 无经验 45.33 60.00 73.67
Multilingual / Triggered 文本经验 53.67 63.00 72.67
Multilingual / Triggered 原生记忆 55.33 63.56 73.00

最该盯住的是 Harness-Triggered 设定下 Verified 的 pass^3:原生记忆 62.80%,比无经验高 8.8 个点,比文本经验还高 1 个点。记忆化的经验不仅没有信息损耗,反而略优于"白纸黑字摆在 context 里"——可能的原因是记忆读出作为一种软约束,不像文本那样挤占注意力、干扰执行上下文。

但也有个细节别漏看:pass@3 基本没动(77.60 → 77.80)。经验提升的是重复执行的一致性和稳定性,而不是拓宽模型的能力上限。这跟前文"后训练提升可靠性、不创造新能力"的判断完全自洽——经验内化其实是把"偶尔做对"变成"稳定做对"。

案例研究里那个 Django 日期解析的例子挺生动:无经验的 Agent 找到代码直接改,有经验的(无论文本还是记忆)都先写复现测试再动手,而记忆版还在改完后主动回访边界条件做了额外验证。过程性经验确实改变了行为模式。


💡 我的判断

亮点:

  1. 完整度罕见。从更新规则的数值稳定性、MoS 扩容、蒸馏训练、chunked WY 算子、窗口化执行(2 步窗口省 80% 峰值显存只多付 1.6% 时间)、到有状态服务的轨迹隔离——这是一套能真跑的系统,不是概念验证。66 页里附录占了大量篇幅,该有的细节基本都在。
  2. token 级更新 + 蒸馏训练的实证结论有价值。"更新粒度比更新规则重要"、"后训练贡献是 CPT 的五倍"这类结论,对做记忆模型的人是直接能用的经验。
  3. Agent 经验内化的方向感对了。pass^3 超过文本经验这个数字,第一次让我觉得"参数化经验"不只是省 context 的妥协方案,而可能是更好的载体。

问题:

  1. 跟文本记忆的差距还是太大了。平均 18 个点、BEAM-1M 上差 35 个点,这个鸿沟决定了 MemT-1.0 目前替代不了 RAG——它更适合的场景是"经验、偏好、流程"这类允许有损压缩的软记忆,而不是"逐字回忆三个月前那句话"的硬记忆。作者自己在 Limitations 里承认固定容量状态的保真度代价,态度是坦诚的。
  2. 效率对比的工程公平性存疑。HF 推理、并发 1、batch 1 的设定下测出来的倍数,换到真实服务栈会缩水多少不好说。
  3. 经验库是外挂的。Agent 框架依赖外部构建的经验库和 BGE-M3 检索,"自主获取经验、持续巩固到超记忆"这条闭环还没闭上——作者也把这留给了未来工作。所以"self-evolving"目前更多是愿景而非已实现的能力。
  4. 记忆状态的黑盒性带来调试难题:经验写进去之后行为变了,你很难归因是哪条经验在起作用。论文没讨论这个,但工程落地时一定会撞上。

跟同期工作的位置:参数化记忆这条线上,Temp-LoRA、Doc-to-LoRA 是"为每段历史临时训练 adapter",MemoryLLM/ICAE 是"压缩进固定参数",MemT-1.0 更接近第三条路——状态化记忆 + 学习到的读写策略,思想血缘上接的是 DeltaNet/线性注意力这一脉,但把它从"序列建模层"改造成了"跨会话持久记忆层"。平均分把前两类甩开十几个点,说明这条路的工程量堆到位了是真能打的。

如果你在做长期陪伴型 Agent、个性化助手、或者想给 coding agent 加经验复用,这篇值得精读——尤其是第 4 章的基础设施设计和第 7 章的经验注入协议。如果你的需求是高保真的历史检索,那还是老老实实上 RAG,这篇文章自己都告诉你差距在哪了。

记忆原生演化这个方向,MemT-1.0 交出的是第一份像样的工程答卷。下一步要看的是:本地记忆里积累的经验,能不能通过再训练沉淀回超记忆参数——那才是"演化"闭环真正合拢的时刻。


觉得有启发的话,欢迎点赞、在看、转发。跟进最新AI前沿,关注我