AI的记忆:ClaudeCode的实践与思考
ClaudeCode源码泄露,众人狂欢? 作为目前最流行的AI编程工具之一,它的源码可见后,很多人,包括我,去翻它的记忆机制,想看看Anthropic内部是怎么处理"AI失忆"这个问题的。 翻完之后会发现:它做了,但做得很克制,也很诚实。
ClaudeCode的记忆方案核心是一个文件系统:CLAUDE.md。 项目根目录放一个CLAUDE.md,写项目级别的规则和约定。用户主目录再放一个全局的CLAUDE.md,写个人偏好。子目录里也可以放局部CLAUDE.md,处理特定模块的特殊要求。 每次ClaudeCode启动,这些文件会被按层级加载,拼进上下文里。LLM看到的第一条信息里就包含了"这个项目用什么框架、测试怎么跑、代码风格是什么、用户有什么习惯"。 还有一个Hooks机制:某些事件发生时自动触发写操作,比如对话结束后把关键信息追加到文件里。 这就是全部了。 没有向量数据库,没有语义检索,没有遗忘算法。一个基于文件的记忆系统,朴素到有点反直觉。 但仔细想想,这个设计有它的道理。
ClaudeCode的使用场景是编程。编程任务有一个特点:规则和偏好高度稳定,而且用户有强烈的意愿把它们写下来。你告诉AI"测试用Jest,不要用Vitest",这个偏好会一直有效,不会明天就变了。 这类信息适合用文件存,用规则加载。它本质上是一种"程序性记忆":固定的行为准则,每次都要遵守。 这和人脑很像。你不需要每次骑车前重新回忆怎么保持平衡,程序性记忆自动生效。ClaudeCode的CLAUDE.md就是在模拟这个机制。 但编程场景是特例,不是通用解。
打开一个ClaudeCode实例,它知道你的项目规范。但你问它"上周三那个并发bug最后怎么修的",它不知道。你问它"上个月重构时为什么选了方案B而不是方案A",它也不知道。 因为这些是情节记忆,不是程序性记忆。情节记忆记录的是"发生了什么",需要结构化的存储和语义级的检索,文件系统做不了这件事。 这就是ClaudeCode记忆方案的边界:它能记住"怎么做",记不住"做过什么"。 对于编程助手这个角色来说,这个边界也许够了。但如果要把AI的记忆能力推广到更广泛的场景,比如企业知识管理、个人助理、客户关系维护,这个边界就变成了一堵墙。
如果从ClaudeCode的实践出发,往完整的方向推演,记忆系统至少需要三层。 第一层是工作记忆,也就是LLM的上下文窗口。这是它当下正在处理的信息,有大小限制,会话结束就消失。ClaudeCode已经把这一层用得很好了,CLAUDE.md的加载就是在填充工作记忆。 第二层是情节和语义记忆。需要外部的数据库来支撑,向量数据库做模糊检索("这件事和什么相关"),结构化存储做精确查询("这个客户上次什么时候联系的")。每次对话前,系统根据当前请求检索相关历史,注入到上下文里。 第三层是程序性记忆。ClaudeCode已经实现了一版,就是CLAUDE.md那一套。未来可以做得更丰富,比如自动学习用户的行为模式,而不只是依赖手动编写。 三层之间不是独立的,需要联动。情节记忆里反复出现的模式,应该被提炼成程序性记忆。程序性记忆被用户修正后,相关的情节记忆也需要同步更新。
三层架构说起来清楚,做起来最大的坑不在技术实现,而在一个看起来很简单的问题:对话过程中,什么内容值得被记住? 现在大多数方案的做法是"对话结束后做摘要存档"。这个策略太粗。一次对话里可能有十件事,只有两件值得记,其余八件是噪音。全存,检索时噪音淹死信号;不存,有价值的东西就丢了。 更好的思路是"事件驱动写入":识别对话中值得记忆的节点,只在那个时刻写入。比如用户明确纠正了AI的某个判断,比如某个任务完成后用户表达了明确的满意度或不满,比如对话里出现了清晰的决策结论。 判断这些节点不需要特别重的模型。一个三层的漏斗就能覆盖大部分场景:第一层用规则捕捉用户的显式信号("记住这个"、"以后都这样做"),第二层用轻量分类器分析对话结构(用户改了多少次AI的方案、同一类问题问了第几次),第三层才需要LLM来做语义推断。 真正需要LLM介入的场景,经过前两层过滤后已经很少了。成本可控,质量有保证。
记忆系统还有一个几乎被所有人忽视的部分:遗忘。 人脑的遗忘不是缺陷,是主动的筛选机制。心理学上有一个极端案例:有些患者因为无法遗忘,时刻被过去的碎片淹没,无法正常思考和生活。 AI的记忆如果只增不减,同样会出问题。过期的偏好继续干扰判断,早已变更的事实还在影响决策,记忆越多,偏见越固化。 怎么设计AI的遗忘机制?现在没有标准答案。但几个方向值得关注:时间衰减加访问频率,类似艾宾浩斯遗忘曲线;语义压缩,把细节抹掉只保留抽象模式(就像一张照片被逐渐模糊化,轮廓还在,细节消失);用户可控的遗忘策略,让用户主动决定哪些记忆应该被清理。 个人记忆和企业记忆的遗忘逻辑也会完全不同。个人更看重隐私和偏好一致性,企业更看重知识沉淀和经验复用。
ClaudeCode的思路,不在于它给出了一个完整的记忆方案,而在于它展示了一个真实的、在生产环境里跑通的最小可用方案。 它诚实地说:我现在只能做到这一步。程序性记忆用文件搞定,情节记忆和语义记忆还没做,遗忘机制完全缺失。 这个"诚实"比那些吹得天花乱坠的PPT更有价值。因为它让所有人看到了真正的起点在哪里。 AI的记忆系统不会是一步到位的事情。它需要先解决"记什么"的判断问题,再解决"怎么存"的结构问题,最后才能谈"忘什么"的遗忘问题。 ClaudeCode走了第一步,后面的路还很长。 但方向已经清楚了。 模型可以换,记忆不能丢。 那颗每天清零的大脑,会慢慢学会记住事情的。(最近打算重复做轮子,也去Git上做个记忆系统,不过先做Agent侧的吧。和LLM侧的联动,需要架构上的联动。) #AI记忆 #ClaudeCode #Agent #记忆系统 #记忆分类 #程序性记忆 #情节记忆