← 返回文章列表

一篇50年前的经典论文,让我看懂了今天 AI Agent 的记忆设计

https://x.com/shuang/status/2039711947013423230

memory
转

https://x.com/shuang/status/2039711947013423230

原来,很多人夸 Claude Code “善用万字小纸条” 并不神秘。它介绍的“记忆分层、对象分层、反馈→自我重写”等思路,本质上都能在一篇认知心理学论文里找到雏形。

要回到半个世纪前,看 Endel Tulving。

背景

Tulving 生于 1927 年,家乡是爱沙尼亚,后来辗转到了加拿大,在多伦多大学做了几十年研究。他可以说代表了从“记忆是能力的总名”之一,走向“Google Scholar 里,世界论文引用数排在前列的人文、社会科学中的心理学奠基者”之一。

1972 年,他在一篇短短论文里提出了一组关键划分:
情景记忆(Episodic Memory) 和 语义记忆(Semantic Memory)。
这组区分,后来不止影响了心理学,也深刻影响了人们对“记忆”这件事的理解,并在今天 AI 的记忆设计里重新出现。

10 Episodic and Semantic Memory

Endel Tulving

(截图中附了论文目录页图片)

也正因为时间跨度,今天再回头读这篇论文,会特别容易产生“这不就是在讲今天的 AI 吗”的感觉。

记忆不是一种东西,而是两套系统

Tulving 的核心判断,是打断了“记忆是一个整体”的直觉。

在他之前,心理学界常把记忆视作一个大仓库:
无论是背单词、记住昨天吃了什么,还是知道苹果是水果,似乎都属于一个相同系统。Tulving 说:不是。这些不是同一种东西,而是两套系统。

他把记忆分成两类:

“情景记忆”(Episodic Memory)

指关于“我曾经经历过什么”的记忆。
时间、地点、上下文、主观体验都在这里。比如:

  • 昨天你和朋友在某家餐厅吃了一顿饭;
  • 你第一次使用某个产品时的感受;
  • 你在某一场会议里听到了某句话;
  • 甚至你现在对“昨天那场对话”的回忆。

它关注的是:具体发生过的事件,以及“我在那个事件里”。

“语义记忆”(Semantic Memory)

指关于“世界是什么、概念是什么、规则是什么”的知识。比如:

  • 巴黎是法国首都;
  • 苹果是一种水果;
  • Python 是一种编程语言;
  • Claude Code 是一个 AI 编程助手。

它不要求你记得“你是在哪天哪地学会的”,也不要求你保留当时的主观感受。
你知道这个知识,但不一定知道它最初来自哪。

这两类系统,Tulving 认为不仅内容不同,组织方式也不同。

更具体地说,Tulving 提到了它们在几个关键维度上的差异:

1. 时间与内容的差异

“情景记忆”天然带有时间轴和情境索引。
每一条都像历史记录:你在何时何地做了什么、见到谁、听到什么。

2. 语义知识的差异

“语义记忆”去除了情境性,留下的是结构化、抽象化后的知识。
它像一张概念网络图,而不是一条生活录像带。

3. 提取方式的差异

从情景记忆里取东西,需要你重新进入那个场景,
而语义记忆的提取,更多是调用概念、规则、关联。

一个非常重要的细节是:
每一次从情景记忆里取东西,你会经历为一个“重新进入情景记忆”的过程;
而语义系统则更像是激活一个事实节点、一个分类标签。
这会导致:对今天的 Agent 来说,情景更像历史轨迹,知识更像静态技能。

从历史知识,到突发复盘技能

Tulving 的这组 1972 年分类非常重要。
是因为它告诉后人:记忆不是仓库,而是不同功能的系统。

后来到了认知科学和 AI 里,这一步扩展得更完整。
加入了一类常被忽视、但对今天非常关键的类型:
程序性记忆(Procedural Memory) —— 也就是“知道怎么做”的记忆。
比如打字、骑车、用筷子、以及已经内化成技能的操作流程。

工程化之后,就形成了一个图景:

简单来说,
情景记忆 = 反馈到事件流或轨迹,沉淀为具体记录;
语义记忆 = 规则/知识/概念;
而程序性记忆 = 面向执行的动作模式、习惯、流程、套路。

对于今天的 AI 来说,
用户反馈的“你前面理解错了”“你做事应该先检查再动手”“我偏好你先给结论后展开”等,
过一会儿,从人类角度看像“经验”;
从 AI 角度看,它们也会被逐步转译成新的操作准则。

换句话说,
每个错过、每个修正、每个可重复的动作经验,都有可能成为 Agent 的记忆原材料。

线索如何落到工程栈:Claude Code 的记忆现状

最近有人重新讨论了 Claude Code 的记忆策略,热度相当高。

Claude Code 看起来像是一个“超级会记”的编程助手,
但一旦套回 Tulving 的框架里看,很多设计就突然变得很清楚。

“情景记忆层”

有论文讨论过的一类典型做法,是维护一个 SessionMemory 或工作日志。
相当于一个面向一轮轮会话的事实流,
让工具把类似 Tulving 讲的情景记忆 —— 会话片段、曾上了头、曾做的决策路径 —— 保存下来,留作将来复用。

“语义记忆层”

有的系统则会额外做一个 Agent Lexicon / Memory 层,
把反复出现的偏好、稳定的规则、知识片段抽出来,
转成更像 K/V、图谱、表格、向量或 schema 的持久对象。
在有些设计里,还会配合 Auto-Curation 机制,自动抽取长期规律,
把临时状态沉淀成更稳定的知识。
这一点,其实就很接近今天业界常讲的 memory consolidation(记忆巩固):
把短时输入慢慢转成一个抽象层级更高的共享知识,
而不是永远堆在会话历史里。

“程序性记忆层”

这更像 Claude Code 真正会显得厉害的地方。
每一次 feedback 反馈回来,不只是“你要记住 A”,而是开始进入某种可执行形式:
你的“做事方式”被更新,像一种 prompt / policy / tool-use pattern 的重写。
当系统把知识变成流程、把规则变成动作习惯时,
Claude Code 的“记住某个偏好”,已经不只是字面存档,
它更接近“把习惯写进运行机制”—— 这才是程序化记忆最关键的一层。

当然,这个谱系仍然很原始:
不太像真正意义上的 UI / LLM / metadata 代理内建系统。
上面 200 个文件内,虽然能隐约看出像“四小时前 5 条的行为聚合摘要”、
“较近最常见 20 条”,没有太大规模。

比较:当代门槛记忆的视角上来了

如果把 Claude Code 的记忆看作代表性的最新样本,那么 LangMem、Mem0、Zep、FreeMemOS、MemOS 这类专门的记忆框架,
其实早就开始把记忆工程推向了更完整的层级。

“LangMem”

是 LangChain 生态里的记忆模块。
它更像从开发者视角出发组织 MCP,支持点式配置,强调对话积累的沉淀与复盘。

“Mem0”

更像为各种 Agent 提供底层。
支持多层级:用户级、代理级、应用级的记忆管理。
并且明确强调从会话流里抽象事实,做成长效可重用知识图谱。

“Zep”

则偏向长期记忆,专注自动摘要和检索增强,
支持大规模历史会话的时间线追踪,
适合需要利用组织知识沉淀和个人轨迹的场景。

从更高的“系统层次”看,
最近一些完整记忆方案,工程栈已经从“单一向量库”升级到了:
MongoDB + Elasticsearch + Milvus + Redis
既做文本存储和检索,也能围绕“会话 + 个人记忆”建立统一索引,
已经开始具备某种“操作系统底座”的味道,本质上会是一个分层。

如果说,Claude Code 的记忆现状更像是“Claude Code 本体里藏着若干层的准通用记忆逻辑”,
那么外部封装出的这一套工具型记忆框架,已经在朝着把 Agent 从单个模型用成系统的方向进化。
设计越发像操作系统,而不只是提示词。

OpenClaw 的另一条路

最近值得留意的,是 OpenClaw 所设计的路径。
它跟上面那类“系统底座型”还不太一样。

OpenClaw 不强调全套记忆栈,
而是特别关注“记忆什么时候触发 / 进入机制 / 怎样被不同事件利用”。
它把记忆拆成更细的维度:全局摘要、工作区状态、任务摘要、面向反馈、风险提示,
因此会把程序性和事件性分得更细。

这就更像一个判断:
“记忆不是用来存的,工程沙盒里的记忆层是为了重用的。”

对大多数 Agent 框架来说,
记忆传统上还是停留在“先放项目里做事实积累的一层”,
但如果从任务模式和工作流上看,
情景记忆其实更像是缓存、背景推理线索、OpenClaw 则试图把它设计成
在特定条件下被调用、会参与动作选择、能促进反馈闭环 的记忆机制。

这已经隐约和 Tulving 后来提到的一个细节呼应。
他说,情景记忆之所以能支持更复杂的自我反思,
很大程度上在于人可以把自己重新置回某个过去的具体情境,
这就是后来广为引用的 autonoetic consciousness。
换句话说,记忆不只是给系统看的,不是把历史扔进数据库里就结束,
而是要能在动作执行时,重新进入过去经验。

OpenClaw 的设计,正是在工程上试图实现这个逻辑:
不是把记忆堆在那里,而是要让记忆真正参与后续动作决策。

结语

两句话,意思很清楚。

Claude Code 展示了一条更像现代方案:
记忆是可写、是可压缩的,
做法已经走上了事实 SNS 化的中间层,
像一个适合嵌入流程化工具链。
OpenClaw 走的是另一套强调动态、可调用参与的记忆路线,
让 Agent 能更像真正有过往经验驱动来组织决策。

再往前看,老师 Tulving 1972 年写那篇——那个年代记忆还只是哲学意义上的包罗词,
大模型浪潮里,也许正在从“大家怎么形成记忆”重新走向“怎么把系统设计成记忆驱动”的问题。

如果把这条线继续拉长,
很可能不是去问“你记得吗”,
而是设计出让记忆决定策略、影响工具调用路径、能被真正提取进流程的机制。
到那一步,所有的反馈、对话历史与外部知识,
才有可能汇成真正能驱动 Agent 行为的一种“操作方法”,而不只是“一份备忘”。

参考资料

  • Tulving, E. (1972). Episodic and Semantic Memory. In E. Tulving & W. Donaldson (Eds.), Organisation of Memory. Academic Press, pp. 381–403.
  • Tulving, E. (1972). 《情景记忆与语义记忆》. 载于 E. Tulving & W. Donaldson(编), 《记忆的组织》, Academic Press, 第 381–403 页。
  • Barnett, Olivia. 《关于 Claude Code 记忆系统的若干观察》
    (截图中附了 Substack 链接)
  • Tulving, E. (1985). Memory and consciousness. Canadian Psychology, 26(1), 1–12.
  • Tulving, E. (1985). 《记忆与意识》. Canadian Psychology, 26(1), 1–12.
  • Mem0 官网(截图中附了官网链接)
  • Zep 官网(截图中附了官网链接)
  • OpenClaw / OpenClaw Framework 相关链接(截图中附了官网链接)

分享这篇文章

复制链接,或分享到你常用的地方。

评论

发表评论

0 / 1000

KEEP READING

全部文章