外观
第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 想改文件,到底让不让?
