settings.json 怎么写?Claude Code 配置一篇讲透
settings.json 怎么写?Claude Code 配置一篇讲透
Prorise第二章. 配置系统全解
本章摘要:Claude Code 的配置系统就像一栋四层楼——企业层、用户层、项目层、本地层。每一层都能覆盖下一层的设置。搞懂这套体系,你就能为不同项目定制专属的工作环境,而不是每次都从头配置。
本章学习路径
| 阶段 | 内容 | 解锁能力 |
|---|---|---|
| 第一阶段 | 配置作用域与优先级 | 理解四层配置体系的运作机制 |
| 第二阶段 | settings.json 完全指南 | 掌握核心配置项的使用方法 |
| 第三阶段 | 沙盒模式配置 | 在隔离环境中安全地让 Claude 自主执行 |
2.1. 配置作用域与优先级
上一章我们学会了用权限规则控制 Claude 的行为。但有个问题没解决:这些配置应该放在哪里?
“直接放在项目根目录不就行了?”
没那么简单。假设你有这样的需求:
- 有些配置是 个人偏好(比如你喜欢用 Opus 模型),不想影响团队其他人
- 有些配置是 团队规范(比如禁止读取
.env文件),需要所有人遵守 - 有些配置是 临时实验(比如测试一个新的 Hook),不想提交到 Git
Claude Code 的四层配置体系就是为了解决这些问题。
2.1.1. 四层配置体系
Claude Code 的配置分为四个层级,从高到低依次是:
| 层级 | 存放位置 | 作用范围 | 是否共享 |
|---|---|---|---|
| Enterprise(企业层) | 系统目录下的 managed-settings.json | 整个组织 | 由 IT 部署 |
| User(用户层) | ~/.claude/settings.json | 你的所有项目 | 否 |
| Project(项目层) | .claude/settings.json | 当前项目 | 是(提交到 Git) |
| Local(本地层) | .claude/settings.local.json | 当前项目 | 否(被 Git 忽略) |
企业层的存放位置(不同操作系统):
- macOS:
/Library/Application Support/ClaudeCode/managed-settings.json - Linux/WSL:
/etc/claude-code/managed-settings.json - Windows:
C:\Program Files\ClaudeCode\managed-settings.json
“这四层有什么区别?”
核心区别在于 谁能看到 和 谁能覆盖。
2.1.2. 配置冲突解决规则
当同一个配置项在多个层级都有定义时,Claude Code 会按照 从高到低 的优先级来决定最终生效的值:
1 | Enterprise(最高)> User > Project > Local(最低) |
等等,这个顺序是不是反了?
没反。这里的 “优先级” 指的是 覆盖能力,而不是 “谁先被读取”。
举个例子:
- 企业层配置:
"disableBypassPermissionsMode": "disable"(禁用危险模式) - 用户层配置:
"model": "opus"(使用 Opus 模型) - 项目层配置:
"model": "sonnet"(使用 Sonnet 模型)
最终结果:
- 危险模式被禁用(企业层配置,无法覆盖)
- 模型使用 Sonnet(项目层覆盖了用户层)
“为什么企业层优先级最高?”
因为企业层是给 IT 管理员用的,用于强制执行安全策略。如果员工能随意覆盖企业配置,那安全策略就形同虚设了。
2.1.3. 何时用哪个作用域
这是最实用的部分——根据你的需求选择正确的配置位置:
| 需求场景 | 推荐作用域 | 原因 |
|---|---|---|
| 个人偏好(主题、编辑器模式) | User | 跨项目生效,不影响他人 |
| 团队规范(权限规则、禁止操作) | Project | 提交到 Git,团队共享 |
| 临时实验(测试新 Hook) | Local | 不提交,随时可删 |
| 安全策略(禁用危险模式) | Enterprise | 强制执行,无法覆盖 |
实战示例:
“我想让所有项目默认使用 Sonnet 模型,但某个特定项目需要用 Opus。”
步骤 1:在用户层设置默认模型
1 | # 编辑 ~/.claude/settings.json |
步骤 2:在特定项目的项目层覆盖
1 | # 编辑 项目根目录/.claude/settings.json |
这样,其他项目都用 Sonnet,只有这个项目用 Opus。
2.1.4. 本节小结
四层配置体系的核心是 分层管理、按需覆盖:
| 层级 | 典型用途 | 是否共享 |
|---|---|---|
| Enterprise | 安全策略、合规要求 | IT 部署 |
| User | 个人偏好、API 密钥 | 否 |
| Project | 团队规范、项目配置 | 是 |
| Local | 临时实验、本地调试 | 否 |
2.2. settings.json 完全指南
上一节我们知道了配置文件应该放在哪里。现在来看看配置文件里 能写什么。
settings.json 是 Claude Code 的核心配置文件,支持几十个配置项。我们不会逐一讲解(那太无聊了),而是聚焦于 最常用、最实用 的几类配置。
2.2.1. 核心配置项详解
权限配置(permissions)
这个我们在第一章已经详细讲过,这里只做速查:
1 | { |
模型配置(model)
指定 Claude Code 使用的默认模型:
1 | { |
可选值:
sonnet—— 均衡之选(默认)opus—— 最强大脑haiku—— 快速响应
环境变量配置(env)
为 Claude Code 会话注入环境变量:
1 | { |
这些环境变量会在 Claude 执行 Bash 命令时生效。
公司公告(companyAnnouncements)
企业管理员可以配置启动时显示的公告:
1 | { |
如果配置了多条公告,每次启动会随机显示一条。
2.2.2. 环境变量配置
除了在 settings.json 的 env 字段中配置,Claude Code 还支持通过系统环境变量来控制行为。
常用环境变量速查:
| 变量名 | 作用 | 示例值 |
|---|---|---|
ANTHROPIC_MODEL | 指定默认模型 | claude-sonnet-4-20250514 |
DISABLE_TELEMETRY | 禁用遥测数据收集 | 1 |
DISABLE_AUTOUPDATER | 禁用自动更新 | 1 |
HTTP_PROXY | 设置 HTTP 代理 | http://proxy.example.com:8080 |
MAX_THINKING_TOKENS | 设置思考模式的 Token 上限 | 10000 |
设置方式:
1 | # 临时设置(仅当前会话) |
2.2.3. 模型配置与切换
Claude Code 支持多种模型配置方式,灵活度很高。
方式 1:在 settings.json 中配置
1 | { |
方式 2:启动时指定
1 | claude --model opus |
方式 3:会话中切换
1 | › /model opus |
方式 4:为不同任务配置不同模型
Claude Code 支持为子代理(Subagent)配置独立的模型:
1 | { |
这样,主对话用 Sonnet,子代理用更快的 Haiku。
2.2.4. 本节小结
settings.json 的核心配置项:
| 配置项 | 作用 | 示例 |
|---|---|---|
permissions | 权限规则 | {"allow": [...], "deny": [...]} |
model | 默认模型 | "opus" |
env | 环境变量 | {"NODE_ENV": "development"} |
hooks | 自动化钩子 | 第四章详细讲解 |
2.3. 沙盒模式配置
上一章我们提到了 bypassPermissions 模式——让 Claude 完全自主执行。但这个模式太危险了,Claude 可以删除任何文件、执行任何命令。
“有没有一种方式,既能让 Claude 自主执行,又能限制它的破坏范围?”
有。这就是 沙盒一种隔离机制,限制程序只能在特定范围内操作 模式。
2.3.1. 沙盒模式的本质
沙盒模式的核心思想是:把 Claude 关在一个 “笼子” 里。
在这个笼子里,Claude 可以自由行动(不需要你确认每个操作),但它无法:
- 访问笼子外的文件系统
- 连接笼子外的网络地址
“这和 Docker 容器有什么区别?”
原理类似,但沙盒模式是 Claude Code 内置的轻量级隔离,不需要你额外安装 Docker。
2.3.2. 启用与配置
启用沙盒模式:
1 | › /sandbox |
或者在 settings.json 中配置:
1 | { |
完整配置示例:
1 | { |
配置项解释:
| 配置项 | 作用 | 默认值 |
|---|---|---|
enabled | 是否启用沙盒 | false |
autoAllowBashIfSandboxed | 沙盒内自动批准 Bash 命令 | true |
excludedCommands | 不受沙盒限制的命令 | [] |
network.allowUnixSockets | 允许访问的 Unix Socket | [] |
network.allowLocalBinding | 允许绑定本地端口 | false |
2.3.3. 网络与文件系统隔离
文件系统隔离:
沙盒模式下,Claude 只能访问当前项目目录及其子目录。尝试访问项目外的文件会被拒绝。
“那如果我需要 Claude 访问 ~/.ssh/ 下的密钥呢?”
可以通过 network.allowUnixSockets 配置允许特定路径:
1 | { |
网络隔离:
沙盒模式下,Claude 的网络访问也受到限制。默认情况下,它无法访问外部网络。
如果你需要 Claude 访问特定的网络地址,可以通过权限规则配置:
1 | { |
2.3.4. 本节小结
沙盒模式是 “安全” 与 “效率” 的折中方案:
| 特性 | 普通模式 | 沙盒模式 | bypassPermissions |
|---|---|---|---|
| 文件访问 | 需确认 | 仅项目目录 | 无限制 |
| 命令执行 | 需确认 | 自动批准 | 无限制 |
| 网络访问 | 需确认 | 受限 | 无限制 |
| 安全性 | 高 | 中 | 低 |
| 效率 | 低 | 高 | 最高 |
2.4. 本章总结与配置速查
本章我们深入学习了 Claude Code 的配置系统——从四层作用域到核心配置项,再到沙盒模式。核心思想是:分层管理、按需配置、安全优先。
2.4.1. 场景速查:遇到这些情况,直接用
场景 1:设置个人默认模型
编辑 ~/.claude/settings.json:
1 | { |
场景 2:为团队项目配置统一规范
编辑 项目根目录/.claude/settings.json:
1 | { |
然后提交到 Git。
场景 3:临时测试一个配置,不想影响团队
编辑 项目根目录/.claude/settings.local.json:
1 | { |
这个文件会被 Git 忽略。
场景 4:启用沙盒模式,让 Claude 自主执行
1 | › /sandbox |
或在配置文件中:
1 | { |
场景 5:为 Claude 注入环境变量
1 | { |







