46 · 开发配置:把 Claude 干活的「工作环境」调顺
📚 系列导航:上一篇 45 Agent SDK 教你把 Claude Code 的本事拆出来、塞进自己写的程序里。这一篇收回到你每天敲命令的那个终端——Claude 跑在哪、能碰到哪、走不走代理、长什么样、用哪个模型,这五件「工作环境」的事,是时候按自己的需要调一遍了。这一篇就把开发配置里最常用的几块讲透。
这里先摆一个很多人都会撞上的场景。
不少人用 Claude Code 头小半年,工作环境一直是「开箱默认、一动不动」。直到有天接了个客户的私有仓库,心里直打鼓——这代码没看过,万一里头藏着什么让 Claude 乱跑命令的东西,它可是直接在你这台天天用的 Mac 上动手的,连着你的 SSH 密钥、你的 npm 凭据、你半个工作台的私密文件。这时候常见的「防护措施」是什么呢?全程瞪大眼睛盯着每一条命令,手放在 Ctrl+C 上。 盯一下午,累得不行,还啥都没干成。
其实这事儿官方早给了答案——把 Claude 关进一个隔离环境里跑就行,沙箱、容器、虚拟机随你挑,它在里头怎么折腾都伤不到主机。那种一下午的「人肉监控」,纯属没读文档硬扛。
说这个是想让你绕开这个坑。开发配置这块,平时不显眼,关键时刻能救命、能省钱、还能让你用得舒服。 今天挑五块最常用的,一块块讲清楚:它解决什么、什么时候该开、怎么开。
看完这一篇,你会拿到:
- 五块开发配置(沙箱、devcontainer、网络、终端、模型)各自「解决什么问题、什么时候该动它」的一句话定位
- 沙箱(sandbox)怎么用一条
/sandbox命令开起来,让 Claude 少问你、又跑不出隔离圈 - devcontainer 是干嘛的、跟沙箱什么关系、团队为什么需要它
- 公司在代理 / 防火墙后面时,怎么让 Claude Code 连得上(国内用户尤其要看)
- 终端配置里最值得动的三样(换行键、通知、主题),和模型配置怎么按任务挑、怎么省额度
- 一个能照着跑、给了预期输出的实战:开沙箱 + 锁模型,亲手验一遍
01 先建个框架:开发配置管的是 Claude 的「工作环境」五件事
动手调之前,先在脑子里把这块归个类。「开发配置」不是一堆零散开关,它管的是同一件事的五个侧面——Claude 干活的那个「工作环境」长什么样。
类比:给一个新来的工人安排工位。 工人(Claude)来你这儿干活,你得替他把工位安排明白:他在哪个房间干(在你主机上,还是关进一间独立工作间)、这房间的门窗通到哪(能上哪些网、连不连得出公司防火墙)、桌椅灯光顺不顺手(终端的换行、通知、配色)、派给他的是老师傅还是学徒(用哪个模型)。这几件安排好了,他才能既干得顺、又出不了乱子。开发配置就是这套「工位安排」。
落到 Claude Code,这五件事是:
- 隔离(隔到哪儿干)——沙箱 / devcontainer,决定 Claude 跑命令时能碰到你机器上多少东西。
- 网络(门窗通到哪)——代理、证书配置,决定它在公司防火墙后面连不连得上。
- 终端(桌椅顺不顺手)——换行键、通知、配色、Vim 模式,决定你用着别不别扭。
- 模型(派谁来干)——用 Opus 还是 Sonnet 还是 Haiku,决定贵不贵、聪不聪明。
并排放一张表,对照着看立刻清楚各管各的:
| 这块配置 | 解决什么问题 | 什么时候你会想起它 |
|---|---|---|
| 沙箱(sandbox) | 让 Claude 少问你、又跑不出隔离圈 | 嫌它老问权限,或要碰不太信任的代码 |
| devcontainer | 全队共用一个一致、隔离的环境 | 团队协作、要无人值守跑、新人入职统一环境 |
| 网络配置 | 公司代理 / 防火墙后面连得上 | 连不上 api.anthropic.com、公司装了 TLS 检查 |
| 终端配置 | 换行、通知、配色用着顺手 | Shift+Enter 不换行、跑完任务没提示音 |
| 模型配置 | 按任务挑模型、控成本 | 烧额度太快,或想给不同活儿配不同模型 |
这张表你不用背,但「我现在的困扰属于哪一块」这个意识得有——连不上是网络的事别去翻沙箱,嫌它老问权限是沙箱的事别去调模型。分清了,下面每一节你按需挑着看就行。
值得先点一句:这五块里,沙箱、网络、模型是你十有八九会真动手调的;devcontainer 偏团队场景,终端配置偏个人手感。所以如果你时间紧,先把沙箱、网络、模型三块吃透,devcontainer 和终端配置按需再看。
💡 一句话总结:开发配置管的是 Claude 干活的「工作环境」五件事——隔到哪儿干(沙箱 / devcontainer)、门窗通到哪(网络)、桌椅顺不顺(终端)、派谁来干(模型);先认准困扰属于哪块,再去调对应的开关。
02 沙箱:让 Claude 少问你,又跑不出隔离圈
先讲最实用、也最容易被忽略的一块——沙箱化 Bash 工具(sandboxed Bash tool)。这是 Claude Code 自带的功能,开起来就一条命令。
它解决的是一对矛盾
你用到现在,大概率被一个矛盾夹过:想让 Claude 跑得顺,又怕它跑得太野。 权限模式(第 20 篇讲过)只有两头——要么每条命令都停下来问你(烦),要么开自动模式放它撒欢(怕)。沙箱给的是中间那条路。
类比:在专用试车场里飙车。 你不会让一辆没磨合的车直接上城市道路狂奔——撞了伤的是行人和你自己。但拉到封闭试车场里就不一样了:场子四周是实打实的墙,车在里头怎么飙都飞不出去,你也就不用一路踩着刹车跟着跑了。沙箱就是给 Claude 圈的这么个试车场——操作系统层面给每条 Bash 命令划一个圈:能写哪些文件、能上哪些网,划死。Claude 在圈里随便跑,不用一条条问你;想跨出圈(比如访问一个新网络域),才停下来等你点头。
官方把这层意思说得很准:
Bash 沙箱让 Claude 可以运行大多数 shell 命令,而无需停下来请求权限。与其批准每个命令不同,你定义命令可以接触哪些文件和网络域,操作系统为每个 Bash 命令及其子进程强制执行该边界。
注意「操作系统强制执行」这几个字——这不是 Claude「答应你不出圈」,是底层操作系统拦着它出不了圈。这跟写在 CLAUDE.md 里的「请不要乱跑命令」是两码事:一个是请求,一个是硬墙。
怎么开:一条 /sandbox
沙箱内置在 Claude Code 里,在 macOS、Linux、WSL2 上能用,原生 Windows 不支持(Windows 用户在 WSL2 里跑)。开它就一步——在会话里敲:
text
/sandbox这会弹出一个面板,有三个选项卡:
- Mode(模式):选「自动允许」还是「常规权限」。自动允许 = 沙箱化的命令不再提示你直接跑(这才是沙箱的爽点);常规权限 = 即便沙箱化了也照样问你。
- Overrides(覆盖):控制沙箱内跑不了的命令能否回退到无沙箱流程运行(对应
allowUnsandboxedCommands设置)。 - Config(配置):看当前生效的沙箱边界长啥样。
平台差异得说清楚:
- macOS:什么都不用装。沙箱用的是系统自带的 Seatbelt 框架,开箱即用。
- Linux / WSL2:靠两个包——
bubblewrap(管文件隔离)和socat(管网络中继)。没装的话,/sandbox面板会只显示一个 Dependencies 选项卡告诉你缺啥,按提示装上(Ubuntu / Debian 是sudo apt-get install bubblewrap socat),重启 Claude Code 再开。
默认边界很克制——沙箱里的命令只能写当前工作目录,命令第一次要碰新网络域时,Claude Code 才停下来问你批不批。在面板里选的模式,会写进项目的 .claude/settings.local.json(只管当前项目、不进 git)。想让所有项目都默认开沙箱,就去用户级的 ~/.claude/settings.json 把 sandbox.enabled 设成 true(settings.json 的层级规则见第 31 篇)。
这里提醒一个容易踩的小坑:沙箱要是因为缺依赖或平台不支持起不来,Claude Code 默认是「打个警告、然后照样不带沙箱跑」,不会硬拦着你。这设计是为了不打断你干活,但也意味着——你以为开了沙箱,其实可能在裸跑。所以重要场合别想当然,回头用第 07 节的法子验一下它真在圈里。要是你要的是「沙箱起不来就别跑」的硬保证,把 sandbox.failIfUnavailable 设成 true。
一个关键限制:沙箱只管 Bash
这条得划重点,不然你会误以为开了沙箱就万事大吉。自带的这个沙箱,只圈住 Bash 命令。 Claude 的其他动作——读写文件(Read / Edit)、抓网页(WebFetch)、还有你装的 MCP server 和 Hook——这些都还在你主机上裸跑,不受这个沙箱管。
官方说得很明白:
内置文件工具、MCP 服务器和 hooks 仍直接在您的主机上运行。
所以**「自带沙箱」适合的是「我自己机器上日常干活,想少点权限提示」**这个场景。要是你想把整个 Claude Code 进程(连文件工具、MCP、Hook 一起)都关进圈里,那得用下一节的容器,或者官方那个还在测试期的 sandbox runtime(实验性,可能变化)——它能把整个进程包进同一层隔离。一般来说,日常就开着自带沙箱图个清净,碰到真不信任的代码才升级到容器。
💡 一句话总结:沙箱用一条
/sandbox给每条 Bash 命令圈个「试车场」——操作系统层面划死能碰的文件和网络,Claude 在圈里随便跑不用一条条问;但记住它只管 Bash,文件工具、MCP、Hook 还在主机上裸跑。
03 devcontainer:给全队发一间一模一样的「独立工作间」
上一节的沙箱是「你自己机器上圈一块」。这一节的 devcontainer(开发容器) 是另一个量级——把 Claude 整个挪进一间独立的「房间」里跑。
它解决的是「环境不一致」和「无人值守」
两个痛点逼出 devcontainer:
第一,团队环境不一致。你机器上 Node 18、同事机器上 Node 20,Claude 跑出来的结果对不上,扯皮。第二,你想让 Claude 无人值守地干——挂个长任务出去吃饭,回来活儿干完。但放它在主机上无人盯着撒欢,太险。
类比:图书馆的独立研究间。 你在开放阅览区办公(主机),桌上摊着自己的私人物品,谁路过都能瞥见,你也不敢离开半步。但订一间独立研究间就不一样了——屋里是图书馆给配好的标准桌椅设备(人人一样),门一关,里头干啥外面不沾;你的私人物品也没带进去。devcontainer 就是这么间研究间:一个用配置文件定死的、人人一致的隔离环境,Claude 在里头跑命令,碰不到你主机上的密钥和私密文件。
官方的定义:
开发容器(或 dev container)让您定义一个相同的、隔离的环境,团队中的每个工程师都可以运行。在该容器中安装 Claude Code 后,Claude 运行的命令会在容器内执行,而不是在主机上执行,同时对项目文件的编辑会在您工作时显示在本地存储库中。
这句里有个妙处:命令在容器里跑,但改的文件直接显示在你本地仓库里。等于「干活在隔离间,成果照样落到你手边」,两全。
怎么开:加一段 feature,重建容器
devcontainer 需要 Docker,并且要用支持 Dev Containers 规范的编辑器(VS Code、Codespaces、JetBrains、Cursor 等;纯 Vim 这种不支持的不在此列)。装 Claude Code 进容器,就是往项目的 .devcontainer/devcontainer.json 里加一段:
json
{
"image": "mcr.microsoft.com/devcontainers/base:ubuntu",
"features": {
"ghcr.io/anthropics/devcontainer-features/claude-code:1.0": {}
}
}那个 features 块就是官方的 Claude Code Dev Container Feature,它负责把 Claude Code 装进容器。image 那行换成你项目自己的基础镜像。写完在 VS Code 里按 Cmd+Shift+P(Win / Linux 是 Ctrl+Shift+P)运行 Dev Containers: Rebuild Container 重建,然后在容器里的终端跑 claude 登录就行。
这里有个新手必栽的坑官方专门提醒过:容器主目录默认在重建时会被丢掉,每次重建都得重新登录。想保住登录态,得给
~/.claude挂一个命名卷(named volume,一种重建后还在的持久存储)。这块属于进阶,头一次玩知道有这回事就够,真要长期用再去翻官方 devcontainer 文档配卷挂载。
还有一条安全前提,官方拿红框警示过,别忽略:
仅在使用受信任的存储库进行开发时使用开发容器,并监控 Claude 的活动。避免将主机密钥(如
~/.ssh或云凭证文件)挂载到容器中。
翻成人话:容器是道保护,但不是金钟罩。尤其当你给它配了「跳过权限提示」让它无人值守跑时,恶意代码照样能搞坏容器里能碰到的东西。所以别图省事把你主机的 SSH 密钥挂进去——要用就用仓库范围的、短期的令牌。
devcontainer vs 沙箱:别搞混
这俩都叫「隔离」,但不是一个东西。我用一张表把上一节的沙箱、这一节的 devcontainer,连官方列的其他几种隔离方式一起摆出来,你一眼看清该用哪个:
| 隔离方式 | 圈住的是 | 要 Docker 吗 | 适合 |
|---|---|---|---|
自带沙箱(/sandbox) | 只圈 Bash 命令 | 否 | 自己机器日常干活、想少点权限提示 |
| devcontainer | 整个开发环境 | 是 | 团队统一环境、无人值守跑 |
| 自定义容器 / 虚拟机 | 整个环境 / 整个操作系统 | 容器要、VM 不要 | 跑不信任的代码、要内核级隔离 |
| Claude Code on the web(第 11 篇) | 整个操作系统,Anthropic 托管 | 否 | 不想自己搭环境、没本地环境也能用 |
把这几种方式按「圈得有多严」从左到右排一排,你心里就有杆秤了——越往右隔离越强、配起来越费劲,按你对代码的信任程度往右挪:

这张图把五档隔离强度连成一条线:最左是「啥都不隔离、Claude 直接在你主机动手」,往右每一档圈的范围更大、隔离更硬——从只管 Bash 命令的自带沙箱,到圈住整个开发环境的 devcontainer,再到内核级的虚拟机,最右是 Anthropic 替你托管的云端隔离。你对手上这份代码越没底,就越该往右边挑。
官方给的选择口诀我替你浓缩成三句:
- 自己机器日常想少问 → 自带沙箱,一条
/sandbox搞定。 - 团队要一致环境 / 想无人值守 → devcontainer,提交进仓库全队共用。
- 代码完全不信任 → 专用虚拟机或网页版,要内核级的硬隔离。
落到实践上:个人项目就开自带沙箱;接外部不熟的仓库,要么 devcontainer 要么干脆扔进 Claude Code on the web 那个云端隔离环境里跑——开头那一下午的「人肉监控」,要是当时知道有网页版,根本不用受那个罪。
💡 一句话总结:devcontainer 是给全队发一间「配置一致的独立工作间」——命令在容器里跑(碰不到主机密钥)、改动直接落本地仓库,靠
.devcontainer/devcontainer.json加一段 feature 开;它跟自带沙箱的区别是圈整个环境 vs 只圈 Bash,按信任程度往上选。
04 网络配置:公司在防火墙后面,怎么让它连得上
这一节专门给两类人:在公司内网、流量得过代理的,和国内连不上 Anthropic 的。环境正常的可以快速扫一眼跳过。
它解决的是「连不通」
Claude Code 要干活,得连得上 Anthropic 的服务器(或你配的第三方提供商)。但公司网络常常横着几道关:所有出网流量必须走公司代理、公司装了 TLS 检查(自签证书)、防火墙只放行白名单里的域名。任何一道没配对,Claude Code 就连不上,卡在登录或第一次请求那儿。
类比:进了一栋管理严格的写字楼。 你(Claude Code)想往外打电话,但这楼里所有外线都得先转总机(代理服务器),你直拨打不出去;楼里还装了套安检设备查每个出入的包裹(TLS 检查),你得认得安检章(自签证书)才肯放行。网络配置干的就是「告诉 Claude Code 总机号码是多少、安检章长什么样」。
这块官方有句话先记住:所有这些都能用环境变量配,也都能写进 settings.json。下面为了直观,统一用环境变量演示。
代理:三个标准环境变量
Claude Code 认标准的代理环境变量,在终端里 export 一下就行:
bash
# HTTPS 代理(推荐)
export HTTPS_PROXY=https://proxy.example.com:8080
# HTTP 代理(HTTPS 不可用时)
export HTTP_PROXY=http://proxy.example.com:8080
# 这些地址绕过代理、直连
export NO_PROXY="localhost,127.0.0.1,.internal.company.com"两个坑得提醒:第一,Claude Code 不支持 SOCKS 代理,只认 HTTP / HTTPS,公司给的要是 SOCKS 你得另找网关。第二,代理要是需要账号密码,塞进 URL 里(http://user:pass@proxy...),但别把密码硬编码进脚本,用环境变量或安全凭据存储。
自签证书:一行指向你的 CA
公司用 TLS 检查代理(像 Zscaler、CrowdStrike 这类)的话,Claude Code 默认同时信任自带的 Mozilla CA 证书集和操作系统的证书库——只要公司的根证书装进了系统信任库,通常啥都不用配就能用。要是还不行,手动指一下你的自定义 CA 证书:
bash
export NODE_EXTRA_CA_CERTS=/path/to/your-company-ca.pem防火墙白名单:这几个域名要放行
如果你管防火墙,或者要给 IT 提需求,这是 Claude Code 需要访问的核心域名(直连 Anthropic 时):
| 域名 | 用途 |
|---|---|
api.anthropic.com | Claude API 请求(最核心) |
claude.ai | claude.ai 账户登录认证 |
platform.claude.com | Anthropic 控制台账户认证 |
downloads.claude.ai | 插件下载、原生安装器和自动更新 |
storage.googleapis.com | v2.1.116 版本前的原生安装器和自动更新(旧版本) |
bridge.claudeusercontent.com | Chrome 扩展 WebSocket 桥接 |
raw.githubusercontent.com | /release-notes 更新日志源和插件市场安装计数 |
国内用户重点看这条:api.anthropic.com、claude.ai 这些在国内直连大概率不通,你需要「魔法上网」,或者走第 04 篇 / 第 05 篇讲的第三方中转、国产模型路线。这一节的代理配置,本质也能拿来指向你的中转网关。要是你用的是 Amazon Bedrock、Google Vertex 这类第三方提供商,模型流量走的是它们的地址,就不必放行上面这几个 Anthropic 域名了。
在有 Zscaler 的公司里,常见的情形是头一天死活登录不上,以为是账号问题折腾了半天。等 IT 把公司根证书推到系统信任库里,啥环境变量都没配,重启终端就通了——所以遇到 TLS 报错先别急着 export 一堆变量,先确认公司根证书在不在系统信任库,十有八九是这事。
💡 一句话总结:公司在代理 / 防火墙后面时,用
HTTPS_PROXY告诉它总机号码(不支持 SOCKS)、用NODE_EXTRA_CA_CERTS认自签证书(但根证书进了系统库通常免配),防火墙放行api.anthropic.com等几个核心域;国内直连不通,记得魔法上网或走中转。
05 终端配置:换行、通知、配色——三样最值得调的
前面几块都是「正经事」,这一节轻松点,但对日常手感影响最大。Claude Code 在任何终端里不配置都能跑,这节只解决「某个地方用着别扭」。我挑出最多人卡的三样。
一:Shift+Enter 不换行,反而提交了
这是新手第一天就会撞的墙。你想多行输入,按 Shift+Enter 想换行,结果消息直接提交了。
先记一个万能后路:任何终端里,Ctrl+J 都能换行,或者输入 \ 再按 Enter,这俩到处都好使、不用任何配置。
Shift+Enter 行不行,看你用的终端:
| 终端 | Shift+Enter 换行 |
|---|---|
| iTerm2、Ghostty、Kitty、Apple Terminal、Windows Terminal、WezTerm、Warp | 不用配,直接能用 |
| VS Code、Cursor、Devin Desktop、Alacritty、Zed | 跑一次 /terminal-setup |
| gnome-terminal、JetBrains IDE(PyCharm 等) | 用不了;改用 Ctrl+J 或 \ 然后 Enter |
中间那档(VS Code、Cursor 这些),在会话里跑一次:
text
/terminal-setup它会把 Shift+Enter 的键位写进终端配置(已有的绑定不动),跑完重启编辑器就生效。这命令要直接在主机终端里跑,别在 tmux 或 screen 里头跑,因为它得写主机终端的配置。
二:跑完任务没动静,我老切走就忘了
长任务跑起来,你切去刷别的,结果它跑完了 / 卡在权限提示等你,你压根没注意,白等。解法是让它完成时响一声或弹个桌面通知。
默认情况下,只有 Ghostty、Kitty、iTerm2 这三个终端会发桌面通知。其他终端,在 ~/.claude/settings.json 里把 preferredNotifChannel 设成 "terminal_bell",让它改成响终端铃:
json
{
"preferredNotifChannel": "terminal_bell"
}在 iTerm2 上把这个配好之后,挂着长任务去倒杯咖啡,回来一看进度,效率高了不止一点——不然就是干等着盯屏幕,生怕错过那个权限提示。想要更花哨的(比如播个自定义音效),还能配「通知钩子」,那属于第 33 篇 Hook 的范畴,这里知道有这条路就行。
三:配色跟终端不搭,看着累
Claude Code 的界面配色可以跟你终端的明暗主题对齐。在会话里:
text
/theme选「自动」那档,它会跟着你系统的明暗外观自动切(系统切深色它跟着深色)。注意一点:Claude Code 只管自己界面的配色,管不了你终端本身的配色方案,那个得在终端 app 里设。要更细的还能自定义颜色,不过那是锦上添花,先把主题选对就够了。
顺带提一句:macOS 上不少 Option+ 开头的快捷键(比如 Option+P 换模型)默认不生效,得先在终端里把 Option 配成 Meta 键(iTerm2 在「设置 → 配置文件 → 键」里把左 / 右 Option 设成「Esc+」)。这块第 35 篇详细讲过,这里不重复。还有 Vim 党:/config 里把编辑器模式设成 vim,输入框就能用 Vim 手势编辑了。
💡 一句话总结:终端配置只解决「用着别扭」——换行不灵跑
/terminal-setup(万能后路是Ctrl+J)、没提示音设preferredNotifChannel为"terminal_bell"、配色不搭用/theme选自动;三样调顺,日常手感立马不一样。
06 模型配置:派老师傅还是学徒,你说了算
最后一块,模型配置——直接关系到「贵不贵、聪不聪明」。第 04 篇、第 06 篇讲过怎么接模型、怎么计费,这一节只讲「怎么按任务挑、怎么换、怎么省」。
它解决的是「拿大炮打蚊子」
Claude Code 有好几个模型可选,能力和价钱差着档。默认未必是你这个活儿最划算的那个——拿最贵最强的去跑「改个错别字」这种小事,纯属烧钱。
类比:餐厅排班,大厨、普通厨师、学徒。 米其林大厨(Opus)手艺最好但工钱最贵,招牌硬菜交给他;家常菜普通厨师(Sonnet)就拿得下,日常出餐全靠他;洗菜切配这种活儿,学徒(Haiku)又快又省。好的店长不会让大厨去洗菜——按菜的难度排人,才不亏钱。模型配置就是让你当这个店长。
官方用「模型别名(alias)」帮你免去记一长串版本号,常用的几个:
| 别名 | 派的是谁 | 干什么活 |
|---|---|---|
opus | 最强的 Opus | 复杂推理、架构设计这类硬骨头 |
sonnet | 最新 Sonnet | 日常编程,绝大多数活儿的主力 |
haiku | 快又省的 Haiku | 简单任务、对速度敏感的活儿 |
opusplan | 规划时 Opus、执行时 Sonnet | 计划模式用 Opus 想清楚,动手时自动切 Sonnet 省钱 |
default | 你账户档位推荐的那个 | 清掉一切覆盖,回到默认 |
那个 opusplan 得专门夸一句——它是「两全其美」的精打细算玩法:在计划模式(Plan Mode)里用 Opus 帮你把方案想周全,你一批准进入执行,它自动切成 Sonnet 来写代码。难的部分花 Opus 的钱,重复劳动用 Sonnet 的价。跑稍微复杂点的重构,基本都可以挂 opusplan,体感是「该聪明的时候聪明、该省的时候省」。
别名还有个好处官方点过:它指向「你的提供商当前推荐的那一版」,会随时间更新。也就是说你写 opus,新版 Opus 一出,你不用改配置就自动用上了。要是你非得钉死在某个版本(团队要可复现),那就别用别名,直接写完整模型名(像 claude-opus-4-8)。
怎么换:四种方式,按优先级
官方给了四种设模型的途径,按优先级从临时到永久:
bash
# 1. 会话里临时切(最即时)
/model sonnet
# 2. 启动时指定(只管这一次启动)
claude --model opus
# 3. 环境变量(只管你启动的那个会话)
export ANTHROPIC_MODEL=sonnetjson
// 4. 写进 settings.json 的 model 字段(永久默认)
{
"model": "opusplan"
}记一个实用判断:临时换一下用 /model,想固定成某个项目 / 某个人的默认就写 settings.json 的 model 字段(放哪一层看第 31 篇)。要注意项目设置和企业托管设置优先级更高,会盖过你个人的选择——所以要是你发现「我明明设了 Opus,启动却是别的」,多半是被项目里的 model 字段压住了。
同一个模型,还能再调「用多少脑子」
挑完模型,其实还有一层旋钮叫努力级别(effort level)——它控制模型「思考多深」。同一个 Opus,你可以让它「快速过一遍」,也可以让它「往死里想」,对应的就是 token 花得少还是多。
类比:还是那位大厨,今天是随手颠两下勺,还是慢工细炖。 同一个人,火候和用心程度可以不一样——简单的家常菜随手就出,硬菜才慢慢吊汤。努力级别就是给模型调这个「用心程度」,官方列了五档:low 省钱快出、medium 轻量平衡、high(Opus 4.8/4.6 和 Sonnet 4.6 的默认)平衡推理与成本、xhigh 更深推理(Opus 4.7 的默认)、max 「不计成本往深里想」。
最实用的两个用法:
- 临时让它好好想想:在提示里任何地方加一个
ultrathink关键词,这一轮它就会想得更深,不改你的会话设置。注意只有ultrathink这个词管用,「想清楚点」「好好想」这种普通话不算。 - 固定调级别:在会话里跑
/effort打开滑块选,或者写进settings.json的effortLevel字段。
一个顺手的习惯:日常默认级别就够,只有碰到那种「绕来绕去的逻辑 bug」才在提示里甩个 ultrathink,让它这一轮多烧点 token 把根因想透——比起反复来回问,这一下反而更省。
省钱小贴士:给团队锁可选模型
如果你是带团队的,可以用 availableModels 把成员能选的模型限死——比如只许用 Sonnet 和 Haiku,不让随便切到贵的 Opus:
json
{
"availableModels": ["sonnet", "haiku"]
}设了之后,成员通过 /model、--model、环境变量都切不到列表外的模型。对控团队成本特别实在。 在一个预算敏感的项目里这么干,把默认锁 Sonnet、Opus 直接从可选列表里拿掉,当月的 token 消耗肉眼可见地降了下来,该用 Opus 的硬活儿,让管理员临时在白名单里加上 opus 再用就行。
💡 一句话总结:模型配置让你当「排班店长」——硬活派
opus、日常用sonnet、简单活haiku,想又聪明又省钱挂opusplan;临时换用/model、永久默认写settings.json、带团队用availableModels锁成本;还能用ultrathink//effort调「用多少脑子」。
07 动手:开沙箱 + 锁模型,亲手验一遍
光看不练假把式。这一节带你把最实用的两块——沙箱和模型——亲手配一遍并验证。全程在 macOS / Linux / WSL2 上跑(原生 Windows 请在 WSL2 里);用最小操作,不依赖你已有的复杂环境。
第一步:开沙箱(在 claude 会话里)
text
/sandbox预期:弹出沙箱面板。在 Mode 选项卡选「自动允许」(Auto-allow)。看到面板出来 = 沙箱在你这平台可用。如果只显示一个 Dependencies 选项卡(Linux / WSL2 常见),说明缺 bubblewrap / socat——按提示装上(sudo apt-get install bubblewrap socat),重启 Claude Code 再来。
第二步:让它在沙箱里跑条命令验证
在会话里敲(让它做一件只写当前目录的小事):
text
在当前目录建一个 sandbox-test.txt 文件,里面写一行 hello sandbox预期:这条命令在沙箱里跑,不再弹权限提示(因为你选了自动允许、而且它只写工作目录——正好在沙箱默认允许的范围内)。跑完目录里多出 sandbox-test.txt。没被问权限就直接建好了 = 沙箱的自动允许生效了。(验完可以让它把这个测试文件删掉。)
第三步:看一眼当前用的什么模型
text
/status预期:/status 面板里会显示当前账户和正在用的模型。先记下来它现在是谁(比如 Sonnet 或 Opus)。
第四步:临时切个模型,再验一次
text
/model haiku预期:提示已切到 Haiku。再敲一次 /status,模型那栏应该变成了 Haiku。前后两次 /status 的模型不一样 = 你的 /model 切换确实生效了。 验完想切回去,再 /model sonnet 或 /model default 即可。
第五步(可选):把默认模型写进配置
如果你想让这个项目以后默认就用某个模型,在项目的 .claude/settings.json 里加一行:
json
{
"model": "sonnet"
}预期:下次在这个项目启动 claude,/status 里的模型默认就是 Sonnet 了(除非被你 /model 临时盖掉)。
跑通这五步,你就把「开隔离 → 验隔离 → 看模型 → 换模型 → 固化默认」这条最常用的开发配置链路亲手走了一遍。以后调任何一块开发配置,本质都是这套路子:改配置 → 跑一下 → 用 /status 之类的命令验证它真生效。
💡 一句话总结:动手把两件最实用的事验一遍——
/sandbox开隔离(让小命令不再问你)、/model切模型 +/status验证前后变化;记住「改完一定回头验」,别只改不验。
08 小结
这一篇把开发配置里最常用的五块,一块块调了一遍——说白了,就是给 Claude 这个工人,把工位安排顺。
把核心要点串起来回顾:
| 这块配置 | 一句话怎么用 | 关键点 |
|---|---|---|
| 沙箱 | /sandbox 开,选自动允许 | 只圈 Bash;文件 / MCP / Hook 还在主机裸跑 |
| devcontainer | .devcontainer/devcontainer.json 加 feature | 要 Docker;命令在容器跑、改动落本地 |
| 网络 | HTTPS_PROXY + NODE_EXTRA_CA_CERTS | 不支持 SOCKS;国内直连不通要魔法上网 |
| 终端 | /terminal-setup、/theme、通知设置 | 万能换行后路是 Ctrl+J |
| 模型 | /model 临时切、settings.json 固定 | opusplan 两全;availableModels 控团队成本 |
你现在应该能: 碰到「Claude 老问权限」知道开沙箱、碰到「不信任的代码」知道升级到容器或网页版、在公司防火墙后面知道配代理和证书、Shift+Enter 不换行知道跑 /terminal-setup、烧额度太快知道按任务挑模型甚至用 opusplan 和 availableModels 省钱。这套「工作环境」调顺了,Claude 才能既跑得安全、又用得顺手、还不烧冤枉钱。
回头看开头那一下午的「人肉监控」——要是会开沙箱、或者干脆扔进网页版隔离环境,根本不用一手按着 Ctrl+C 干瞪眼一下午。 这就是开发配置的价值:平时不显眼,关键时刻替你扛事。
下一篇 47「Voice 语音模式」(实验性,可能变化)——这一篇你把「手」的环境调顺了,下一篇换个更野的输入方式:用嘴说。想想看,你写代码时双手在键盘上忙不过来,要是能直接开口跟 Claude 交代「把这个函数重构一下」,是不是又解放了一只手?语音这块还很新,下一篇带你看看它现在能干到哪一步。