是什么

Claude Code 通过两套机制跨会话传递知识:CLAUDE.md(用户编写的指令文件)和 Auto Memory(Claude 自动记录的学习内容)。两者都在每次会话启动时加载,但性质不同——CLAUDE.md 是规则,Auto Memory 是经验积累。

核心机制

CLAUDE.md 层级结构(从宽到窄,全部叠加进上下文):

层级位置作用共享范围
组织策略/Library/Application Support/ClaudeCode/CLAUDE.md(macOS)IT 管理的全局规则所有用户
用户指令~/.claude/CLAUDE.md个人偏好,所有项目仅自己
项目指令./CLAUDE.md 或 ./.claude/CLAUDE.md团队共享的项目规范团队(通过 git)
本地指令./CLAUDE.local.md个人项目偏好(gitignored)仅自己

加载规则:从工作目录向上遍历目录树,所有层级的 CLAUDE.md 叠加加载(不覆盖)。子目录的 CLAUDE.md 在 Claude 读取该目录文件时按需加载。

路径规则(.claude/rules/):带 paths: frontmatter 的规则只在 Claude 读取匹配文件时加载,节省上下文:

---
paths:
  - "src/api/**/*.ts"
---
# API 规范
- 所有端点必须验证输入

Auto Memory:存储在 ~/.claude/projects/<project>/memory/MEMORY.md,每次会话加载前 200 行或 25KB。Claude 在发现新模式或用户纠正时自动更新,无需手动干预。同一 git 仓库的所有 worktree 共享同一个 Auto Memory 目录。

@path 导入:CLAUDE.md 可以用 @path/to/file 语法导入其他文件,导入内容在会话启动时展开加载。

关键细节

  • 运行 /init 自动生成项目 CLAUDE.md(分析代码库后填充构建命令、测试指令、项目规范)
  • 运行 /memory 查看当前会话加载了哪些记忆文件,并可切换 Auto Memory 开关
  • CLAUDE.md 建议控制在 200 行以内,超出后遵从度下降
  • 压缩后项目根 CLAUDE.md 会重新注入,嵌套 CLAUDE.md 需等下次读取对应目录文件
  • 用 <!-- 注释 --> 在 CLAUDE.md 中写维护者注释,不会消耗上下文 tokens
  • 大型 monorepo 可用 claudeMdExcludes 设置跳过其他团队的 CLAUDE.md

关联

实践要点

  • 触发添加 CLAUDE.md 的信号:Claude 犯了同一错误两次、代码审查发现 Claude 应该知道的规范、新成员需要的上下文
  • 好的 CLAUDE.md 内容:构建/测试命令、代码风格规则、架构决策、常见陷阱
  • 不要放的内容:Claude 能从代码推断的内容、频繁变化的信息、详细 API 文档(链接即可)
  • 规则越具体越好:「使用 2 空格缩进」优于「格式化代码」
  • 用 IMPORTANT: 或 YOU MUST 强调关键规则,提高遵从度
  • 定期审查 CLAUDE.md,删除过时或 Claude 已经默认遵守的规则