彻底搞懂 Claude Code 的“记忆”机制:让 AI 拥有跨会话的“肌肉记忆”

每个 Claude Code 会话都从一张白纸开始,如何让它记住你的项目规范、调试经验和个人偏好?本文带你全面梳理 Claude Code 的记忆系统,从此告别每次都要重复说明的痛苦。

🧠 核心概念:Claude 的“记忆”到底是什么?

很多新手会误以为 Claude Code 像人一样有长期的“潜意识”,但实际上,Claude Code 每次启动都是一个全新的上下文窗口,它不会自动记住上次聊了什么。
所谓的“记忆”,本质上是:每次启动时,从磁盘读取一堆 Markdown 文件 → 注入到 Prompt → 当作上下文参考

目前,跨会话传递知识主要依赖两套系统:

  1. CLAUDE.md 文件:你手写给 AI 的规则。
  2. 自动记忆(Auto Memory):AI 自己记的笔记。
用一张图概括整个记忆系统的全貌:

Claude Code 记忆系统

CLAUDE.md

你手写的规则

项目 / 用户 / 组织级

启动时全部加载

自动记忆 Auto Memory

Claude 自己写的笔记

~/.claude/projects//memory/

MEMORY.md + 主题文件

规则 .claude/rules/

多文件模块化规则

支持 paths 限定作用范围

命令 /memory

查看和编辑所有记忆文件

开关自动记忆

故障排除

CLAUDE.md 不生效

自动记忆存了什么

文件太大

/compact 后指令丢失

⚠️ 重要提醒:这两个系统都是“参考上下文”,不是“强制配置”。Claude 会尽量遵守,但不保证 100% 绝对执行。


📝 一、CLAUDE.md:你写给 AI 的“长期指令”

这是你最核心的工具,用来告诉 Claude “你在这个项目里必须遵守的规矩”。

1. 什么时候该往里写东西?

  • Claude 第二次犯同样的错误时;
  • Code Review 发现它不懂的项目约定时;
  • 你在每个会话都要重复同一套纠正/说明时;
  • 新队友需要同样的上下文才能高效工作时。

原则:把“每次会话都应该知道的事实”写进去。(比如:构建命令、代码规范、项目架构、绝对不要做的事)

2. CLAUDE.md 的层级与作用域

Claude Code 会从当前目录往上遍历,串联所有找到的 CLAUDE.md,而不是覆盖。上层目录的先出现,靠近项目根目录的后出现(优先级更高)。

范围 文件位置(示例) 适用场景 共享对象
组织级指令 /Library/Application Support/ClaudeCode/CLAUDE.md (macOS) 等 全公司统一安全/合规规范 全组织
用户级指令 ~/.claude/CLAUDE.md 你的个人偏好(如:喜欢中文回复) 只自己
项目级指令 ./CLAUDE.md./.claude/CLAUDE.md 团队项目规范(需提交到 Git) 团队
本地指令 ./CLAUDE.local.md(需加入 .gitignore 你在本项目里的个人偏好/试错 只自己

💡 技巧:子目录里的 CLAUDE.md 不是启动就加载,而是 Claude 读取该子目录文件时才按需加载,这能节省 Token。

3. 编写最佳实践

  • 大小:每个文件目标 ≤ 200 行。太长会多吃 Token,且 AI 遵守度会下降。
  • 结构:用 Markdown 标题 + 列表,方便 AI 扫描。
  • 具体性:写可验证的指令。例如 ✅ “使用 2 空格缩进”,而不是 ❌ “正确格式化代码”。
  • 导入其他文件:可以用 @path/to/import 语法导入 README 等外部文件(最多 4 跳递归),首次使用会弹窗让你确认安全。

🗂️ 二、.claude/rules/:模块化的“规则库”

对于大型项目,把所有规则塞进一个 CLAUDE.md 会变得臃肿。官方推荐使用 .claude/rules/ 目录进行拆分。

your-project/
├── .claude/
│   ├── CLAUDE.md           # 主项目指令
│   └── rules/
│       ├── code-style.md   # 代码样式
│       ├── testing.md      # 测试约定
│       └── security.md     # 安全要求

杀手锏功能:路径限定
规则文件可以加 YAML frontmatter,限定只在处理某些文件时才触发规则,极大减少无关 Token 消耗:

---
paths:
  - "src/api/**/*.ts"
---
# API 开发规则
- 所有 API 端点必须包含输入验证
- 使用标准错误响应格式

🤖 三、自动记忆:AI 自己记的“小本本”

如果说 CLAUDE.md 是你给 AI 下发的员工手册,那自动记忆就是 AI 自己在工作中攒下来的经验笔记。

1. 工作机制

  • 当你纠正它时,它觉得有用的经验会自动保存下来。
  • 存储在本地 ~/.claude/projects/<project>/memory/ 目录下。
  • MEMORY.md 的前 200 行或 25KB 会在每次会话开始时自动加载,超出的部分会按主题拆分(如 debugging.md),在需要时按需读取。

2. 管理与控制

  • 默认开启,如果你不想让它自作主张记东西,可以通过 /memory 界面关闭开关,或在设置中配置 "autoMemoryEnabled": false
  • 自动记忆是机器本地的,不会同步到云端,也不会提交到 Git。

🎛️ 四、/memory 命令:一站式控制台

在会话中输入 /memory,是你管理和调试记忆系统的最佳入口:

  • 📋 查看:列出当前会话加载的所有 CLAUDE.md 和规则文件。
  • ✏️ 编辑:直接打开任何记忆文件进行修改。
  • 🔌 开关:一键开启/关闭自动记忆功能。

💡 当你跟 Claude 说“记住要用 pnpm”,它会存到自动记忆;如果你希望写进团队规范,明确说“把它加到 CLAUDE.md”,或者自己通过 /memory 编辑。


🛠️ 五、常见问题与避坑指南

Q1:为什么 Claude 不遵守我的 CLAUDE.md?

  1. /memory 确认文件是否真的被加载了。
  2. 检查指令是否太模糊,改用具体可验证的描述。
  3. 检查不同层级/文件之间是否有冲突规则,AI 遇到冲突会随机选一条。
  4. 如果是“必须在某时机执行”的命令(如提交前检查),应该用 Hook 而不是 CLAUDE.md。

Q2:CLAUDE.md 太大了怎么办?

  • 把只跟特定文件类型相关的规则挪到 .claude/rules/,加 paths 限定。
  • 修剪不是每个会话都需要的内容。

Q3:使用 /compact 压缩上下文后,指令好像丢了?

  • 项目根目录的 CLAUDE.md 在压缩后会自动从磁盘重新读取。
  • 但子目录中的 CLAUDE.md 需要等 AI 再次读取该子目录文件时才会重新加载。
  • 对策:把最核心的指令放在项目根目录的 CLAUDE.md 中。

💬 总结

Claude Code 的记忆系统设计非常优雅:你定基调(CLAUDE.md + Rules),它补细节(Auto Memory),通过 /memory 随时审视
掌握这套机制,你就能把 Claude Code 从一个“每次都要重新磨合的临时工”,调教成一个“深谙项目套路的资深搭档”。

📖 官方文档参考:https://code.claude.com/docs/zh-CN/memory

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐