Skip to main content

ClaudeCode Local/Project/User Scope 有什么区别?

· 5 min read

Claude Code 的所有配置都遵循同一套三层作用域规则。

  1. User:存在 ~/.claude/,仅本机生效但跨项目共享
  2. Project:存在 .claude/,通过 git 同步给所有团队成员
  3. Local:存在 .claude/settings.local.json,git 忽略,仅本机生效

优先级:Local > Project > User。所有层级的配置都会加载,相同 key 时高优先级覆盖。

核心原则:越私有、越具体的配置,优先级越高。

实操:团队规范走 Project,个人偏好走 User,本机调试/密钥走 Local。


一句话理解三层作用域

Claude Code 的三层作用域,本质是回答「这条配置归谁管」。

  • User:归我管,跟我走,换电脑就消失
  • Project:归团队管,进 git 就能同步
  • Local:归当前这台机器管,能覆盖 Project 但不进 git

CLAUDE.mdsettings.jsonskills/commands/hooks/ 全都遵循同一套规则,不存在「这个文件只能用 User 作用域」之类的特例。

三层作用域详解

作用域物理位置共享范围典型场景
User~/.claude/本机、跨项目个人快捷键、个人 prompt 偏好
Project<repo>/.claude/git 共享,团队可见团队 coding style、项目专属 skill
Local<repo>/.claude/(gitignored)仅本机临时调试、本地密钥、覆盖团队配置

举几个具体例子:

  • ~/.claude/settings.json —— 个人偏好(语言、模型、主题)
  • <repo>/.claude/settings.json —— 团队约定(必须用 pnpm、commit 规范)
  • <repo>/.claude/settings.local.json —— 本机额外配置(个人 API key、个人 hook)

CLAUDE.md 同理:

  • ~/.claude/CLAUDE.md —— 个人备忘录
  • <repo>/CLAUDE.md —— 团队 onboarding 必读
  • <repo>/.claude/CLAUDE.local.md —— 我在这个项目上的私人补充

关键区别:User 和 Local 都是「不进 git 的私人配置」,但 User 跨项目、Local 只在本项目。新人最容易把这俩混为一谈。

优先级:Local > Project > User

合并顺序是从低到高加载,冲突时高优先级覆盖:

简单说:所有作用域的配置都会加载,相同 key 时 Local 赢,再次是 Project,再次是 User。不是「选一个生效」,而是「叠加生效」。

记忆口诀:越私有、越具体,优先级越高。

踩过的坑

坑 1:改了 Project 配置不生效

症状:在 <repo>/.claude/settings.json 里改了某个 key,Claude Code 表现却没变。

原因:之前生成过一个 settings.local.json,里面的同名 key 把它覆盖了。

解决cat .claude/settings.local.json 看看有没有遗留;删掉再试。

坑 2:skill 加完团队成员看不到

症状:本地 ~/.claude/skills/my-skill/ 测试能用,commit 上去别人 clone 下来却用不了。

原因:你放在了 User 作用域,git 里根本没有这个文件。

解决:把 skill 移到 <repo>/.claude/skills/,User 作用域只放纯个人用的。

坑 3:Local 越堆越多

症状.claude/settings.local.json 写了几十行,已经分不清哪些是必要的。

原因:Local 设计上是「临时覆盖」,不是「私人配置主阵地」。很多人图省事什么都往里塞。

解决:定期 review,长期需要的配置升级到 User 或 Project。

实操建议

CLAUDE.md 分层写法

  • ~/.claude/CLAUDE.md:个人习惯("我用 zsh、习惯 ripgrep、Tab 用 2 空格")
  • <repo>/CLAUDE.md:项目事实("这是 pnpm workspace monorepo,主包在 packages/core")
  • <repo>/.claude/CLAUDE.local.md:本机私货("我本地 8080 端口被占用,用 8081")

settings.json 同理

  • User:个人模型选择、主题、快捷键
  • Project:team-wide lint/format 命令、必装 hooks
  • Local:临时 API endpoint、个人 token(注意安全!)

安全警告:Local 作用域虽然不进 git,但别把长期 token 放这里。换机器、pnpm clean 误删、rm -rf .claude 都可能让它消失。真正敏感的密钥用环境变量或专用 secret 管理工具。

一张图总结

我想配置什么放哪里进 git 吗
我个人的偏好User ~/.claude/不进
团队要遵守的规范Project <repo>/.claude/
本机临时调试Local <repo>/.claude/不进(自动 gitignore)

记住一件事配置位置决定它的归属,决定谁能改它,决定它会不会跟着团队走。犹豫放哪的时候,先问自己一句:「这条配置换一个同事的电脑还有意义吗?」有,就放 Project;没有,就看它是不是跨项目通用——是放 User,否则放 Local。

References

  1. Claude Code Documentation —— Anthropic, 2025