CHAPTER 05 / 11
记忆与 CLAUDE.md
一篇文章讲清楚Claude Code的记忆和CLAUDE.md
如果你已经开始长期使用 Claude Code,你一定遇到过这种情况:新开一个会话, Claude 又开始不知道你的技术栈、忘了项目结构、重新猜代码规范、API 路由写错位置、Tailwind 不用又开始手写CSS、pnpm 项目给你输出 npm 命令……
于是你只能再说一遍:项目用的是 Next.js 15,不要写注释,统一使用Tailwind ,组件必须写 TypeScript 类型……
刚开始你会觉得还行,但重复几十次后你会发现,真正消耗你的,不是写代码,而是反复纠正 AI。而 CLAUDE.md, 就是解决这个问题的核心。
很多人以为它只是一个配置文件,但实际上它更像是 Claude 的“长期记忆系统”。
这一篇,我们就彻底讲清楚为什么 CLAUDE.md 是 Claude Code 最重要的功能之一,如何让 Claude 真正理解你的项目,什么是 Memory 分层,以及,高质量的 CLAUDE.md 应该怎么写。
为什么你需要给 Claude 装一个“外接大脑”?
默认情况下, Claude Code 每次启动其实都是新人入职,它需要重新扫描目录、重新理解项目结构、猜测技术栈、推断你的代码风格、尝试理解哪些功能已经存在等。
问题就在这里,因为猜测永远不稳定。例如,你项目明明使用Next.js App Router,它却生成 pages/api;你已经全项目使用 Tailwind ,它又开始 style.css ;你用的是 pnpm,它输出 npm install。
很多人会觉得 Claude 怎么忽聪明忽笨?其实不是它笨,而是它缺少长期上下文。
什么是 CLAUDE.md?
官方对它的描述其实非常准确:CLAUDE.md 会给 Claude Code 提供持久记忆(Persistent Memory)。
它本质上是一个 Markdown 文件,通常放在项目根目录:
my-project/
├── src/
├── package.json
├── README.md
└── CLAUDE.mdClaude Code 每次启动时,都会自动读取它。
你可以把它理解成 AI 的项目说明书、AI 的团队规范、AI 的开发手册、AI 的长期记忆。它最关键的一点是,里面的内容会自动拼接进 Claude 的上下文。
也就是说,Claude 在开始工作之前,已经提前读过你的项目规则。
它真正解决的问题是什么?
很多人现在的使用方式其实是:每次重新教 Claude 一遍项目规则。例如,不要使用any,统一使用Tailwind API ,返回格式统一,提交前必须跑测试等。
时间久了之后,你会越来越疲惫。因为你不是在开发,你是在重复 onboarding AI。而 CLAUDE.md 的意义是把重复沟通,变成长期记忆。
这也是 Claude Code 和普通 AI Chat 最大的区别之一。
三个最重要的 Memory 操作
Claude Code 的 Memory 系统其实非常简单。
核心只有三个命令:
/init | CLAUDE.md |
/memory | |
# |
/init:一键生成 CLAUDE.md
这是新手最应该学会的命令。
进入项目目录后:/init ,Claude 会自动扫描项目,并生成一个初始版 CLAUDE.md。

通常会包含:
# 项目概览
# 技术栈
# 开发规范
# 常用命令这其实相当于自动给 AI 写了一份新人入职文档。
很多人一直停留在聊天模式,但真正高效的 Claude Code, 核心其实是项目协作模式。
我最推荐的功能:#
这是一个很多人很容易忽略,但极其高频的功能。例如:
# 所有组件必须使用 TypeScript 类型
# 默认使用 server actions
# 提交前运行 pnpm test
# 文件名统一 kebab-caseClaude 会自动把这些规则加入 Memory。

它最厉害的地方在于,你可以在开发过程中,持续“训练” Claude。
你会越来越有一种感觉,自己不是在用聊天机器人,而是在训练一个长期协作的 AI 工程师。
高手真正的习惯:把“纠错”沉淀成规则
官方其实提到一个非常关键的建议:如果你反复纠正 Claude,就应该把它写进 Memory。
例如你已经连续说了五次不要使用 API Routes,优先使用 Server Actions。那正确做法就不是继续重复提醒,而是直接写进 CLAUDE.md。
因为高频纠错,本质上就是团队规范。
这其实是很多人效率低的根源,他们一直在临时沟通,而高手已经开始沉淀制度。
Memory 其实是有“层级”的
很多人以为只有一个 CLAUDE.md,实际上,Claude 的 Memory 是分层的。
例如:
用户级:默认使用 TypeScript
项目级:当前项目统一使用 Next.js App Router
API目录:所有接口必须做参数校验,必须做限流Claude 会自动组合这些规则,并且越具体的规则,优先级越高。也就是说,子目录规则,会覆盖全局规则。这其实已经非常接近真正的软件工程体系了。
大型项目里, 很多高手会继续往下拆:
project/
├── CLAUDE.md
├── src/
│ ├── CLAUDE.md
│ └── api/
│ └── CLAUDE.md为什么? 因为不同模块,本来就应该有不同规范。
例如:
根目录:全项目使用 TypeScript ,默认使用 pnpm
api目录:所有接口必须做鉴权,必须考虑限流,返回结构统一
AI模块:Prompt 必须版本化,输出必须记录日志这时候, Claude 才真正拥有结构化工程上下文。
不要把 CLAUDE.md 写成垃圾桶
这是新手最容易犯的错误,什么都往里面塞:
README
产品文档
PRD
数据库设计
会议纪要
……结果会导致 Claude 根本抓不到重点。真正好的 CLAUDE.md,只有一个原则:只写会影响 Claude 行为的内容。例如:
✅ 应该写:
- 使用 2-space indentation
- 禁止 any
- 默认使用 Tailwind
- 提交前必须运行测试❌ 不应该写:
公司成立于2021年因为这些不会改变 Claude 的工作方式。
一个真正实用的 CLAUDE.md 模板
这是一个非常适合个人开发者的版本:
# 项目概览
本项目是一个基于 Next.js 15 的 AI 应用,
使用 Tailwind CSS 和 Drizzle ORM。
# 常用命令
- 启动开发服务器: `pnpm dev`
- 运行测试: `pnpm test`
- 代码检查: `pnpm lint`
# 代码风格
- 强制使用 TypeScript strict mode
- 禁止使用 any
- 使用 2 空格缩进
- 优先使用 Named Exports
- 文件名统一 kebab-case
# API 规范
- API Routes 必须放在 `app/api/`
- 优先使用 Server Actions
- 所有接口必须做错误处理
- 返回结构统一 Result<T>
# Git 工作流
- commit message 使用 conventional commits
- 提交前必须通过 lint 和 test你会发现,它已经非常像一个成熟团队的工程规范。
因为 Claude 本质上,已经开始承担数字化团队成员这个角色。
一个非常容易忽略的高级技巧:引用文档
如果你已经有:
README
CONTRIBUTING
API 文档
架构说明没必要全部复制进 CLAUDE.md。直接引用即可:
## 更多信息请参考:
@README.md这样 Claude 会在需要时主动阅读对应文件。
这会让你的 Memory 更干净、更聚焦和更容易维护。
官方建议一开始先别写,以及学会共享
这个建议其实特别有意思。官方提到:最开始可以先裸跑 Claude Code。
为什么?因为你需要观察 Claude 最容易犯什么错,这些高频纠错, 才是真正应该沉淀进 Memory 的内容。否则很多人一上来就会写出一个巨大的规则垃圾桶,真正高质量的 CLAUDE.md,通常都很克制。
因为它只保留真正影响 AI 行为的信息。
另外很多人会忽略的一点是,CLAUDE.md 应该提交进 Git。
因为它不只是你的个人配置,而是团队共享上下文。这样团队里的每个人新开会话、切换设备、新建分支时,Claude 都能得到一致上下文,最终带来的效果是 AI 输出开始标准化。
很多人以为,AI 编程的未来,是谁更会写 Prompt。但真正长期使用 Claude Code 后,你会慢慢发现,Prompt 更像对话技巧, 而 Memory 才是真正的协作能力。
因为软件工程从来都不是一次性的灵感爆发,而是长期积累下的规则、习惯、上下文与团队共识。真正成熟的工程体系,本质上都是“记忆系统”——代码规范是记忆,架构原则是记忆,团队流程也是记忆。
而 CLAUDE.md 的出现,本质上是第一次让 AI 开始参与这套长期记忆。它意味着,AI 不再只是一个回答问题的工具,而开始变成一个能够持续理解项目、理解团队、理解工作方式的协作者。
未来真正强大的开发者,也许并不是最会写代码的人,而是最会构建“人类 + AI”协作系统的人。因为当 AI 开始拥有记忆后,改变的就不只是效率,而是整个软件开发的组织方式。