Claude Code 记忆机制详解:从 CLAUDE.md 到 Auto Memory,六层体系全拆解

Claude Code 记忆机制详解:从 CLAUDE.md 到 Auto Memory,六层体系全拆解

本文已收录到 AI编程一站式导航。本文链接:[03.9 2026 年最佳 AI 编码工具完全指南](code.ai80.vip/ai-tool-gui... 2026 年最佳 AI 编码工具完全指南) 强烈推荐:AI编程巴士网站:稳定纯净的ClaudeCode套餐供应

用过 Claude Code 一段时间的人大概都有这个体验:关掉会话,第二天回来,它什么都不记得了。项目用什么包管理器、代码风格怎么约定、上次调试到哪里------全要重新解释一遍。

Anthropic 最近推出了 Auto Memory 功能,让 Claude Code 在工作过程中自己记笔记,下次打开直接继承上下文。

听起来很美好,但如果你不理解它的记忆体系是怎么分层的,很容易搞出一堆互相矛盾的指令,或者发现"明明告诉过它"的东西下次又忘了。这篇把 Claude Code 的记忆机制从头理清。


一、两种记忆

Claude Code 的记忆分两大类:

  • CLAUDE.md --- 你写给它的指令。类似于项目的 .editorconfig.eslintrc,只不过是用自然语言写的
  • Auto Memory --- 它自己写给自己的笔记。工作过程中发现的模式、踩过的坑、你的偏好,它会主动记下来

一个是你在管它,一个是它自己在总结经验。


二、六层记忆结构

CLAUDE.md 不是一个文件,而是一个层级体系。从全局到局部,Claude Code 会依次加载:

层级 位置 谁维护 共享范围
组织策略 /Library/Application Support/ClaudeCode/CLAUDE.md IT/DevOps 组织内所有人
项目记忆 ./CLAUDE.md./.claude/CLAUDE.md 团队 通过 Git 共享
项目规则 ./.claude/rules/*.md 团队 通过 Git 共享
用户记忆 ~/.claude/CLAUDE.md 个人 所有项目
项目本地 ./CLAUDE.local.md 个人 仅当前项目
Auto Memory ~/.claude/projects/<project>/memory/ Claude 自己 仅你自己

越具体的层级优先级越高 。项目规则覆盖用户偏好,本地配置覆盖项目配置。这个设计很像 Git 的配置层级:--system--global--local


三、CLAUDE.md 怎么写

CLAUDE.md 本质上就是 Markdown 文件,用自然语言写指令。比如:

markdown 复制代码
# 项目约定
- 使用 pnpm,不要用 npm
- 测试命令:pnpm test
- 提交前必须跑 lint

# 代码风格
- TypeScript 严格模式
- 组件用 PascalCase,工具函数用 camelCase
- 不要自动加注释和 docstring

几个实用建议:

把常用命令写进去 。Claude Code 每次都要去翻 package.json 找构建命令,不如直接告诉它。

写具体的约定,不写模糊的要求。"代码要简洁" 没什么用,"函数不超过 30 行" 才有约束力。

/init 自动生成。Claude Code 会扫描项目结构,生成一份基础的 CLAUDE.md。不完美,但比从零开始快。


四、模块化规则

当项目变大,一个 CLAUDE.md 会变得又长又杂。.claude/rules/ 目录解决这个问题------按主题拆分成独立文件:

bash 复制代码
.claude/rules/
├── frontend/
│   ├── react.md
│   └── styles.md
├── backend/
│   ├── api.md
│   └── database.md
└── testing.md

更有意思的是条件规则------只在处理特定文件时生效:

yaml 复制代码
---
paths:
- "src/api/**/*.ts"
---

# API 开发规则
- 所有端点必须做输入校验
- 使用标准错误响应格式

所有 rules 文件在启动时都会被读取(包括 paths 元数据),但带 paths 的规则只在 Claude 实际读写匹配文件时才生效 。处理前端代码时这条规则不起作用,只有碰到 src/api/ 下的 TypeScript 文件时才会生效。


五、Auto Memory 是什么

这是新功能。以前所有记忆都要你手动维护,现在 Claude Code 会在工作过程中自己记笔记

Claude Code 会悄悄记下和你一起工作时发现的东西:构建命令、代码风格偏好、架构决策,甚至你们一起解决过的棘手 bug。它记什么:

  • 项目模式:构建命令、测试约定、代码风格
  • 调试经验:遇到过的坑、解决方案
  • 架构笔记:关键文件、模块关系
  • 你的偏好:沟通风格、工作习惯、工具选择

存在 ~/.claude/projects/<project>/memory/ 下,每个项目独立。目录结构是:

bash 复制代码
memory/
├── MEMORY.md          # 索引文件,每次启动加载前 200 行
├── debugging.md       # 调试相关笔记
├── api-conventions.md # API 设计决策
└── ...

下次打开新会话,这些上下文会自动加载,接着上次的地方继续------不用再重新介绍自己的项目了。

MEMORY.md 是入口。Claude Code 启动时只加载这个文件的前 200 行,所以它需要保持精简。详细内容放在独立的主题文件里,Claude 需要时再读取。


六、Auto Memory 的边界

Auto Memory 默认开启。如果不想用:

  • 对话里跑 /memory,有个开关可以关
  • ~/.claude/settings.json 里加 "autoMemoryEnabled": false
  • 环境变量 CLAUDE_CODE_DISABLE_AUTO_MEMORY=1 强制关闭(适合 CI)

你也可以主动让它记住东西:

"记住我们用 pnpm 不用 npm" "保存到记忆:API 测试需要本地 Redis"

反过来也行:

"忘掉之前关于 Redis 的记忆"

记忆文件就是普通 Markdown,随时可以手动编辑。跑 /memory 会打开你的编辑器。


七、导入机制

CLAUDE.md 支持 @path/to/file 语法导入其他文件:

markdown 复制代码
参考 @README 了解项目概况,@package.json 查看可用命令。

# 额外指令
- Git 工作流 @docs/git-instructions.md

相对路径基于当前文件所在目录解析,不是工作目录。支持递归导入,最深 5 层。

一个实用场景:如果你用 Git worktree,CLAUDE.local.md 只存在于一个 worktree 里。把个人配置放到 home 目录,然后导入:

markdown 复制代码
# 个人偏好
- @~/.claude/my-project-instructions.md

这样所有 worktree 共享同一份个人指令。


八、加载时机

理解加载时机很重要,否则你会纳闷"为什么没生效":

  • 启动时全量加载 :工作目录往上的所有 CLAUDE.mdCLAUDE.local.md~/.claude/rules/*.md、Auto Memory 的 MEMORY.md 前 200 行
  • 按需加载:子目录下的 CLAUDE.md 只在 Claude 读取那个目录的文件时才加载;Auto Memory 的主题文件在需要时读取
  • 条件加载.claude/rules/ 里有 paths 字段的规则只在匹配文件时生效

这意味着你可以在 monorepo 的每个子包里放自己的 CLAUDE.md,不会一开始就把所有指令都塞进上下文。


怎么用才合理

几条建议:

  • 项目 CLAUDE.md 写团队共识,提交到 Git------构建命令、代码规范、架构决策
  • CLAUDE.local.md 写个人偏好 ,它自动加到 .gitignore------你的测试数据路径、沙箱 URL
  • Auto Memory 让它自己跑,定期检查一下 MEMORY.md 有没有记错的
  • 不要重复。如果 CLAUDE.md 里已经写了 "用 pnpm",Auto Memory 再记一遍就是噪音
  • 保持精简MEMORY.md 超过 200 行就会被截断,把细节移到独立文件

记忆越多不代表越好。Claude Code 每次启动都会把这些内容塞进 system prompt,占的是上下文窗口。写得精准、组织得清楚,比写得多更重要。

本文已收录到 AI编程一站式导航。本文链接:[03.9 2026 年最佳 AI 编码工具完全指南](code.ai80.vip/ai-tool-gui... 2026 年最佳 AI 编码工具完全指南) 强烈推荐:AI编程巴士网站:稳定纯净的ClaudeCode套餐供应

相关推荐
LSTM972 小时前
使用 C# 和 Spire.PDF 从 HTML 模板生成 PDF 的实用指南
后端
JaguarJack2 小时前
为什么 PHP 闭包要加 static?
后端·php·服务端
BingoGo2 小时前
为什么 PHP 闭包要加 static?
后端
是糖糖啊3 小时前
OpenClaw 从零到一实战指南(飞书接入)
前端·人工智能·后端
百度Geek说3 小时前
基于Spark的配置化离线反作弊系统
后端
Java编程爱好者3 小时前
虚拟线程深度解析:轻量并发编程的未来趋势
后端
苏三说技术4 小时前
Spring AI 和 LangChain4j ,哪个更好?
后端
Soofjan4 小时前
(二)数组和切片
后端