Claude Code 是如何"记住"一切的?

Claude Code 是如何"记住"一切的?你有没有想过这个问题 当你和 Claude Code 聊了一个小时后 它是怎么记得你之前的需求 当你第二天打开同一个项目时 它为什么还能 认识 你 这不是简单的 存下来 就能搞定的事 这背后是一套精妙的记忆系统设计 今天我们就来拆解 Claude Code 的 Memory 架构 顺便聊聊记忆系统的本质设计

大家好,我是讯享网,很高兴认识大家。这里提供最前沿的Ai技术和互联网信息。



你有没有想过这个问题:当你和 Claude Code 聊了一个小时后,它是怎么记得你之前的需求?当你第二天打开同一个项目时,它为什么还能"认识"你?

这不是简单的"存下来"就能搞定的事。这背后是一套精妙的记忆系统设计。

今天我们就来拆解 Claude Code 的 Memory 架构,顺便聊聊记忆系统的本质设计。


很多人觉得,记忆嘛,不就是"存数据"吗?

如果把历史对话都存下来,每次原封不动传给 AI,很快就会遇到两个问题:

  1. Token 不够用 ------ 对话一长,Context 就爆了
  2. 费用爆炸 ------ 每次都传全部历史,钱包遭不住

所以光存没用,得看能不能影响 AI 的决策。

换个说法:历史要能改变 AI 的行为,才算有记忆。

举个例子:你上次告诉 Claude Code "不要在测试里 mock 数据库",下次它就不再 mock 了。这才是记忆。

按这个思路,一个记忆系统需要三个东西:

账本 ------ 记录存了什么、什么时候存的,不能糊里糊涂

索引 ------ 光有账本查起来太慢,得能快速找到相关内容

策略 ------ 决定什么时候该记住、什么时候该忘记。这点最容易被忽略,但最关键

没有账本就是一笔糊涂账;没有索引存了也查不到;没有策略,系统就会乱套。


能不能把所有能力都塞进一个模型?理论上可以------通过反复训练,让模型权重"学会"记忆。

但这条路有几个问题:

通用能力会退化。不断用"记住用户偏好"这类任务来微调模型,模型的其他能力可能会被稀释。就像让一个人同时学十种技能,结果每种都学不精。

无法审计和回滚。一旦能力"固化"到权重里,出了问题没法排查。

无法实时更新。用户偏好会变、项目会变,但重新训练模型的成本太高。

所以可行的方案是:把记忆能力从模型里抽出来,单独做一个系统。

这就是 System 1 + System 2 的架构:

  • System 1 是 LLM 本身,负责推理、生成回复、调用工具,需要快速响应
  • System 2 是记忆系统,负责在后台决定:要不要检索记忆?该记住什么?

简单说:System 1 负责"回答问题",System 2 负责"准备回答问题需要的背景"。

关键原因是:记忆能力和通用推理能力是独立的。

怎么证明?可以看三点:

结构上 ------整个系统可以写成 f(M(C), C) 的形式,C 是通用推理能力,M 是记忆系统,它们是独立的模块。

优化上------可以在不改变推理模型的情况下,单独改进记忆策略;反过来也可以只优化模型,不动记忆系统。

经验上------同一个基础模型,换不同的记忆系统,长程任务表现差异很大;同一套记忆系统,套在不同的模型上,也能工作。

既然独立,就可以牺牲一点理论上限,换取大量工程好处:

  • 不影响 System 1 的性能 ------ 记忆操作是后台进行的
  • 记忆可以插拔 ------ 换个项目、换个用户,记忆策略可以灵活切换
  • 可以审计和回滚 ------ 所有的记忆操作都被记录下来
  • 可以 A/B 测试 ------ 不同的记忆策略可以对比效果

把记忆放到外部系统,会面临三个问题:

注入带宽有限 再多的记忆,一次只能往上下文里塞有限的内容。Token 限制摆在那。

检索不精准 索引是近似的,查到的可能不相关,没查到的可能正好需要。检索噪声会误导 AI 推理。

策略设计很难 什么时候该记、什么时候该查、查到后该怎么用------这些策略如果设计得不好,记忆反而帮倒忙。写多了污染环境,写少了学不到。

很多系统的失败不是因为存得不够多,而是策略太蠢。


Claude Code 的记忆系统分成了六个层级:

层级 名字 作用 6 Agent Memory 子代理的专属记忆 5 Auto Memory AI 自己管理的长期记忆 4 Local Memory 项目私有配置 3 Project Memory 项目级指令(比如 CLAUDE.md) 2 User Memory 用户全局偏好 1 Managed Memory 管理员策略

优先级:项目配置 > 用户配置 > 全局配置。

这是 Claude Code 最核心的记忆系统。它的特点是:AI 自己能从对话中提取值得记住的信息。

写入有两条路:

一是用户明确要求记住。你说"Claude,记住我喜欢用 tabs 缩进",AI 直接写文件。

二是AI 主动提取。每轮对话结束后,后台会跑一个子代理,分析这一轮对话有没有值得跨会话保留的信息。比如你提到"这个项目的认证模块要重写",AI 就会默默记下来。

写入的内容分成四类:

  • user ------ 用户是谁、偏好什么
  • feedback ------ 用户给过的指导(比如"测试不要 mock 数据库")
  • project ------ 项目背景(代码里看不出来的信息)
  • reference ------ 外部参考(比如 "bug 在 Linear 的 INGEST 项目里")

读取是主动召回的机制:

每次你发消息,AI 都会主动去记忆库看看有没有相关的。

流程是:扫描记忆目录(最多 200 个文件)→ 排除之前展示过的 → 让小模型打分选出最相关的 5 个 → 读取内容注入上下文 → 加上时间提示。

Claude Code 会根据记忆的"年龄"给出不同待遇:

  • 1-2天内 ------ 正常使用
  • 超过2天 ------ 显示提醒:"这段记忆可能是旧的了"
  • 超过30天 ------ 标记为 stale,谨慎使用

对话一长,上下文就会满。Claude Code 的解决方案是压缩

当 Token 使用到 92% 时,会触发压缩:调用 AI 把对话历史浓缩成结构化摘要,检查质量,通过则替换原历史。整个过程会显示进度给你看。

Claude Code 不会等到 92% 才告诉你:

使用率 提示 60% "记忆使用量较高" 80% "建议手动整理,或者开新对话" 92% "正在整理记忆…"

旧信息可能已经过时了。

比如你三个月前告诉 AI "我在负责 X 项目",但现在你早就不负责了。如果 AI 不知道这条信息已经过期,它就会用旧信息做错误的决策。

所以"时间"不是附加字段,而是架构层面的设计。

Claude Code 的做法是:检索时默认只看"当前有效"的信息;给记忆打时间戳,区分"曾经为真"和"现在为真";旧信息不会直接删除,而是标记为过期。


前面的记忆都是"知识"——"这是什么"、"之前怎么样"。

但有时候更重要的是"怎么做"。

比如 AI 学会了"怎么排查 Redis 连接问题"——不是一条知识点,而是一套可复用的解决流程。这种记忆叫程序性记忆

Claude Code 通过把成功经验固化成技能(Skill) 来实现这一点。一个技能就是一段可执行的"套路",下次遇到类似问题直接复用。


外部记忆怎么接入 AI 的脑子?

最简单的方式是拼接到 prompt 里。但这种方式有代价:每次都要把文字转成 token,AI 再重新理解一遍。

前沿研究在尝试跳过文本中间层,直接把记忆压缩成 AI 更容易理解的"潜层表示",直接注入到注意力计算里。目前还在探索阶段。


真正智能的记忆,不在于记住多少,而在于管理得有多精细。

小讯
上一篇 2026-04-20 20:49
下一篇 2026-04-20 20:47

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/265247.html