外观
第5章 记忆管理
约 2126 字大约 7 分钟
2026-06-07
这一章来聊聊怎么让 Claude "记住"你的项目信息和个人偏好,省得每次都从头解释一遍。
5.1 为啥需要 CLAUDE.md?
想象一下这个场景,
你找了个新帮手,每次给他安排活儿,都得从头说一遍,"咱们项目用的是 TypeScript、数据库是 PostgreSQL、代码风格是 ESLint Airbnb 规范、测试用 Jest……"
说一次还行,每次都说,累不累?
CLAUDE.md 就是解决这个问题的。
它就是一个放在项目目录里的文件,Claude Code 每次启动时会自动读取它。在里面写好项目信息,Claude 就不用你每次都重复了。
CLAUDE.md 的层级结构
没有 CLAUDE.md,
你,"我们用的是 React + TypeScript..."
Claude,"好的"
你(下次),"我们用的是 React + TypeScript..."
Claude,"好的"
你(下下次),"我们用的是..." 😫
有 CLAUDE.md,
你(写好一次),"项目信息都在 CLAUDE.md 里"
Claude(每次自动读取),"我已了解项目背景" 😊5.2 CLAUDE.md 里写点啥?
建议写的内容
一定要写的,
- 项目简介 —— 一句话说清楚这个项目是干嘛的
- 用了哪些技术 —— 什么语言、什么框架、什么数据库
- 项目结构 —— 主要目录和文件都是干嘛的
- 编码规范 —— 希望 Claude 遵循的规则
建议也写上的,
- 常用命令 —— 怎么启动、怎么测试、怎么部署
- 注意事项 —— 特殊约定、容易踩坑的地方
- 硬性规则 —— 绝对不能违反的规则
来看个实际的例子
假设有一个 React + TypeScript 的项目,CLAUDE.md 可以这样写,
# 项目简介
<!-- 一句话说清楚项目是干嘛的,Claude 一眼就能理解 -->
一个在线待办事项应用,支持任务的增删改查和分类管理。
# 技术栈
<!-- 列出主要技术,Claude 就知道该用哪种写法 -->
- 前端,React 18 + TypeScript
- 样式,Tailwind CSS
- 状态管理,Zustand
- 后端,Node.js + Express
- 数据库,PostgreSQL
- 测试,Vitest + Testing Library
# 项目结构
<!-- 告诉 Claude 目录都是干嘛的,省得它瞎猜 -->
- src/components/ — React 组件
- src/hooks/ — 自定义 Hooks
- src/api/ — 后端 API 调用
- src/types/ — TypeScript 类型定义
- server/ — 后端代码
# 编码规范
<!-- 这些是 Claude 必须遵守的"规矩" -->
- 使用函数式组件,不用 class 组件
- 使用 TypeScript 严格模式
- 组件文件名用 PascalCase(如 TodoList.tsx)
- 工具函数文件名用 camelCase(如 formatDate.ts)
# 常用命令
<!-- 写上常用命令,Claude 就不会用错构建工具了 -->
- 启动开发服务器,npm run dev
- 运行测试,npm test
- 构建生产版本,npm run build
- 代码检查,npm run lint
# 硬性规则
<!-- 这些是红线,Claude 绝对不能违反 -->
- 不要使用 any 类型
- 所有新组件必须有对应的测试文件
- API 接口必须有错误处理关键原则,简洁就好
好的 CLAUDE.md, 简明扼要,一眼看清(建议控制在 60 行以内)
不好的 CLAUDE.md, 把所有代码都贴进去、写了几百行的流水账
提示
Claude 读 CLAUDE.md 也是占"记忆空间"的。写得越长,Claude 能用的空间就越少。只写最重要的信息就好。
5.3 这个文件放哪里?
CLAUDE.md 可以放在不同位置,不同位置管的事情不一样,
~/.claude/CLAUDE.md ← 全局的(对所有项目生效)
│
├── 项目根目录/CLAUDE.md ← 项目级的(只对这个项目生效)
│ │
│ ├── src/CLAUDE.md ← 目录级的(只在 src 目录下生效)
│ │
│ └── server/CLAUDE.md ← 目录级的(只在 server 目录下生效)记忆范围一览,
| 放在哪里 | 管多大范围 | 适合写什么 |
|---|---|---|
~/.claude/CLAUDE.md | 所有项目 | 个人偏好(比如喜欢用什么语言、常用缩写等) |
项目根目录 CLAUDE.md | 当前项目 | 项目信息(就是上面例子里那些内容) |
子目录 CLAUDE.md | 只管这个目录 | 特定模块的细节(比如 API 文档) |
叠加关系
Claude 会读取所有层级的 CLAUDE.md,不是只读一个。信息会叠加在一起生效。
5.4 动手试试,给项目创建 CLAUDE.md
来,实际操作一遍。
第一步,打开项目目录
cd 项目路径第二步,启动 Claude Code
claude第三步,让 Claude 帮你生成
在聊天里输入,
帮我分析当前项目,生成一份 CLAUDE.md 文件。
要求,
1. 包含项目简介、技术栈、项目结构、编码规范
2. 控制在 60 行以内
3. 简洁明了,只写关键信息Claude 会自动分析项目,帮你生成一份合适的 CLAUDE.md。
第四步,检查和调整
Claude 生成后,可以,
- 让它读取生成的文件给你看看
- 告诉它哪里需要补充或修改
- 确认没问题后保存
第五步,看看效果
退出 Claude Code,重新启动,
claude然后问它,
这个项目用的什么技术栈?如果 Claude 能正确回答,说明 CLAUDE.md 已经生效了!
提示
不想自己手写的话,直接让 Claude 分析项目帮你生成就行。生成后再看看需不需要调整,比自己从零写快多了。
5.5 几个常见的坑
坑1,写得越多越好?并不是
注意
CLAUDE.md 太长会占掉大量"记忆空间",反而让 Claude 表现变差。
建议, 控制在 30-60 行,只写最关键的。细节可以放到子目录的 CLAUDE.md 里分担。
坑2,把它当文档来写
注意
CLAUDE.md 是给 Claude 看的"速查卡",不是给人看的详细文档。
建议, 用关键词和短句,别写长篇大论。
# 不太好的写法
<!-- 这种大段描述 Claude 读起来费劲,还占记忆空间 -->
这个项目是一个使用 React 框架开发的现代化 Web 应用程序,
我们团队决定采用 TypeScript 作为主要开发语言,
因为它提供了更好的类型安全和开发体验……
# 推荐的写法
<!-- 关键词一行搞定,清晰又省空间 -->
技术栈,React 18 + TypeScript + Tailwind CSS坑3,只放在根目录
注意
如果项目比较大,一个 CLAUDE.md 装不下所有信息。
建议, 大项目用多级 CLAUDE.md。根目录写全局信息,子目录写模块细节。
坑4,写好就不改了
注意
项目会变化,CLAUDE.md 也得跟着更新。
建议, 当技术栈或项目结构有变化的时候,顺手把 CLAUDE.md 也更新一下。
5.6 再聊几个进阶玩法
用 CLAUDE.md 给 Claude 设定"角色"
# 角色设定
<!-- 给 Claude 一个"人设",它就会用这个角色的视角来审查代码 -->
你是一个资深的 Python 后端开发者。审查代码时要特别关注,
- SQL 注入风险
- 异常处理是否完善
- 性能优化建议用 CLAUDE.md 设定回复格式
# 回复格式要求
<!-- 告诉 Claude 你希望它怎么回复,省得每次都说"请用中文" -->
- 代码回复用中文解释
- 给出代码时标注文件路径
- 修改代码时说明改了什么、为什么改全局 CLAUDE.md 示例
放在 ~/.claude/CLAUDE.md,对所有项目都生效,
# 个人偏好
<!-- 这些偏好会跨项目生效,相当于你的"个人简历" -->
- 用中文回复
- 代码注释用英文
- 变量命名用 camelCase
- 优先推荐最简单的方案,不要过度设计提示
全局 CLAUDE.md 适合放个人偏好(比如语言、命名风格),项目级 CLAUDE.md 适合放项目相关的信息。两者叠加在一起生效,互不冲突。
5.7 小结
| 要点 | 说明 |
|---|---|
| CLAUDE.md 是啥 | 让 Claude "记住"项目信息的配置文件 |
| 写什么 | 项目简介、技术栈、结构、规范、常用命令 |
| 放哪里 | 项目根目录(必须)、子目录(可选)、全局(可选) |
| 多长合适 | 30-60 行,简洁为上 |
| 啥时候更新 | 技术栈变了、项目结构调整了就更新 |
一句话, CLAUDE.md 就是给 Claude 写的"项目小抄",写好一次,长期省心。
下一章来聊聊 Claude 想改你的文件时,到底让不让它动,第6章 Claude 想改文件,到底让不让?
