模型的记忆一直靠外挂文本实现:提示词、上传的文件、Agent 检索的知识库片段。
但一个探索性项目 MemT 1.0 尝试了一种完全不同的思路:摒弃外挂文本,将记忆存入参数。
前两种上下文都是文本,用完就没了。而模型内化记忆只有一个方法:训练。
MemT 的技术报告给了一套完整的解法:将记忆内容写到一个固定大小的记忆状态,具体由模型自己决定。
在 SWE-bench Verified 上,把经验写进记忆后,分数从 54.0% 涨到了 61.6%。

模型记忆,一直靠外挂文本
现在大家说的「模型记忆」几乎都是让模型动态加载记忆文本,由外部程序决定拿哪几段塞进上下文。这种方式有几个问题:
- 记忆方法是确定的:靠预设规则存,未触发规则的内容模型不会记录
- 越用越贵:上下文越来越长,单次对话越来越贵
- 不能真正复用:每次开新会话都需要重新加载 Skill 或文档
也有人试过把历史直接训进参数,比如 Temp-LoRA:拿历史现场训练一个小的适配层。但问题是慢,128K token 的历史从准备到答完要 700 多秒。

所以,要彻底甩掉外挂文本,让模型本身产生记忆,得满足两件事:记忆需要存在模型的计算里而非文本;记什么、怎么记,需要由模型自己决定。
另一条路:让记忆内化
MemT 在 Qwen3.6-35B-A3B 和 DeepSeek-V4-Flash(288B 版)上做了实验。方法是在主干的一部分 Transformer 层里加一个记忆原生块,跟原来的注意力并排跑,然后两路输出相加。36B 版的记忆状态是 10M,288B 版是 336M。在这个过程中,主干的权重不做修改。

记忆写入
每轮对话结束时触发记忆写入。模型将上下文的输入输出逐个 token 过一遍,来决定三件事:记忆储存在哪个位置、原来内容擦掉多少、新内容写进去多少。同时,模型的整块记忆会统一淡掉一点,越早写进去的淡得越多。擦除时只把数值往小了改,不会放大,保证记忆系统不会崩溃。
记忆读取
当模型之后问答时,会进行记忆读取,混合原有模型权重进行推理。记忆大小是固定的,读一次的开销也是固定的,以保证长期使用后速度不受影响。

模型如何学会记忆
模型自己记,没有规则可循,只能从结果里学:记住的东西是否能帮助回答之后的问题。具体做法是让模型模拟自我蒸馏,准备两份上下文:一份能看到完整历史原文(老师),一份是本轮对话加记忆(学生)。学生的目标是在看不到原文的情况下,与老师做到相同的回答。

记忆效果
一、记忆成本有优势
通过训练进行记忆储存后,记忆表征是固定的。无论历史多长,存的内容只有 40 MiB,确保了速度和成本。

记忆容量也可以扩充,分数会跟着涨。

二、经验也能写进去
tech report 从 4 万多条成功的代码轨迹里总结出 1,040 条经验,把相关经验写进模型记忆,在 SWE-bench Verified 上三次都做对的比例从 54.0% 涨到 61.6%,和把经验直接塞进对话里一样。

三、准确性逊于原文
虽然这种方法在 11 项记忆测试里都做到了最优,但离外挂文本还有一截(50.6 对 68.6)。毕竟外挂文本能直接翻原文,理论上能做到 100% 还原。

四、适用场景有边界
对 DeepSeek-Flash 做后训练时发现:之前 8 次都没做对的题,练完正确率只有 1.6-4.0%;而很难的知识题,不训练只把相关事实放进上下文,正确率就从 27% 涨到了 91%。这说明训练记忆更擅长经验积累,而非新知识学习。

而现在,这些收获都以外挂文本的形式放在模型外面,或许可以尝试把这些东西做到模型里面。论文、模型和代码都已公开。
