Claude Code /memory 详解:让 AI 真正记住你的项目
为什么需要 /memory
用 Claude Code 做开发,最让人抓狂的事之一就是:每次开新会话,Claude 什么都不记得了。
上一轮对话里你告诉它”项目用 TypeScript strict 模式”、“提交信息用 conventional commits”、“别动 legacy 目录的代码”。关掉终端再打开,一切归零。你又得重新说一遍。
更要命的是团队协作——你花了半小时教 Claude 项目规范,但这些规范只存在那一轮对话里。换个人、换个会话,全部从头来过。
Claude 的每一轮对话都是一张白纸,但你的项目规范不应该是。
这时候你需要 /memory。
/memory 是什么
/memory 是 Claude Code 的内置命令,用来查看和管理所有记忆文件。
在交互模式下输入:
/memory
它会列出当前会话加载的所有记忆文件,包括:
- CLAUDE.md 文件:你手动写的项目指令,分布在不同层级
- Auto Memory 文件:Claude 自动记录的笔记和偏好
- 规则文件:
.claude/rules/下的模块化指令
你还可以通过 /memory 切换 Auto Memory 的开关,或者直接打开记忆文件夹进行编辑。
简单说,/memory 回答的是一个问题:Claude 现在记住了什么?
两套记忆系统
Claude Code 有两套互补的记忆机制,共同解决”跨会话记忆”的问题:
CLAUDE.md——你写给 Claude 的指令
CLAUDE.md 是一个 Markdown 文件,放在项目根目录。Claude Code 启动时会自动加载它到系统提示词里。你写什么,Claude 就遵守什么。
# CLAUDE.md
## 代码规范
- 使用 TypeScript strict 模式
- 提交信息遵循 conventional commits
- 缩进用 2 空格,行宽 120
## 项目结构
- src/api/ 是后端代码
- src/components/ 是前端组件
- 不要修改 legacy/ 目录下的任何文件
核心特点:你写的、你控制的、可以提交到 Git 的、团队共享的。
Auto Memory——Claude 自己记的笔记
Auto Memory 是 Claude 在工作过程中自动记录的笔记。比如你纠正了它一个错误,它会默默记下来;你告诉它”以后都用 bun 不要用 npm”,它也会记住。
笔记存在 ~/.claude/projects/<项目>/memory/MEMORY.md 里,是普通的 Markdown 文件,你随时可以查看、编辑或删除。
核心特点:Claude 写的、自动积累的、不提交到 Git 的、个人私有的。
两者的区别
| 维度 | CLAUDE.md | Auto Memory |
|---|---|---|
| 谁写的 | 你手动写 | Claude 自动写 |
| 存储位置 | 项目根目录 | ~/.claude/projects/ |
| 是否提交 Git | 是,团队共享 | 否,个人私有 |
| 加载时机 | 每次会话启动时 | 每次会话启动时(仅 MEMORY.md) |
| 适合存什么 | 项目规范、架构说明、团队约定 | 个人偏好、调试经验、踩坑记录 |
CLAUDE.md 的层级与加载
CLAUDE.md 不是只有一个文件——它有多个层级,从全局到项目到个人,层层叠加。
层级一:全局记忆
~/.claude/CLAUDE.md
适用于你所有的项目。放一些通用偏好,比如:
- 用中文回复
- 提交信息用英文
- 偏好函数式编程风格
层级二:项目记忆
./CLAUDE.md
项目根目录的文件,最常用的一级。跟着 Git 走,团队所有人共享。放项目规范、架构说明、技术栈约定等。
层级三:个人本地记忆
./CLAUDE.local.md
个人本地文件,加到 .gitignore 里,不提交到仓库。适合放一些个人偏好,比如你习惯的调试方式、偏好的测试框架配置等。
层级四:模块化规则
.claude/rules/*.md
这是最灵活的一级,后面单独讲。
加载顺序
Claude Code 启动时,会从当前目录向上遍历到文件系统根目录,加载沿途所有的 CLAUDE.md。这意味着在 monorepo 里,子包目录下的 CLAUDE.md 会在你进入该子包时自动生效。
重要:CLAUDE.md 在上下文压缩后会被重新从磁盘读取并注入,不会丢失。如果某条规则在压缩后消失了,说明它只存在对话里,没写进 CLAUDE.md。
Auto Memory 的工作原理
Auto Memory 不需要你做任何事——Claude 会在工作过程中自己判断哪些信息值得记住。
什么会被记住
- 你的纠正:你说”这个不对,应该用 X 而不是 Y”,Claude 会记下来
- 明确的指令:你说”记住以后都用 bun”或”别忘了测试要跑 coverage”
- 反复出现的模式:同一个问题你纠正了多次,Claude 会意识到该记录下来
- 项目关键信息:构建命令、架构决策、重要文件路径
存储结构
~/.claude/projects/<项目>/memory/
MEMORY.md # 主记忆文件,每次会话启动时加载
debugging.md # 调试经验(按主题拆分)
patterns.md # 代码模式
api-conventions.md # API 约定
MEMORY.md 是主文件,会在每次会话启动时自动加载到上下文。建议控制在 200 行以内。
主题子文件(如 debugging.md)不会在启动时加载,而是 Claude 需要时按需读取。这样既能保存详细信息,又不会浪费上下文窗口。
触发关键词
想让 Claude 记住某件事?用这些关键词:
记住:以后所有新文件都用 .tsx 扩展名
别忘了:测试命令是 npm run test -- --coverage
Claude 识别到”记住”、“别忘了”、“remember”、“don’t forget”等关键词时,会主动写入 MEMORY.md。
.claude/rules/ 模块化规则
当项目变大、规范变多,一个 CLAUDE.md 文件会变得越来越臃肿。.claude/rules/ 提供了模块化的解决方案。
基本用法
.claude/
rules/
code-style.md # 代码风格规范
testing.md # 测试规范
security.md # 安全规范
api-design.md # API 设计规范
每个 .md 文件就是一组独立的规则,Claude Code 会自动发现并加载。
条件加载:glob 匹配
这是 .claude/rules/ 最强大的功能——根据文件路径按需加载规则。
在规则文件的 frontmatter 里加 paths 字段:
---
paths:
- src/api/**/*.ts
---
## API 规范
- 所有接口必须有入参校验
- 错误码使用统一的枚举类型
- 响应格式统一为 { code, data, message }
这条规则只在 Claude 处理 src/api/ 下的 TypeScript 文件时才会加载。编辑前端组件时,这些规则不会出现,不浪费上下文。
实际组织方式
.claude/
rules/
frontend/
react.md # paths: src/components/**/*.tsx
styling.md # paths: src/**/*.css
backend/
api.md # paths: src/api/**/*.ts
database.md # paths: src/models/**/*.ts
general/
code-style.md # 无 paths,全局加载
security.md # 无 paths,全局加载
没有 paths 的规则文件在启动时全局加载;有 paths 的文件按需加载。
实际使用场景
场景一:团队规范沉淀
把团队的编码规范、提交规范、架构约定写进 CLAUDE.md,提交到 Git:
# CLAUDE.md
## 提交规范
- 使用 conventional commits
- feat/fix/refactor/docs/test/chore
## 代码规范
- TypeScript strict 模式
- 禁止使用 any
- 组件用函数式写法
新人加入团队,git clone 下来就自动生效。规范从口口相传变成代码即文档。
场景二:个人偏好持久化
在 Auto Memory 或 CLAUDE.local.md 里记录个人偏好:
记住:我喜欢在函数前加注释说明参数含义
记住:调试时优先用 console.table 而不是 console.log
这些偏好不会影响团队其他人,但每次你开新会话都会自动生效。
场景三:Monorepo 分域管理
大型 monorepo 里,不同子包有不同的技术栈和规范:
.claude/
rules/
react-app.md # paths: packages/web/**/*
node-api.md # paths: packages/api/**/*
shared-utils.md # paths: packages/shared/**/*
Claude 在不同子包里工作时,自动加载对应的规范。前端规则不会污染后端代码,后端约定不会干扰前端组件。
场景四:新人快速对齐
新人第一天:git clone → 打开 Claude Code → 所有项目规范自动加载。
不需要读完几十页的 Wiki,不需要老人手把手教。Claude 已经知道项目的所有规范,新人只要正常和 Claude 协作,产出的代码就自动符合团队标准。
实用技巧
技巧一:200 行法则
CLAUDE.md 和 MEMORY.md 都建议控制在 200 行以内。超过 200 行,Claude 的遵守度会下降——上下文太长,注意力会分散。
详细内容拆到 .claude/rules/ 的子文件里,或者拆到 Auto Memory 的主题文件里。主文件只放最核心的规则。
技巧二:用命令式写规则
不要写描述性的句子,写命令式的指令:
❌ 项目使用 TypeScript
✅ 所有新文件必须使用 TypeScript strict 模式
Claude 把命令式语句当作规则执行,把描述性语句当作可选参考。想让 Claude 严格遵守,就用命令式。
技巧三:定期清理 Auto Memory
Auto Memory 会不断积累,时间长了难免有过时或错误的记录。定期用 /memory 查看,删掉不再准确的内容。如果某条 Auto Memory 很稳定很重要,考虑把它”升级”到 CLAUDE.md 里。
技巧四:用 /init 快速生成 CLAUDE.md
新项目不知道 CLAUDE.md 怎么写?直接用:
/init
Claude 会分析你的项目结构、技术栈、配置文件,自动生成一份 CLAUDE.md 初稿。你在这个基础上修改就行。
写在最后
/memory 解决的问题很简单:让 Claude 的记忆不再随会话消失。
用 Claude Code 做开发,最大的浪费不是 Claude 写错了代码,而是你每次开会话都要重复同样的话。项目规范说了十遍,个人偏好强调了八次,架构约定每次都要重新解释。
把它们写进 CLAUDE.md,让 Auto Memory 自动积累,用 .claude/rules/ 按需加载。说一次就够了,Claude 会一直记着。
一个命令,让每次对话都站在上次的肩膀上。
更多同类文章
- 我做了个机器人,让团队在飞书里用 Claude Code
- Claude Code /fast:同样的 Opus,两倍速——值不值?
- Claude Code /init:10 秒自动生成 CLAUDE.md
- Claude Code MCP:让 AI 连接 GitHub、数据库等一切工具
- Claude Code /model:Opus、Sonnet、Haiku 怎么选?
- Claude Code 使用指南:从安装到实战,一篇就够(2026)
- Claude 全家桶:从聊天到写代码到自动办公,一文讲清楚
- CCBot - 研发提效 24 倍
- 震惊!程序员用这个工具,4分钟干完95分钟的活!效率暴涨24倍
- Claude Code /add-dir:被低估的 Monorepo 神器
- Claude Code /compact:释放上下文,不丢进度
- Claude Code /btw 命令详解:不打扰主线的快问快答
- Claude Code /stats:看看 AI 到底帮你写了多少代码
- Claude Code /status 命令详解:一眼看清会话全貌
- AI-first 创业公司,为什么只需要一种编程语言?
- Claude Code 引用外部知识的最佳实践:GitHub MCP + Context7
- Claude Code 省 Token 小技巧:感叹号的妙用
- Claude Code /resume 命令详解:别让对话白聊
- Claude Code /usage 命令详解:你的额度还剩多少
- Claude Code /tasks 命令详解:后台任务尽在掌控
- Claude Code Skills 详解:打造你的专属命令库
- Claude Code /plan 详解:先想清楚再动手
- cc-ping:一行命令 Ping 所有 Claude Code 配置