
你问一个助手:「Alice 去年春天在做哪个项目?」
如果它的记忆只是一堆向量,这句话很难被回答好。向量检索擅长的是语义相似,它会去找和「Alice」「项目」「春天」最接近的片段,但「去年春天」在这里是一个时间约束,不是语义约束。它可能给你翻出三年前的一条记录,语气还很自信。
这不是模型笨,是记忆层缺了一路检索。
2026 年 9 月 26 日的 GitHub 趋势榜单上,和记忆相关的仓库又一次集体冒头:vectorize-io/hindsight 单日新增 1653 星排到第二,hydra-db 以「对象存储上的图数据库」定位进入前五,C 语言榜第一是 DeusData/codebase-memory-mcp,一个把代码库索引成持久记忆的 MCP 服务。同一天,编排(google/ax)、记忆、办公执行(dream-num/univer)把前五占满。
不过这篇文章不打算再说一遍「记忆很重要」。这几天公开的资料里有一批更值得关注的数据,它们指向一个更硬的结论:记忆层的差距,已经比模型之间的差距更大了。
一、记忆评测正在变成一套独立的选型语言
过去两年,讨论 Agent 能力几乎只在讨论模型。现在跑长期记忆评测的团队越来越多,基准本身也收敛了:LongMemEval(长时程记忆问答)、LoCoMo(长对话记忆)、BEAM(多会话一致性)构成了新的评测栈。
在这套基准上,同题不同记忆层的结果差距很大:
| 系统 | 关键数字 | 备注 |
|---|---|---|
| 全上下文基线(不给记忆层) | LongMemEval 39.0% | 把历史全塞进上下文的做法 |
| Hindsight(20B 开源模型骨干) | LongMemEval 83.6% | 相对全上下文基线提升 44.6 个点 |
| Hindsight(放大骨干模型) | LongMemEval 91.4% | 官方称为 SOTA |
| Agent Zero Memory | LongMemEval 95.60% / LoCoMo 93.60% | 对比最强前作 +0.73 / +1.10 |
| Mem0(GPT-4o) | LoCoMo 约 49% | 面向通用助手的取舍 |
第一行和第二行值得盯一会儿:**同一个基准、同一个任务,仅仅把「历史全塞上下文」换成一套专门的记忆系统,准确率翻了一倍多。**第三行说明放大模型还有空间,但只加了不到 8 个点。也就是说,在长记忆这件事上,把记忆层做对,比换一个更大的模型见效快得多。
二、纯向量检索为什么会失效
Hindsight 团队在介绍里给了四条理由,我认为这是目前对「为什么向量不够」最清晰的表述:
- 时间盲区。「Alice 去年春天做了什么」需要的是时间推理,不是语义相似度。
- 事实之间是断开的。知道「Alice 在 Google 工作」和「Google 在山景城」,就应该能回答「Alice 在哪里工作」,哪怕你从来没直接存过这句话。这是图的能力,不是向量的能力。
- Agent 需要沉淀,不只是回想。一个记住了「用户偏好函数式编程」的编码助手,应该把这条沉淀成一条可复用的观察,并在后续推荐里给它权重。
- 上下文决定含义。同一句话对不同的人、不同的项目含义不同,扁平存储抹掉了这层区别。
对应的工程解法是多路检索融合。Hindsight 的召回层会并行跑四路搜索,再把结果重排后压进 token 预算:
| 检索策略 | 擅长的场景 |
|---|---|
| 语义向量 | 概念相似、换一种说法 |
| 关键词(BM25) | 人名、技术术语、精确匹配 |
| 图遍历 | 实体之间的间接关联 |
| 时间过滤 | 「去年」「六月」「最近三周」这类区间 |
只向上取 top-k 的纯向量方案在这里必然吃亏,因为它没有把时间当成一等信息,也没有实体这张网。
三、真正的分水岭在写入那一刻
读路径的差异大家都看得见,更隐蔽的分歧在写路径。
把新记忆写进存储时,有三种处理冲突的方式,效果差别很大:
- 先写再说:同一件事反复存,检索时一堆近义条目互相稀释,越用越不干净。
- 覆盖或删除:Agent Zero Memory 的论文明确批评了这类做法,它的原话是「破坏性更新(overwrite / delete)」会丢失溯源信息。当时的批评对象是 Mem0。
- 写时合并 + 保留历史:新证据与旧结论冲突时,标记旧条目被取代,而不是抹掉它。
Hindsight 在第四种方向上给出了一个更细的模型。它把记忆源分成互不混淆的几类,其中最关键的是把证据和推断分开:
| 类型 | 存什么 | 例子 |
|---|---|---|
| World Fact | 客观收到的外部事实 | 「Alice 在 Google 工作」 |
| Experience Fact | 记忆库自己的动作和交互 | 「我给 Bob 推荐了 Python」 |
| Observation | 从多条事实自动沉淀的结论 | 「用户曾经是 React 拥趸,现已转向 Vue」 |
| Opinion | 带置信度的主观判断 | 「这个方案大概会延期」 |
沉淀成 Observation 时,系统会做三件事:把重叠事实去重成一条持久结论;给每条结论挂上支撑它的原始记忆和精确引用,外加一个证明计数;新证据到达时更新而不是重写,历史保留。还有一条容易忽略的设计:如果更新的记忆已经写入但尚未合并,反思操作会把受影响的结论标记为「陈旧」,先去原始事实里核对再使用。
这套设计的价值在于可审计。当 Agent 给出一个结论,你能顺着引用链回到它是从哪句话推出来的。这也是 Agent Zero Memory 走得更远的地方:它把「引用锁」形式化,要求答案里的每个论断都必须由这次检索中真正打开过的证据支撑,找不到证据就明确弃权,而不是猜。这一条直接排除了模型拿训练期记忆编答案的路径。
四、最反直觉的一条:记忆质量可以脱离模型单独买
这是我认为整个赛道里最重要的一个发现。
Agent Zero Memory 的论文做了一组对照实验,用 8 个不同的骨干模型跑同一套记忆系统,结果是:准确率只在 3.4 个点内波动,而单次查询成本相差约 30 倍。在成本高到低的那一端,它能用低约 20 倍的单次成本拿到接近 SOTA 的质量。
论文把这个现象称为「记忆驱动而非模型驱动的质量」。
翻译成工程语言:在长期记忆这类任务上,换模型是边际操作,换记忆层是数量级操作。过去两年团队习惯用「升级到更强的模型」解决一切效果问题,而在跨会话记忆这个场景里,这条路的天花板已经靠得很近了。
五、延迟是记忆层的属性,不是模型的属性
选型时另一个该看的数字是检索延迟,它和生成质量完全独立:
| 方案 | p50 检索延迟 | p95 检索延迟 |
|---|---|---|
| Mem0 | 0.148s | 0.200s |
| LangMem | 17.99s | 59.82s |
差距来自架构选择。Mem0 在写入期就完成抽取和合并,查询时只做检索;LangMem 更多把工作放在查询期的按需抽取上,于是换来更灵活的记忆管理,也换来秒级的等待。
对交互式场景,这可能是一票否决项。语音助手、客服机器人、编辑器里的编码助手,用户对「感觉是原生」和「感觉在加载」的判断阈值,大致就在 200 毫秒附近。反过来,批量处理的 Agent,比如夜间跑的调研流水线,完全不介意等 18 秒。
所以「选哪套记忆」和「选哪个模型」是两道独立的题:模型看能力上限,记忆看数据形态(实体多不多、时间跨度长不长)、延迟预算、以及数据能不能自托管。
六、还没解决的两件事:遗忘和投毒
遗忘
承认「有些东西该忘掉」是记忆系统走向成熟的标志。做法正在收敛到几个机制:
- 置信度衰减。18 个月前设定的用户偏好,不该和昨天的偏好拿到同样的检索权重。
- 分级淘汰。过时的结论被标记为被取代,而不是留在库里和真相竞争。
- 离线反思。这是 2026 年最值得关注的一个产品化动作。Anthropic 在 5 月把「离线反思」做进了 Claude Managed Agents,系统在两次任务之间回看会话轨迹,找出反复出现的错误和已经收敛的工作流,然后重写记忆库。Harvey 报告说开启这个能力后任务完成率有了大约 6 倍的提升。
6 倍这个数字听起来夸张,但换个角度就很好理解:它衡量的是一个专业人士在第五天和第一天之间的差别。Agent 拿到反馈之后有没有沉淀,本来就应该产生这种量级的差异。
投毒
记忆是长期可写的外部状态,这就引入了一类新攻击面:攻击者把恶意内容种进记忆,它在之后所有会话里静默生效。一条被注入的「用户已授权转移资金」对会话级校验是完全合法的。
目前落地的防御有四种方向:给来源于外部内容的记忆打低信任标签,禁止它们触发高权限动作;每条记忆写入时记录来源,检索时可查;定期用策略规则集自动审计记忆条目,可疑的转人工;把「选择性遗忘」当成防御手段,对匹配到对抗模式的内容执行删除。
给这套东西加一层溯源之后,记忆就从「一个可能有毒的缓存」变成了「一条可以追责的证据链」。
七、如果这周要动手,我会按这个顺序
- **先上跨会话记忆,再考虑加工具。**多一个工具的收益通常是个位数,跨会话一致性的收益是用户对 Agent 的关系发生变化。
- **第一天就用混合检索。**不要先发纯向量再迁移,基准已经把差距摆得很清楚:语义、关键词、图、时间四路融合不是优化项,是及格线。
- **把写入当成危险操作。**读取出错只是答得不好,写入出错会污染之后所有会话。事实要版本化,字段至少带上写入时间、取代关系和来源。
- **加一个反思任务,哪怕很简单。**一个夜间跑的 LLM 批处理,把近期事件压缩成结论、淘汰过时条目,效果就能超过绝大多数读取期的补丁。
- **把记忆层当成可替换件设计。**后面的抽象隔离做得越干净,将来在不同记忆方案之间搬家就越便宜。
八、写在最后
今天榜单上那三个记忆仓库,其实在讲三件不同的事:hindsight 在回答「记忆该怎么组织成可反思的结构」,hydradb 在回答「记忆存在哪里才便宜」,codebase-memory-mcp 在回答「特定领域的记忆该索引成什么形状」。三者叠起来,恰好是记忆层的三层:表示、存储、领域索引。
值得记住的一句话是:Agent 的竞争力,越来越不取决于模型知道什么,而取决于它在这次任务之前记住了什么,以及那条记忆还成不成立。
模型的价格还在以季度为单位往下走,而记忆层刚刚开始有人认真做评测。这就是为什么我认为,接下来一年在效果上最划算的一笔投入,可能不是换模型,是把记忆的写入纪律和反思循环补上。
参考来源
- Hindsight: Building AI Agents That Actually Learn (Vectorize 官方博客)
- Hindsight 官方文档 (retain / recall / reflect、TEMPR 四路检索、记忆网络分层)
- Agent Zero Memory: Provenance-Aware Long-Term Memory for LLM Agents (LongMemEval 95.60%、LoCoMo 93.60%、8 骨干模型对照实验)
- LLM Agent Memory Architecture for Production (2026) (四层记忆分类、写路径与写入策略)
- AI Agent Memory Architecture: Persistent State Management for Long-Running Agents (Mem0 / Letta / Zep / LangMem 横向对比、记忆投毒防御)
- Agent Long-Term Memory in 2026: Letta, Mem0, Zep, and LangMem Compared (检索延迟 p50 / p95 数据)
- Agent Memory Architectures: Short-Term, Long-Term, and Episodic (四层沉淀流水线、Anthropic Dreaming 与 Harvey 数据)
- GitHub Trending 2026-09-26 (hindsight、hydradb、codebase-memory-mcp、google/ax 榜单数据)