文章从写入与检索主体、存储位置、适用范围和删除方式四个维度,梳理Claude聊天、项目、Claude Code及API应用的不同记忆机制。它解释了跨会话、跨仓库和跨设备时上下文为何会消失,并提醒相关功能仍处于迁移期。
问 Claude:“你还记得我们之前讨论过什么吗?”得到的回答可能会让人觉得前后不一。
有时它记得,有时却不记得。
Claude Code 可能会把一条构建命令记到第二天的会话里,但当你打开另一个代码仓库时,它似乎又忘了。即便是在另一台机器上克隆同一个仓库,部分上下文也会再次消失。
问题并不只是 Claude 的记忆“好”或“不好”。
Claude 并没有一套统一的记忆系统。Chat、Projects、Claude Code,以及基于 Claude API 构建的应用,使用的是不同的机制。它们存储的内容不同、位置不同,边界也不同。
本文将通过三个问题梳理这些机制:
本文基于 2026 年 8 月 4 日可查阅的产品文档撰写。Claude 的记忆体验目前正在迁移,因此你的套餐和设置界面可能有所不同。请查看相关官方文档,以及你自己账户中显示的设置。
我还在 Speaker Deck 上制作了一份 15 页的日文概览。
“六个容器”是我个人整理这套产品的方式,并不是 Anthropic 的官方分类。
从整体上看,这张图大致如下:
Claude Chat Claude Code Your application
chat memory CLAUDE.md Claude API
project memory .claude/rules/ ↓
past chat search auto memory memory tool request
↓
storage you control
三列之间没有箭头,因为这些记忆并不会自动跨系统共享。
Claude 在普通聊天中了解到的内容,不会自动成为 Claude Code 的 auto memory。CLAUDE.md 文件不会自动出现在 Claude Chat 中。API memory tool 也不是一个可以读取 Claude Chat 账户记忆的端点。
第一个很容易被忽视的区别是:记忆和历史聊天搜索是两个独立的功能。
记忆会保留从对话中提取出来、可能在后续交流中仍然有用的信息,例如你的角色、当前工作、沟通偏好、常用工具和技术偏好。
历史聊天搜索不会预先存储所有对话的摘要。Claude 会在需要某项细节时搜索原始对话记录。发生搜索时,它会在对话中显示为一次 tool call。
两者在实际使用中的区别是:
Anthropic 在《Use Claude's chat search and memory to build on previous context》中记录了这两种行为。
截至本文写作时,Claude 正在将用户迁移到改进后的记忆体验。
如果你在 Settings > Memory 中看到记忆设置,说明你使用的是改进版体验。记忆会以独立条目的形式存储,并按类别分组;Claude 会实时读取、写入和更新这些条目。Anthropic 表示,这套体验面向 Free、Pro 和 Max 用户提供,并正在成为新用户的默认体验。
如果你在 Settings > Capabilities 下看到记忆设置,说明你使用的是旧版体验。它会生成一份综合记忆摘要,并大约每 24 小时更新一次。在当前迁移阶段,Team 和 Enterprise 用户仍会继续使用这套体验。
历史聊天搜索的套餐边界有所不同:Anthropic 目前将其列为 Pro、Max、Team 和 Enterprise 套餐提供的功能。
因此,不应该把“记忆”和“搜索”当作同一个功能的两种叫法。
它不会跨越这条边界,对整个账户的两侧进行统一搜索。
因此,以下搜索按设计就不会成功:
每个项目也拥有独立的记忆空间和项目摘要。Project A 不会继承项目外积累的记忆,Project B 也不会继承 Project A 的记忆。
这种隔离有时会让人觉得 Claude 忘记了某些内容。但也正是这种机制,避免了一个客户的上下文泄露到另一个客户的项目中。
在改进版记忆体验中,删除原始对话或等待它过期,并不会移除从中生成的记忆条目。你需要在 Settings > Memory 中删除这些条目,或者彻底重置记忆。
在旧版体验中,删除对话会将其从综合记忆中移除。Anthropic 表示,综合记忆会在 24 小时内完成更新。
如果你只是想阻止搜索,可以在相应的设置界面中关闭 Search and reference chats,而不必删除每一段对话。
不过,自定义风格和个人偏好等 profile 信息仍可能在这类聊天中可用。
关闭窗口后,对话数据也不会立即被清除。Anthropic 表示,Incognito Chat 默认会保留 30 天。Enterprise 组织可以配置更长的保留期限,Team 和 Enterprise 的数据导出也会包含 Incognito Chat。
因此,它适合用来进行你不希望延续到未来聊天中的对话,而不是充当“敏感信息绝不可能被保留的地方”。
当前的数据保留和功能可用性详情,请参阅《Use incognito chats》。
每个 Claude Code 会话都会从一个全新的 context window 开始。以下两种机制负责在会话之间传递知识:
Anthropic 在《How Claude remembers your project》中介绍了这两种机制。
你可以把不想反复解释的内容写入 CLAUDE.md:
常见的文件位置具有不同的作用域:
CLAUDE.local.md 用于存放个人的、特定于项目的指令,但 Git 并不会神奇地让它保持私密。如果你不希望提交这个文件,请把它加入 .gitignore。
这些文件提供的是上下文,而不是强制执行的硬性规则。Claude Code 会把发现的指令拼接起来。它不会保证距离当前文件更近的指令一定覆盖所有较早加载的指令。因此,互相矛盾的规则可能导致行为不一致。
对于较大的项目,可以把指令拆分成 .claude/rules/ 下任意命名的 Markdown 文件:
.claude/
├── CLAUDE.md
└── rules/
├── testing.md
├── api-design.md
└── frontend/
└── accessibility.md
没有 paths front matter 的规则会应用于整个项目。添加 paths 后,只有当 Claude 处理匹配的文件时,才会加载该规则:
---
paths:
- "src/api/**/*.ts"
---
# API development rules
- Validate input at every endpoint.
- Use the shared error response format.
Auto memory 会存储 Claude 判断可能对未来会话有用的内容,例如构建命令、调试发现、架构笔记、代码风格偏好和工作流习惯。
默认情况下,每个仓库都会获得一个类似下面这样的本地目录:
~/.claude/projects/<project>/memory/
├── MEMORY.md
├── debugging.md
├── api-conventions.md
└── ...
<project> 根据 Git 仓库推导得出,并不是一个需要你手动选择的名称。
MEMORY.md 是入口文件。Claude Code 会在对话开始时加载它的前 200 行或 25 KB 内容,以先达到的限制为准。debugging.md 等更详细的文件则会按需读取。
这里最重要的边界是机器:
运行 /memory 可以查看或编辑这些文件,也可以切换 auto memory 的启用状态。所有内容都是纯 Markdown。
我使用以下晋升规则:
Auto memory 很适合作为笔记本,但它不应该成为团队所依赖知识的唯一副本。
Claude API memory tool 是另一套名称相似、但存储模型完全不同的机制。
Claude 可以在逻辑上的 /memories 路径下请求 create、read、update 和 delete 等文件操作。你的应用负责执行这些操作,并返回结果。
这个工具在客户端运行。以下事项都由你的应用决定:
Anthropic 不会通过这个工具为你的应用提供账户级的记忆存储。文档对此说得很明确:Claude 负责请求操作,而你的基础设施负责在你控制的存储系统中执行操作。
请参阅 Memory tool 文档。
产品名称会发生变化,但这些边界更持久。
Chat memory 与 Claude Code 的指令文件和 auto memory 是彼此独立的系统。上下文不会自动向任何一个方向跨越。
Project memory 和历史聊天搜索都被限制在单个项目内部。创建一个项目,也就意味着创建了一条记忆边界。
Claude Code auto memory 默认存储在本机。在其他地方克隆仓库,并不会连同这些记忆一起复制过去。
Claude 在 Chat 中记住的与你有关的信息,目前不会传递到 Cowork。Cowork 可以在 Cowork projects 内维护独立记忆,并且每份记忆都限定在对应的项目中。请参阅《Get started with Claude Cowork》和《Organize your tasks with projects in Claude Cowork》。
记忆不会自动迁移到其他 AI 服务或自定义应用中。Claude 的 memory import 仍处于实验阶段,并且需要显式执行导入流程。基于 API 的应用必须自行实现存储和身份边界。
把同一条信息复制到所有地方,并不一定会让系统更安全。这样做会产生多个副本,而这些副本可能逐渐过时或彼此矛盾。
在重新提供信息之前,先问:
“Claude 记得吗?”通常是一个过于宽泛的问题。
更有用的问题是:
我正在使用哪套记忆系统?它的边界止于哪里?
最初以日文发布于 Zenn:《Claudeの「記憶」はどこにある? チャット・Claude Code・APIの境界を整理する》
这个英文版本是在 AI 辅助下,根据一篇经过我认真审阅和修改的日文文章翻译并编辑而成。对于最终发布的内容,责任仍由我承担。
如需采取进一步措施,你可以考虑屏蔽此人和/或举报滥用行为。