学习中心/Claude Code/CLAUDE.md 记忆系统
中级

CLAUDE.md 记忆系统

掌握 CLAUDE.md 和 Auto Memory,让 Claude Code 跨会话记住项目上下文

Anthropic25 min

学习笔记

CLAUDE.md 记忆系统

每次启动 Claude Code 都是一个全新的上下文窗口。那么 Claude 怎么记住你的项目约定、技术栈、编码规范?答案是记忆系统——由你手动维护的 CLAUDE.md 文件和 Claude ���动维护的 Auto Memory 共同构成。

你将学到

  • CLAUDE.md 的作用和最佳写法
  • 文件层级:组织级 → 用户级 → 项目级 → 子目录级
  • Auto Memory 的工作原理
  • 路径作用域规则(path-scoped rules)
  • 上下文窗口管理策略

适合谁

  • 希望让 Claude Code 更精准地遵循团队规范的开发者
  • 管理多个项目、需要跨会话保持上下文的工程师

1. CLAUDE.md vs Auto Memory

Claude Code 有两套记忆机制:

特性 CLAUDE.md Auto Memory
编写者 你手动编写 Claude 自动记录
内容 指令和规则(如"使用 pnpm") 学到的模式和偏好
范围 组织/用户/项目/子目录 按工作树范围
加载方式 每次会话完整加载 前 200 行加载
适合 明确的编码规范和项目规则 Claude 在交互中学到的偏好

两者在每次对话开始时都会加载。Claude 将它们视为上下文参考。指令越具体越简洁,Claude 越能一致地遵循。


2. CLAUDE.md 文件层级

文件位置决定作用范围,从最广到最窄:

层级 位置 说明
组织级 /Library/Application Support/ClaudeCode/CLAUDE.md (macOS) IT 管理的全组织策略
用户级 ~/.claude/CLAUDE.md 你的个人偏好,跨所有项目
项目级 ./CLAUDE.md./.claude/CLAUDE.md 项目规范,通过 Git 共享
子目录 子目录中的 CLAUDE.md 按需加载,适合模块级规则

父目录的 CLAUDE.md 在启动时自动加载(适合 monorepo 场景)。子目录的 CLAUDE.md 仅在 Claude 处理该目录文件时按需加载。

推荐做法

  • ~/.claude/CLAUDE.md:放个人偏好(如"我喜欢简洁的 commit message")
  • ./CLAUDE.md:放项目规范(技术栈、命名规则、构建命令),提交到 Git 让团队共享
  • 子目录:放模块特定规则(如"API 路由必须用 zod 验证")

3. 编写高效的 CLAUDE.md

好的 CLAUDE.md 示例

# Project: My API Server

## Tech Stack
- Node.js 20 + TypeScript 5
- Express.js with Zod validation
- PostgreSQL + Prisma ORM
- Jest for testing

## Commands
- `npm run dev` - start dev server
- `npm test` - run all tests
- `npm run lint` - run ESLint

## Conventions
- Use 2-space indentation
- All API routes must validate input with Zod
- Database queries go through Prisma, never raw SQL
- Error responses follow RFC 7807 format
- Commit messages use conventional commits (feat:, fix:, etc.)

## Architecture
- `src/routes/` - Express route handlers (thin layer)
- `src/services/` - Business logic
- `src/repositories/` - Data access layer
- `src/middleware/` - Express middleware

写作原则

  1. 保持简洁:对每一行问自己——"删掉这行会导致 Claude 犯错吗?"如果不会,就删掉
  2. 具体可执行:写 "Use 2-space indentation" 而不是 "format code nicely"
  3. 像代码一样维护��出问题时审查,定期修剪,观察行为变化
  4. 提交到 Git:让团队共同维护项目级 CLAUDE.md
  5. 用强调词提升遵守度:关键规则用 "IMPORTANT" 或 "YOU MUST" 标注

不要放什么

  • 不要放太长的说明——过长的 CLAUDE.md 会导致 Claude 忽略你的实际指令
  • 偶尔才用的工作流放到 Skills 中,不要塞进 CLAUDE.md
  • 能从代码推断出的信息不需要写(如类型定义的含义)

4. 路径作用域规则

.claude/rules/ 目录下创建规则文件,通过 YAML frontmatter 限定到特定文件路径:

示例:API 路由验证规则

创建 .claude/rules/api-validation.md

---
paths:
  - "src/api/**/*.ts"
---
All API routes must validate request parameters with Zod schemas.
Always return proper error responses for validation failures.

示例:测试框架规则

创建 .claude/rules/testing.md

---
paths:
  - "src/**/*.{ts,tsx}"
  - "tests/**/*.test.ts"
---
Use Vitest, not Jest. Run tests with `npx vitest run`.

这些规则只在 Claude 处理匹配路径的文件时加载,不会浪费上下文空间。


5. Auto Memory

Auto Memory 是 Claude 自动维护的笔记系统,记录它在交互中学到的模式和偏好。

工作原理

  • 文件存储在 ~/.claude/projects/<project>/memory/
  • MEMORY.md 是索引文件,前 200 行在每次会话开始时加载
  • 详细笔记存储在单独的主题文件(如 debugging.mdpatterns.md),按需访问
  • 超过 200 行的索引内容不会自动加载

教 Claude 记住

always use pnpm, not npm

remember that the API tests require a local Redis instance

从现在起使用 conventional commits 格式

Claude 会将这些保存到 Auto Memory 中。

管理 Auto Memory

使用 /memory 命令:

  • 浏览和打开所有记忆文件
  • 切换 Auto Memory 开关
  • 打开记忆文件夹直接编辑

记忆文件是纯 Markdown,你可以随时编辑或删除。

禁用 Auto Memory

如果不需要:

export CLAUDE_CODE_DISABLE_AUTO_MEMORY=1

6. 上下文窗口管理

上下文窗口是 Claude Code 最重要的资源。它包含:对话历史、文件内容、命令输出、CLAUDE.md、加载的 Skills。

管理策略

操作 命令 何时使用
检查使用量 /context 随时查看
压缩历史 /compact 上下文使用 ~60% 时
清理上下文 /clear 切换到不相关的任务时

关键建议

  • 主动压缩:在 ~60% 时用 /compact,不要等到自动压缩(~80%)
  • 任务隔离:不同任务之间用 /clear 分隔,避免"大杂烩"会话
  • 精简 CLAUDE.md:它每次都加载,只放广泛适用的内容

小结

  • CLAUDE.md 是你给 Claude 的持久化指令,Auto Memory 是 Claude 自己的笔记
  • 项目级 CLAUDE.md 提交到 Git,让团队共享编码规范
  • 保持简洁——过长的指令反而降低遵守度
  • 用路径作用域规则精确控制不同模块的规范
  • 主动管理上下文窗口:/compact/clear/context

延伸阅读

内容来源:Anthropic 官方文档