Claude Code 是如何"记住"一切的?
你有没有想过这个问题:当你和 Claude Code 聊了一个小时后,它是怎么记得你之前的需求?当你第二天打开同一个项目时,它为什么还能"认识"你? 这不是简单的"存下来"就能搞定的事。这背后是一套精妙的记忆系统设计。 今天我们就来拆解 Claude Code 的 Memory 架构,顺便聊聊记忆系统的本质设计。 很多人觉得,记忆嘛,不就是"存数据"吗? 如果把历史对话都存下来,每次原封不动传给 AI,很快就会遇到两个问题: 所以光存没用,得看能不能影响 AI 的决策。 换个说法:历史要能改变 AI 的行为,才算有记忆。 举个例子:你上次告诉 Claude Code "不要在测试里 mock 数据库",下次它就不再 mock 了。这才是记忆。 按这个思路,一个记忆系统需要三个东西: 账本 —— 记录存了什么、什么时候存的,不能糊里糊涂 索引 —— 光有账本查起来太慢,得能快速找到相关内容 策略 —— 决定什么时候该记住、什么时候该忘记。这点最容易被忽略,但最关键 没有账本就是一笔糊涂账;没有索引存了也查不到;没有策略,系统就会乱套。 能不能把所有能力都塞进一个模型?理论上可以——通过反复训练,让模型权重"学会"记忆。 但这条路有几个问题: 通用能力会退化。不断用"记住用户偏好"这类任务来微调模型,模型的其他能力可能会被稀释。就像让一个人同时学十种技能,结果每种都学不精。 无法审计和回滚。一旦能力"固化"到权重里,出了问题没法排查。 无法实时更新。用户偏好会变、项目会变,但重新训练模型的成本太高。 所以可行的方案是:把记忆能力从模型里抽出来,单独做一个系统。 这就是 System 1 + System 2 的架构: 简单说:System 1 负责"回答问题",System 2 负责"准备回答问题需要的背景"。 关键原因是:记忆能力和通用推理能力是独立的。 怎么证明?可以看三点: 结构上——整个系统可以写成 优化上——可以在不改变推理模型的情况下,单独改进记忆策略;反过来也可以只优化模型,不动记忆系统。 经验上——同一个基础模型,换不同的记忆系统,长程任务表现差异很大;同一套记忆系统,套在不同的模型上,也能工作。 既然独立,就可以牺牲一点理论上限,换取大量工程好处: 把记忆放到外部系统,会面临三个问题: 注入带宽有限 再多的记忆,一次只能往上下文里塞有限的内容。Token 限制摆在那。 检索不精准 索引是近似的,查到的可能不相关,没查到的可能正好需要。检索噪声会误导 AI 推理。 策略设计很难 什么时候该记、什么时候该查、查到后该怎么用——这些策略如果设计得不好,记忆反而帮倒忙。写多了污染环境,写少了学不到。 很多系统的失败不是因为存得不够多,而是策略太蠢。 Claude Code 的记忆系统分成了六个层级: 优先级:项目配置 > 用户配置 > 全局配置。 这是 Claude Code 最核心的记忆系统。它的特点是:AI 自己能从对话中提取值得记住的信息。 写入有两条路: 一是用户明确要求记住。你说"Claude,记住我喜欢用 tabs 缩进",AI 直接写文件。 二是AI 主动提取。每轮对话结束后,后台会跑一个子代理,分析这一轮对话有没有值得跨会话保留的信息。比如你提到"这个项目的认证模块要重写",AI 就会默默记下来。 写入的内容分成四类: 读取是主动召回的机制: 每次你发消息,AI 都会主动去记忆库看看有没有相关的。 流程是:扫描记忆目录(最多 200 个文件)→ 排除之前展示过的 → 让小模型打分选出最相关的 5 个 → 读取内容注入上下文 → 加上时间提示。 Claude Code 会根据记忆的"年龄"给出不同待遇: 对话一长,上下文就会满。Claude Code 的解决方案是压缩。 当 Token 使用到 92% 时,会触发压缩:调用 AI 把对话历史浓缩成结构化摘要,检查质量,通过则替换原历史。整个过程会显示进度给你看。 Claude Code 不会等到 92% 才告诉你: 旧信息可能已经过时了。 比如你三个月前告诉 AI "我在负责 X 项目",但现在你早就不负责了。如果 AI 不知道这条信息已经过期,它就会用旧信息做错误的决策。 所以"时间"不是附加字段,而是架构层面的设计。 Claude Code 的做法是:检索时默认只看"当前有效"的信息;给记忆打时间戳,区分"曾经为真"和"现在为真";旧信息不会直接删除,而是标记为过期。 前面的记忆都是"知识"——"这是什么"、"之前怎么样"。 但有时候更重要的是"怎么做"。 比如 AI 学会了"怎么排查 Redis 连接问题"——不是一条知识点,而是一套可复用的解决流程。这种记忆叫程序性记忆。 Claude Code 通过把成功经验固化成技能(Skill) 来实现这一点。一个技能就是一段可执行的"套路",下次遇到类似问题直接复用。 外部记忆怎么接入 AI 的脑子? 最简单的方式是拼接到 prompt 里。但这种方式有代价:每次都要把文字转成 token,AI 再重新理解一遍。 前沿研究在尝试跳过文本中间层,直接把记忆压缩成 AI 更容易理解的"潜层表示",直接注入到注意力计算里。目前还在探索阶段。 真正智能的记忆,不在于记住多少,而在于管理得有多精细。深入解析 AI Agent 的记忆系统设计
1. 记忆到底是什么?
2. 为什么需要两个"大脑"?
为什么这个拆分是合理的?
f(M(C), C) 的形式,C 是通用推理能力,M 是记忆系统,它们是独立的模块。分开有什么好处?
3. 非参数化路线有什么挑战?
4. Claude Code 怎么实现的?
六层记忆架构
层级 名字 作用 6 Agent Memory 子代理的专属记忆 5 Auto Memory AI 自己管理的长期记忆 4 Local Memory 项目私有配置 3 Project Memory 项目级指令(比如 CLAUDE.md) 2 User Memory 用户全局偏好 1 Managed Memory 管理员策略 Auto Memory 的工作方式
记忆会过期
上下文满了怎么办?
三级预警
使用率 提示 60% "记忆使用量较高" 80% "建议手动整理,或者开新对话" 92% "正在整理记忆..." 5. 时间在记忆系统里有多重要?
6. 从"知道什么"到"会做什么"
7. 记忆怎么"喂"给 AI?
8. 总结