
Agent Memory 全景图:最近三个月最值得看的 5 条路线
从 2026-01-22 到 2026-04-22,Agent Memory 的讨论已经不再停留在“模型会不会忘”。真正被反复讨论的是:
- 记忆应该放在 prompt 里,还是外部系统里
- 是做向量检索,还是图谱检索,还是文件系统
- 是让模型自己管理记忆,还是交给独立 memory engine
- 单 Agent 记忆够不够,多 Agent 怎么共享
4 月 7 日,Chappy Asel 在 X 上发了一条很有代表性的长线程,把主流 memory 框架压缩成 “Nine frameworks, four bets”。我觉得这个切法很有价值,因为它点出了今天 Memory 工程真正的分歧。
第一条路线:Memory as Database
这是今天最主流、也最容易落地的一条路线。它的核心抽象非常简单:
add()search()get()
Mem0、Supermemory 这一类系统都属于这个阵营。它们的共同点是把记忆做成一个独立层,Agent 本体只负责调用。
这条路线为什么火
因为它最符合工程团队的直觉:
- 容易接进现有应用
- 方便权限隔离
- 方便替换底层存储
- 更适合多用户、多会话
Mem0 这条线现在已经不只是向量搜索了。官方文档里很明确,它在向量层之外又叠加了 Graph Memory,把实体和关系单独存起来。也就是说,它正在从“搜相似文本”升级成“搜人物、事件、关系图”。
Supermemory 的思路则更像 “context stack as a service”。官方文档里把自己定义成 long-term + short-term memory 基础设施,还配套了 MemoryBench 这套评测框架。它的重点不只是 recall,还包括:
- connectors
- user profiles
- 内容提取
- benchmark 和可复现评测
第二条路线:Memory as Context Blocks
Letta 代表的是另一种思路:有些记忆根本不该检索,而应该永远在上下文里。
Letta 的 memory blocks 文档写得非常直接:
- memory blocks 是结构化上下文片段
- 它们始终可见
- 不需要 retrieval
这就和数据库路线很不一样了。数据库路线强调“按需召回”,Letta 的 block 路线强调“关键身份与状态常驻”。
这种设计特别适合保存:
- persona
- human profile
- policies
- scratchpad
- shared state
我认为 Letta 最重要的洞察是:
记忆不只是检索问题,也是上下文结构设计问题。
第三条路线:Temporal / Graph Memory
Graphiti 这类系统切的点更具体:很多记忆不是一段文本,而是一条随时间变化的关系。
Zep 的 Graphiti 官方概览把自己定义成 “temporally-aware knowledge graph”。这个词很关键,因为 Agent 记忆的难点常常不在“有没有这条事实”,而在:
- 这条事实什么时候成立
- 后来有没有更新
- 它和谁有关
- 当前版本和历史版本怎么并存
比如:
- “Alice 喜欢 Adidas”
- “上周 Alice 改成更喜欢 On”
- “Alice 是 Bob 的同事”
如果只做普通 semantic search,这些关系很容易糊成一团。时间感知图谱的价值,就在于它更擅长处理动态关系和知识更新。
第四条路线:Memory as Filesystem / Repo
这条路线最近三个月也越来越强,代表是:
- Claude Code auto memory
- GBrain
- Letta 的 MemFS
它们的共同点是:把记忆落成开发者和 Agent 都能直接编辑的文件。
Claude Code 的 auto memory 是本地 markdown 文件;GBrain 用一个 repo 去承载长期知识;Letta MemFS 更进一步,直接把记忆版本化进 git 风格的 memory filesystem。
这条路线的优点非常现实:
- 可审计
- 可迁移
- 可人工修
- 对 coding agent 尤其友好
它的缺点也很明确:
- 结构化程度不如专门 memory API
- 多用户和大规模共享场景下治理更难
最近三个月我看到的三种收敛趋势
1. 混合检索已经成为共识
纯向量记忆越来越少被当成终局。Graph + vector、full-text + semantic、profile + query 这种混合检索正在变成标配。
2. 记忆开始分层
现在比较成熟的系统几乎都会把记忆分成:
- 当前工作记忆
- 会话记忆
- 用户长期记忆
- 组织共享记忆
Mem0 官方文档已经把这套分层写得很清楚,Letta 也把 core memory 和 external memory分开了。
3. “读写闭环”变成关键字
最值得关注的,不是记忆能不能被搜到,而是:
Agent 能不能读记忆、据此行动、再把新经验写回去。
这就是为什么 GBrain、Claude Code auto memory、Mastra observational memory、Hermes learning loop 这些东西会被同时讨论。大家其实都在试同一个目标:让记忆不是归档,而是复利。
我的建议
如果你现在要做产品,不要一上来就追求“最聪明的记忆系统”。更稳的顺序是:
- 先把你需要哪些记忆层次想清楚
- 再决定哪些必须常驻、哪些适合检索
- 最后才决定用向量、图谱、文件还是混合方案
很多团队的问题不是 memory provider 选错,而是根本没先定义清楚:
- 用户记忆和任务记忆怎么分
- 冲突知识怎么更新
- 多 Agent 到底共不共享记忆
来源
- X.com:Chappy Asel 的 Memory 框架长线程
- Mem0 官方文档:Memory Types
- Mem0 官方文档:Graph Memory
- Letta 官方文档:Memory Overview
- Zep / Graphiti 官方文档
- Supermemory 官方文档
- GBrain 官方 GitHub