MemoryLake
返回全部文章
Tutorial2026 年 10 月 30 日·10 分钟阅读

什么是 Claude Code 自动记忆?MEMORY.md 的位置、每会话加载内容及关闭方法 (2026)

你纠正一次 Claude Code,第二天它就会记住。或者你在终端看到一行提示说它保存了几条记忆,你想知道这些记忆去了哪里以及里面有什么。这就是自动记忆,它是 Claude Code 记忆系统中由 Claude 为自己编写的那一半。

Anthropic 的记忆文档用一句话描述了它:“自动记忆让 Claude 无需你编写任何内容即可跨会话积累知识。”它在本地会话中默认开启,存储在你机器上的一个文件夹中,且在会话开始时仅加载其中的一部分。

本指南涵盖了自动记忆保存的内容、MEMORY.md 及其主题文件的存放位置、每次对话开始时加载的内容、如何关闭它,以及当它似乎不起作用时需要检查的事项。

什么是自动记忆

Claude Code 有两个记忆系统。Anthropic 的文档指出“两者都会在每次对话开始时加载”。区别在于谁来编写它们:

  • CLAUDE.md 文件:由你编写。它们包含指令和规则:编码标准、工作流、项目架构。
  • 自动记忆:由 Claude 编写。它包含学习到的内容和模式:“你的偏好、你给 Claude 的纠正、Claude 无法从代码中推导出的项目上下文”。

两者都是上下文,而非配置。Anthropic 表示 Claude “将它们视为上下文,而非强制配置”。如果你需要无论如何都必须强制执行的内容,文档建议使用 hook(钩子)。

Claude 保存什么,跳过什么

在工作过程中,Claude 会保存四种类型的笔记,每种笔记在记忆文件中都记录为一个类型字段:

  • user:“你的角色、专业知识和工作偏好”
  • feedback:“你给 Claude 的纠正以及你确认的方法”
  • project:“正在进行的工作、截止日期以及 Claude 无法从代码或 git 历史中推导出的决策”
  • reference:“在项目之外寻找信息的位置,例如问题追踪器或仪表板”

它也会有目的地遗漏一些内容。“Claude 会跳过任何它可以从代码库中推导出的内容,例如架构、文件路径或调试修复。它还会跳过你的 CLAUDE.md 文件中已经提到的任何内容。”

而且它并不会在每次会话中都保存内容。“Claude 不会每个会话都保存内容。它会根据信息在未来对话中是否有用来决定什么值得记住。”

你也可以直接要求它记住。Anthropic 的示例:当你要求 Claude 记住某些内容(如始终使用 pnpm 而非 npm)时,“Claude 会将其保存到自动记忆中”。若要将指令放入 CLAUDE.md 中,请明确提出要求或自行编辑文件。

MEMORY.md 存储在哪里

“每个项目在 ~/.claude/projects/<project>/memory/ 都有自己的记忆目录。”项目路径来自你的 git 仓库,因此“同一仓库内的所有工作树(worktrees)和子目录共享一个自动记忆目录”。在 git 仓库之外,则使用项目根目录。

在目录内部,MEMORY.md 是索引,每条记忆占一行,且每条记忆都有自己的主题文件。Anthropic 将 MEMORY.md 描述为“记忆目录的索引”。

该文件夹的三个属性值得了解:

  • 它是机器本地的:“文件不会跨机器或云环境共享。”关于 Claude Code 在另一台机器上遗忘所有内容的指南 介绍了这在实践中意味着什么。
  • 它在工作树之间共享:一个仓库对应一个记忆文件夹,无论你打开多少个工作树。关于工作树是否共享记忆的指南 介绍了每个工作树会话加载的内容。
  • 它不会随转录文本一起清理:Claude Code 会在保留期后删除旧的会话转录文本,但记忆文件被排除在外。“MEMORY.md 和主题文件会一直保留,直到你或 Claude 编辑或删除它们。”

将其移动到其他位置

若要在其他位置存储自动记忆,请在设置中设置 autoMemoryDirectory。文档指出该值“必须是绝对路径或以 ~/ 开头”。当在项目的设置文件中设置时,Claude Code 会应用与 hook 相同的辅助工作区信任规则。

每次会话开始时加载什么

并非所有的自动记忆都会一次性加载。“MEMORY.md 的前 200 行或前 25KB(以先到者为准)会在每次对话开始时加载。超过该阈值的内容在会话开始时不会被加载。”

主题文件的工作方式不同。“Claude Code 在启动时不会加载诸如 user_role.md 或 feedback_testing.md 之类的主题文件。当 Claude 需要信息时,它会使用其标准文件工具按需读取它们。”

保持索引在限制范围内

Claude Code 会监控索引大小。在 Claude 写入 MEMORY.md 后,Claude Code 会根据 200 行和 25KB 的限制对其进行检查。接近限制时,它会提醒 Claude 缩短文件:每条记录占一行,细节移至主题文件,陈旧记录被合并或删除。超过限制时,写入仍会成功,但 Claude 会被要求重写索引,“因为超过限制的所有内容在下次加载时都会被丢弃”。

此限制专门针对 MEMORY.md。Anthropic 指出,Claude 会获取启动时加载的每个 CLAUDE.md 文件的全部内容,最高可达 4 MiB。子目录 CLAUDE.md 文件和路径范围规则有其各自更小的限制;关于子目录 CLAUDE.md 限制的指南 涵盖了这一点。

子代理(Subagents)与分叉(Forks)

“主对话的自动记忆不会加载到子代理中;例外是分叉(fork),它继承了父对话和系统提示词。”子代理可以拥有自己的自动记忆,通过其 memory 字段启用,并存储在单独的目录中。

界面会告诉你什么

当 Claude 读取或写入记忆时,你会看到提示。Anthropic 表示,诸如“Saved 2 memories(已保存 2 条记忆)”或“Recalled 2 memories(已召回 2 条记忆)”之类的界面消息意味着 Claude 正在“积极更新或读取”记忆文件夹。每个带有 frontmatter 的记忆文件还会获得一个修改时间戳,这“向你和 Claude 在读取记忆时展示了该事实的时效性”。

如何开启或关闭自动记忆

“自动记忆在本地会话中默认开启。”在自托管环境中运行的会话默认关闭,Claude Tag 会话除外。

有三种方法可以关闭它:

  • 使用 /memory 开关:在会话中打开 /memory 并使用自动记忆开关。它会将 autoMemoryEnabled 保存到你的用户设置中。
  • 按项目设置:在该项目的设置中将 autoMemoryEnabled 设置为 false。
  • 环境变量:设置 CLAUDE_CODE_DISABLE_AUTO_MEMORY=1。

为什么开关无法重新开启它

有一种情况需要注意。开关可以关闭自动记忆,但无法在后台会话或由另一个 Claude Code 会话启动的会话中重新开启它。在这些情况下,开关会显示 off · can't be turned on here; use a session started outside Claude Code(已关闭 · 无法在此处开启;请使用在 Claude Code 外部启动的会话)。要重新开启它,请直接在终端运行 Claude Code 并在那里使用 /memory。

如何查看和编辑已保存的内容

“自动记忆文件是纯 Markdown 格式,你可以随时编辑或删除。”运行 /memory 来浏览并打开它们。它会列出你的 CLAUDE.md 文件和记忆位置,允许你切换自动记忆,并提供打开自动记忆文件夹的选项。

如果你不确定自动记忆保存了什么,Anthropic 的故障排除建议非常直接:“运行 /memory 并选择自动记忆文件夹以浏览 Claude 保存的内容。”

在 VS Code 扩展中,“自定义”菜单中有一个“记忆”条目,显示自动记忆开关、已保存的记忆和记忆文件夹。

自动记忆 vs CLAUDE.md:各归其位

Anthropic 的划分是一个非常有用的规则:“当你想要引导 Claude 的行为时,使用 CLAUDE.md 文件。自动记忆则让 Claude 无需手动干预即可从你的纠正中学习。”

  • 团队规则和标准 属于 CLAUDE.md,并提交到版本控制中,以便每个人都能获取。对于仅适用于某些文件的规则,关于 Claude Code 规则的指南 涵盖了路径范围加载。
  • 你的偏好和纠正 适合放在你机器上的自动记忆中。
  • 使用 AGENTS.md 的仓库 遵循其自身的加载规则;关于 Claude Code 和 AGENTS.md 的指南 解释了何时读取它。

当自动记忆似乎不起作用时

它在此会话中已关闭。 检查 /memory。后台会话和由另一个 Claude Code 会话启动的会话无法重新开启它。

你处于不同的仓库路径。 文件夹是按仓库划分的。在另一个位置克隆的相同代码可能会获得不同的文件夹。

你在另一台机器上。 自动记忆不会在机器之间或云环境之间同步。

索引超过了限制。 MEMORY.md 中超过前 200 行或 25KB 的任何内容都不会加载。

你处于子代理中。 子代理不会加载主对话的自动记忆,除非它们是分叉(forks)。

Claude 认为不值得保存。 它不会在每个会话中都保存。请明确要求它记住某些内容。要查找旧会话讨论的内容,关于查找 Claude Code 会话历史的指南 介绍了转录文本的存放位置。

人们首先尝试的操作

像编辑 CLAUDE.md 一样编辑 MEMORY.md。 这可行,但 MEMORY.md 是 Claude 维护的索引。你希望被遵循的规则应该放在 CLAUDE.md 中。

任由索引增长。 超过 200 行或 25KB 后,剩余部分在会话开始时不会加载。

期望在第二台机器上拥有记忆。 文件夹是机器本地的。

从后台会话重新开启它。 无法在那里开启。请使用直接在终端启动的会话。

认为删除转录文本会同时删除记忆。 记忆文件不包含在转录文本清理范围内。

解决方案:保持自动记忆精简、及时且位置正确

第 1 步:查看现有内容

运行 /memory,打开自动记忆文件夹,并阅读 MEMORY.md。检查每一行是否仍然正确。删除陈旧的内容;这些文件是纯 Markdown 格式。

第 2 步:将规则移至 CLAUDE.md

任何应该适用于项目中每个人的内容,或者你希望每次都被遵循的内容,都属于 CLAUDE.md。要求 Claude 将其添加到那里,或通过 /memory 编辑该文件。

第 3 步:决定哪些内容需要迁移

自动记忆保留在单台机器和单个仓库中。对于你需要在跨机器、跨仓库或跨工具使用的偏好和决策,请在不与此文件夹绑定的地方保留一份副本。

在 MemoryLake 中设置

自动记忆在单台机器上的单个仓库内运行良好。它的局限性源于相同的设计:文件夹是按仓库划分的,它不会离开你的机器,且仅加载索引的第一部分。你希望随处可用的偏好和决策不会随之迁移。

MemoryLake 是一个记忆层,用于将这些内容保存在一个由你维护的列表中,供 Claude Code 以及你连接的其他助手(如 ChatGPT 和 Codex)使用。

你用自己的语言亲自编写条目。不会从你的自动记忆文件夹、MEMORY.md、CLAUDE.md 文件或任何供应商的存储中读取、写入或删除任何内容。自动记忆将继续按照 Anthropic 描述的方式工作。

第 1 步:创建 API 密钥

登录并从控制面板生成密钥。该密钥属于你的 MemoryLake 工作区,与你的 Claude 账户是分开的。

MemoryLake 控制台显示 API 密钥屏幕,在此处创建并复制新密钥以供代理使用
MemoryLake 控制台显示 API 密钥屏幕,在此处创建并复制新密钥以供代理使用

第 2 步:上传你的第一批记忆

从你在解决方案第 3 步中确定的内容开始:那些你需要在单个仓库之外使用的偏好和决策。每条记录一个要点,并注明日期,以便清楚每条记录的时效性。

MemoryLake 工作区显示已上传的首批文档,列出了每个文件成为可搜索记忆的过程
MemoryLake 工作区显示已上传的首批文档,列出了每个文件成为可搜索记忆的过程

第 3 步:连接你的 AI 和代理

连接 Claude Code 和你使用的其他助手。相同的事实将在另一台机器、另一个仓库或另一个工具中可用。

MemoryLake 集成屏幕列出了可以连接到记忆层的 AI 客户端和代理框架
MemoryLake 集成屏幕列出了可以连接到记忆层的 AI 客户端和代理框架

这在实践中带来了哪些改变

第一个区别是自动记忆不再是一个黑盒。你知道它在哪里、它保存了什么以及加载了多少内容。

第二个区别是当它表现异常时你可以修复它。大多数问题都可以归结为开关、仓库路径、机器、索引限制或子代理。

第三个区别是每种上下文最终都会出现在最适合它的地方。规则放在 CLAUDE.md 中,个人纠正放在自动记忆中,而任何需要迁移的内容则放在其专属的位置。

Claude Code 自动记忆的最佳实践

偶尔阅读 MEMORY.md。 它是纯 Markdown 格式,陈旧的行会消耗上下文。

保持索引简短。 只有前 200 行或 25KB 会加载。

将团队规则放入 CLAUDE.md。 自动记忆是按机器和按用户划分的。

明确要求 Claude 记住。 它不会在每个会话中都保存内容。

使用统一的仓库路径。 记忆是与 git 仓库关联的。

从直接会话中重新开启。 后台会话只能关闭它。

为其他机器做好规划。 自动记忆不会同步。

结论

Claude Code 自动记忆是 Claude 为自己编写的一组笔记:你的偏好、纠正、项目上下文和参考资料。它存储在你机器上按仓库划分的文件夹中,以 MEMORY.md 作为索引。该索引的前 200 行或 25KB 会在每次对话开始时加载,主题文件则在需要时读取。

它在本地会话中默认开启,你可以通过 /memory、项目设置或环境变量将其关闭。当它似乎不起作用时,请检查开关、仓库、机器、索引大小以及你是否处于子代理中。将规则保留在 CLAUDE.md 中,并保持索引简短。

常见问题

什么是 Claude Code 中的自动记忆?

它是 Claude 在工作时为自己编写的笔记,例如你的偏好和纠正。Anthropic 表示,它让 Claude 无需你编写任何内容即可跨会话积累知识。

Claude Code 的 MEMORY.md 存储在哪里?

存储在 ~/.claude/projects/<project>/memory/ 中,其中项目路径来自你的 git 仓库。你可以通过 autoMemoryDirectory 更改它。

Claude Code 会加载多少 MEMORY.md 内容?

在每次对话开始时,加载前 200 行或前 25KB(以先到者为准)。主题文件按需加载。

如何关闭 Claude Code 中的自动记忆?

使用 /memory 中的开关,在项目设置中将 autoMemoryEnabled 设置为 false,或设置环境变量 CLAUDE_CODE_DISABLE_AUTO_MEMORY=1。

MEMORY.md 和 CLAUDE.md 有什么区别?

你编写包含指令和规则的 CLAUDE.md。Claude 编写自动记忆(由 MEMORY.md 索引),包含学习到的内容和偏好。

Claude Code 自动记忆会跨机器同步吗?

不会。Anthropic 表示这些文件是机器本地的,不会跨机器或云环境共享。