Logo Vincent
返回文章列表

Claude Code /memory 详解:让 AI 真正记住你的项目

Claude
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.mdAuto 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 会一直记着。

一个命令,让每次对话都站在上次的肩膀上。

© 2026 vincentqiao.com . 保留所有权利。