Skip to content

第十五章:记忆系统

每次对话都重新开始——除非有例外

Claude Code 在每次新对话中没有对上一次对话的记忆。它不记得你上周修复的那个 Bug,不记得你上个月做的架构决策,也不记得你昨天提到的测试命令。每次对话都从一张白纸开始。

这个设计有真实的好处——它让一切变得可预期、清晰且尊重隐私。但它带来了一个实际问题:随着时间积累的重要上下文会丢失。

Claude Code 通过两个互补的记忆系统来解决这个问题:

  1. CLAUDE.md 文件 — 你自己编写的指令(见第十四章)
  2. 自动记忆 — Claude 自动为自己写下的笔记

本章重点介绍自动记忆:它是什么、如何工作、如何查看 Claude 保存了什么,以及如何管理它。


什么是自动记忆

当你使用 Claude Code 工作时,它会观察规律并学习值得在未来对话中记住的内容。它不需要你手动写下一切——Claude 会自动保存这些学习成果。

Claude 可能保存的内容示例:

  • "这个项目用 yarn test:watch 在监视模式下运行测试,不是 npm test"
  • "用户希望错误信息使用 AppError 类,而不是普通的 Error 对象"
  • "构建命令是 npm run build:prod——运行 npm run build 会产生用户不想要的开发构建"
  • "这个项目的 API 基础 URL 设置在 src/config.ts,不是 .env 文件"

这些是让 Claude 在下一次对话中更高效的小事实。不需要通过对话重新发现它们,Claude 已经知道了。

自动记忆需要 Claude Code v2.1.59 或更高版本。你可以用 claude --version 检查你的版本。


记忆存储在哪里

自动记忆作为纯文本文件存储在你的电脑上——不在云服务器上,也不会发送到任何地方。文件存放在:

~/.claude/projects/<project-name>/memory/

这个文件夹里有:

  • MEMORY.md — 主索引文件,在每次对话开始时加载
  • 额外的主题文件,如 debugging.mdapi-conventions.mdbuild-commands.md — 详细笔记,Claude 在需要时按需读取

MEMORY.md 文件的前 200 行或 25KB(以先到者为准)会自动加载到每次对话中。对于较长的笔记,Claude 会创建单独的主题文件,在相关时加载它们。

所有这些都是普通的 Markdown 文件。你可以像任何文本文件一样打开、阅读、编辑和删除它们。


自动记忆是如何创建的

Claude 根据两种信号来决定保存什么:

纠正和澄清: 当你纠正 Claude——"不,实际上用 pnpm,不是 npm"——Claude 通常会将这个作为需要记住的事情保存下来。

发现: 当 Claude 发现了你项目中不明显的东西——一个奇特的构建命令、一个不寻常的文件结构、一个非标准的命名约定——它可能会保存下来,这样下次就不需要重新发现了。

Claude 对保存的内容很有选择性。它不会把所有东西都倒进记忆——它保存那些在未来对话开始时真正有用的知识。

你有时会在 Claude Code 界面中看到"Writing memory"这样的提示。这意味着 Claude 正在根据学到的内容主动更新其记忆文件。


让 Claude 记住特定内容

你可以明确要求 Claude 保存某些内容:

Remember that the staging server is at staging.my-project.internal
and requires VPN access to reach
Always use `date-fns` for date manipulation in this project, not
`moment.js`. Add this to memory so you don't forget.
Remember that the QA team tests every Friday afternoon, so we should
avoid deploying on Friday mornings

Claude 会将这些内容保存到自动记忆中并确认已完成。

关键区别: 如果你想保存的是指令(Claude 应该遵循的规则),请将其添加到 CLAUDE.md。如果你想保存的是事实或上下文条目,自动记忆就可以了。两者都会在每次对话中加载;区别在于组织方式和意图。


查看和管理你的记忆

要查看 Claude 为某个项目保存的所有内容,在对话中运行:

/memory

这个命令显示:

  • 当前对话中加载的所有 CLAUDE.md 和规则文件
  • 打开自动记忆文件夹的链接
  • 启用或禁用自动记忆的开关

你可以点击列表中的任何文件,在文本编辑器中打开它。

编辑记忆: 自动记忆文件就是文本文件。打开它们,修改,删除行——Claude 下次对话会使用里面现有的内容。如果 Claude 保存了不正确或过时的内容,直接编辑文件即可。

删除记忆: 如果你想重新开始,可以从 ~/.claude/projects/<project>/memory/ 删除文件。或者删除整个文件夹来清除一个项目的所有记忆。

禁用自动记忆: 如果你不希望 Claude 自动保存笔记,在你的设置中添加:

json
{
  "autoMemoryEnabled": false
}

或者在对话中运行 /memory 并使用其中的开关。


何时使用记忆 vs. CLAUDE.md

两个系统都能跨对话持久化信息。如何决定使用哪个?

使用 CLAUDE.md 时:

  • 你想有意识地编写具体指令
  • 这些信息应该与整个团队共享(通过版本控制)
  • 它是规则或规范,而不只是事实
  • 你希望完全掌控 Claude 看到的内容

使用自动记忆时:

  • 你希望 Claude 在不需要你干预的情况下逐渐积累知识
  • 这些信息是本机本地的、个人的(不与团队共享)
  • 你希望 Claude 随时间有机地学习你的偏好
  • 它是操作性上下文(构建命令、服务器地址、工作流事实)

实践中,大多数项目两者都用:CLAUDE.md 存放有意为之的规范,自动记忆存放 Claude 在工作过程中收集到的细节。


记忆系统在实践中

以下是两个系统在项目整个生命周期中如何协同工作的过程:

第一周: 你开始一个新项目。你编写了一个包含基本项目结构、构建命令和团队约定的 CLAUDE.md。自动记忆是空的。

第二周: 你纠正了 Claude 几次:"用 pnpm,不是 npm"和"测试环境需要 TEST_MODE=true 标志"。Claude 把这些保存到自动记忆中。

第三周: Claude 发现你的项目有一个奇特的部署脚本,并保存了相关命令。你的自动记忆现在包含了有用的操作性知识。

第八周: 一个新队友加入。他们从 Git 自动获得你的 CLAUDE.md。他们不会得到你的自动记忆(它在你的本机上)——但他们可以很快建立自己的。

六个月后: 你的 CLAUDE.md 已经包含了完善的团队规范。你的自动记忆积累了几十个小事实,让 Claude 在你的代码库中能立刻高效工作,不需要重新学习任何东西。


隐私与自动记忆

自动记忆存储在你的本机上。Claude 不会将你的自动记忆发送到 Anthropic 的服务器,也不会用它来训练模型。这些文件是你的。

有一点需要注意:Claude 永远不会把 API 密钥、密码或认证令牌等敏感信息保存到记忆中。如果你让它记住一个密钥,它应该拒绝并解释密钥应该存放在环境变量中,而不是记忆文件里。

如果你想在共享设备或项目目录之前验证记忆中有什么,运行 /memory 并查看列出的文件。


一个实用技巧

建立有用自动记忆的最自然方式,是经常使用 Claude Code,并在它出错时纠正它。随着时间推移,这些纠正积累成一份有用的、记录你的偏好和项目特点的档案。

如果你在新电脑上开始工作,或者想快速让一个新项目达到速度,你可以手动播种记忆,方式是告诉 Claude:

Let me tell you some things about this project that I want you to
remember for future sessions...

然后描述最重要的上下文。Claude 会保存你告诉它的内容,下次对话时就已经准备好了。


下一章: 第十六章 — IDE 集成 — 如何在 VS Code、Cursor、JetBrains 中使用 Claude Code,以及如何为你的工作流选择合适的设置。

Released under CC BY-SA 4.0.