F4.3 F4

CLAUDE.md 的三个层级:用户、项目、目录

Claude Code 的配置系统分三个层级,背后有很实际的原因:团队需要共享标准,个人需要自己的偏好,特定代码区域有时需要专属规则。

三个层级

  1. 用户级~/.claude/CLAUDE.md)— 个人偏好。你的编码风格、工具使用习惯、工作流癖好。在你的 home 目录里,不提交到版本控制,只影响你自己。

  2. 项目级(项目根目录的 CLAUDE.md)— 团队标准。编码规范、命名规则、架构模式。提交到版本控制,通过 git 和每个团队成员共享。

  3. 目录级(子目录中的 CLAUDE.md)— 特定代码区域的本地规则。api/ 目录可能有和 frontend/ 目录不同的约定。只在 Claude 处理该子目录中的文件时加载。

三个层级同时加载并组合。它们不是用严格优先级互相覆盖——而是叠加在一起。项目级的团队标准加上用户级的个人偏好,同时生效。

CLAUDE.md 之外

配置系统不只有 CLAUDE.md:

  • .claude/rules/*.md — 模块化规则文件,可选的 YAML frontmatter 里含 glob 模式。规则根据 Claude 正在处理的文件有条件地加载。
  • .claude/commands/*.md — 自定义斜杠命令。团队共享的工作流,定义为 markdown 文件。
  • .claude/skills/*/SKILL.md — 带 frontmatter 配置的 skills,包括上下文隔离(context: fork)和工具限制。

这些全都支持用户级(~/.claude/)和项目级(项目根目录 .claude/两种放置位置。两个层级的功能集是等价的——用户级不是只能放基础的 CLAUDE.md。

MCP server 配置

MCP server 有自己专用的配置文件:项目根目录的 .mcp.json,用于团队共享的 server 配置。这和 CLAUDE.md 是分开的——指令放在 CLAUDE.md 里,server 配置放在 .mcp.json 里。把 .mcp.json 提交到版本控制,这样所有人都有相同的 MCP server。密钥用 ${ENV_VAR} 展开语法。

团队配置套路

标准的组织方式:团队编码标准放在项目级 CLAUDE.md(所有人通过 git 获取)。个人偏好放在用户级 ~/.claude/CLAUDE.md(只有你能看到)。团队标准更新时,所有人下次 pull 就能拿到。不用手动复制,不会漂移,不用注释掉什么。


一句话总结: 用户级放个人偏好,项目级放团队共享标准,目录级放本地规则——三层同时加载并组合,MCP 配置单独放在 .mcp.json