Claude Code /memory 详解:让 AI 真正记住你的项目
目录
- 为什么需要 /memory
- /memory 是什么
- 两套记忆系统
- CLAUDE.md——你写给 Claude 的指令
- Auto Memory——Claude 自己记的笔记
- 两者的区别
- CLAUDE.md 的层级与加载
- 层级一:全局记忆
- 层级二:项目记忆
- 层级三:个人本地记忆
- 层级四:模块化规则
- 加载顺序
- Auto Memory 的工作原理
- 什么会被记住
- 存储结构
- 触发关键词
- .claude/rules/ 模块化规则
- 基本用法
- 条件加载:glob 匹配
- 实际组织方式
- 实际使用场景
- 场景一:团队规范沉淀
- 场景二:个人偏好持久化
- 场景三:Monorepo 分域管理
- 场景四:新人快速对齐
- 实用技巧
- 技巧一:200 行法则
- 技巧二:用命令式写规则
- 技巧三:定期清理 Auto Memory
- 技巧四:用 /init 快速生成 CLAUDE.md
- 写在最后
为什么需要 /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 Agent Loop:拆解 AI 编程助手的心脏
Claude Code 是怎么一步步理解你的需求、调用工具、自我修复的?从源码角度拆解 Agent Loop 的核心架构——流式响应、并行工具执行、自动压缩、错误恢复,一次讲透。
Claude Code settings.json 详解(一):配置文件在哪里、谁说了算
全面介绍 Claude Code 的配置文件体系——五个配置来源的路径、优先级规则、数组合并与单值覆盖的区别、企业管理设置的多种下发方式。
Claude Code settings.json 详解(二):permissions 权限系统全解析
深入解析 Claude Code 的 permissions 配置——allow/deny/ask 三类规则、通配符语法、MCP 工具权限、defaultMode 各模式含义,以及 additionalDirectories 的作用。
Claude Code settings.json 详解(三):hooks 钩子全解析
深入解析 Claude Code 的 hooks 配置——四种钩子类型、核心事件(PreToolUse/PostToolUse/Stop/Notification)、stdin/stdout 协议、exit code 语义,以及实用配置示例。
Claude Code settings.json 详解(四):env、模型、认证与其他实用字段
全面介绍 Claude Code settings.json 中的 env 环境变量注入、模型配置、身份认证辅助、Git 提交署名、会话清理、语言与界面、思考深度、自动更新、记忆系统等实用字段。