Files
knowledge-base/6 - Zettelkasten/20260627062505 CLAUDE.md 是目录树拼接加载而非覆盖.md

1.7 KiB

created, type, tags, source
created type tags source
2026-06-27 06:25 zettel
zettel
claude-code
memory
claude-md
context
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 成本越高 —— 这正是"保持简洁、按目录就近放置"的底层原因。


Source