---
created: "2026-06-27 06:25"
type: zettel
tags: [zettel, claude-code, memory, claude-md, context]
source: "Anthropic memory 官方文档 (2026)"
---

# CLAUDE.md 是目录树拼接加载而非覆盖

多个 `CLAUDE.md` 不是"最近的那个赢",而是**沿目录树向上发现、全部拼接(append)**。理解这点才能正确分层放置规则。

机制:
- **向上遍历目录树发现**所有 `CLAUDE.md`。
- **祖先目录的文件启动时全量加载**;**子目录的嵌套文件在读取该目录时才按需加载**。
- 所有命中的文件**拼接而非覆盖** —— 个人(`~/.claude/CLAUDE.md`)、项目(`./CLAUDE.md`)、本地(`./CLAUDE.local.md`)叠加生效。
- monorepo 父目录会自动拉取;支持 `@path/import` 引入其它文件。

推论(分层放置策略):
- **跨项目偏好** → `~/.claude/`(用户级)。
- **团队共享的项目规范** → `./CLAUDE.md`(入 git)。
- **个人临时覆盖** → `./CLAUDE.local.md`(入 `.gitignore`)。
- **某子模块专属规则** → 放该子目录的 `CLAUDE.md`,只在进入时按需加载,**省主上下文**。
- 单文件 **< 200 行**;过大拆到 `.claude/rules/` 的 path-scoped rules(带 `paths` frontmatter)。

因为是"拼接 + 全量加载祖先",所以越靠上、越大的文件,对每次会话的 token 成本越高 —— 这正是"保持简洁、按目录就近放置"的底层原因。

---

## Related

- [[20260308223000 Claude Code Memory 日常最佳实践]] —— 5 层 memory 全景与 Auto memory
- [[20260319120200 MCP数量与上下文窗口的反比关系]] —— 同样是上下文预算权衡
- [[Claude Code 新项目开发最佳实践 (2026 调研)]]

## Source

- https://code.claude.com/docs/en/memory
- https://code.claude.com/docs/en/best-practices
