一、核心内容
加载时机与方式
Claude Code 启动会话时,执行以下加载序列:
- 从当前工作目录(cwd)向上遍历目录树,检查每级目录中的 CLAUDE.md
- 加载全局用户级
~/.claude/CLAUDE.md - 加载 CLAUDE.local.md(项目本地覆盖层,自动被 gitignore)
- 加载
.claude/rules/中的无条件 Rules(递归扫描子目录,支持符号链接) - 加载 Auto-Memory 的 MEMORY.md 前 200 行
子目录中的 CLAUDE.md 不在启动时加载。Claude 读取该子目录中的文件时才触发加载——这是惰性加载行为。
--add-dir 给 Claude 额外目录访问权限时,默认不加载额外目录的 CLAUDE.md。需要设置环境变量 CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 才会加载。
加载过程中每份文件被读入时,都会触发 InstructionsLoaded 生命周期事件。通过配置该 Hook 可以记录哪些指令文件被加载、加载时机和原因——这是调试 CLAUDE.md 加载问题的推荐方式。详见 Hooks 模块。
合并规则与优先级
所有 CLAUDE.md 文件加载后共存于上下文中。它们不像 settings.json 那样按 key 合并覆盖——每份文件的内容完整保留,同时呈现给 Claude。
当两份文件包含冲突指令时,Claude 依据「更具体的位置优先」原则选择。实际表现: