接入教程

Claude Code 怎么配置模型:/model、启动参数、环境变量与 settings.json(2026)

Ethan Cole

在 Claude Code 里配置模型有四个入口,按临时到持久排列:会话内的 /model 命令、启动时的 --model 参数、ANTHROPIC_MODEL 环境变量,以及 settings.json 里的 model 字段。越具体的层级优先级越高。本文逐个说明用法、别名机制,以及如何确认到底是哪个模型在回答。

Claude Code 配置模型的四个位置

入口

作用范围

典型用途

会话内 /model

仅当前会话

任务中途换模型试试

claude --model <名称>

仅本次启动

脚本、一次性运行

ANTHROPIC_MODEL=<名称>

该 shell 或服务拉起的每次启动

CI、容器、网关场景

settings.json 的 "model"

持久,按用户或按项目

每天都用的默认值

多处同时设置时,范围更窄的生效:会话命令覆盖启动参数,启动参数覆盖环境变量,环境变量覆盖设置文件。实际后果是,shell 配置里一条过时的 export,会悄悄压过你刚提交进仓库的项目默认值。改了没反应,就往上一层找。

别名与完整模型 ID

Claude Code 既接受 sonnet、opus、haiku 这类短别名,也接受 claude-sonnet-5-5 这类完整模型 ID。两者随时间的表现不同:

  • 别名跟随 Claude Code 当前的映射。新版本发布后,别名会跟着挪。交互式工作很方便,但对需要可复现输出的场景有风险。
  • 完整 ID钉死一个具体模型。流水线、评测,以及任何需要跨周对比的工作,都应该用完整 ID。

「set model to opus 4.x」这类搜索很常见,正是因为版本后缀经常变。与其记后缀,不如直接输入不带参数的 /model 查看你这个安装提供的选项,或者在钉死之前到官方文档核对当前模型列表。

只给当前会话设置模型

在交互式会话里:

/model sonnet

或者用完整 ID:

/model claude-opus-5-5

从下一条消息开始生效,会话结束即失效。不带参数的 /model 会打开选择器并显示当前选中项,这是查看状态最快的方式。

启动时设置模型

claude --model opus
claude --model claude-haiku-5-5 -p "总结这个分支的改动"

参数适合脚本,也适合在同一个提示词上比较两个模型:换值跑两次,再 diff 输出。

用环境变量设置模型

export ANTHROPIC_MODEL=claude-sonnet-5-5
claude

把 export 放进真正拉起 Claude Code 的那个环境里:CI 任务定义、Dockerfile、systemd unit,或 shell 配置文件。有两组相关变量值得了解:

  • ANTHROPIC_DEFAULT_SONNET_MODEL、ANTHROPIC_DEFAULT_OPUS_MODEL、ANTHROPIC_DEFAULT_HAIKU_MODEL 改变别名解析到的具体模型。团队可以继续敲 sonnet,由管理员决定它到底指哪一个。
  • CLAUDE_CODE_SUBAGENT_MODEL 单独设置会话派生出的子代理所用的模型,与主模型互不影响。

如果你通过 ANTHROPIC_BASE_URL 走网关或中转,模型名必须是网关认得的那一个。有的网关原样接受 Anthropic 的 ID,有的暴露自己的命名。刚切完端点就报「未知模型」的 404 或 400,几乎都是这个不匹配,不是 Claude Code 的 bug。用替代模型运行 Claude Code 讲了换端点之后还有什么会变。

在 settings.json 里设置模型

想要一个重启后仍在的默认值,在对应的设置文件里加 model 字段:

{
  "model": "claude-sonnet-5-5"
}
  • ~/.claude/settings.json 对你在所有项目生效。
  • 仓库里的 .claude/settings.json 对所有 clone 这个仓库的人生效(提交进版本库)。
  • .claude/settings.local.json 只对你、只在这个仓库生效(不要进版本库)。

设置文件按字段合并,项目本地文件优先于项目文件,两者都优先于用户文件。值没落到预期位置时,Claude Code 配置:层级与合并规则 有逐层的说明。

验证实际在用的模型

配置了不等于确认了。三个检查,从最便宜的开始:

  1. 输入不带参数的 /model,选择器会高亮当前模型。
  2. 运行 /status。状态输出里有模型、账号和端点,顺带能发现「模型对了但端点错了」的情况。
  3. 问模型一个不同模型会给出不同答案的问题,比如它的上下文窗口大小,与你预期模型的文档值对照。这是 sanity check 不是证明,因为模型对自己的描述可能有误。

如果实际模型与设置不一致,按优先级表往下排查:先看会话覆盖,再看启动命令,再 env | grep ANTHROPIC,最后逐个看设置文件。

按工作选模型

选模型既是能力问题,也是成本与延迟问题。编码工作一个合理的分工:

  • 小而快的模型负责重复性修改、跑测试、写 commit message。
  • 中档模型做日常默认。
  • 最大的模型留给架构决策、难缠的调试,以及任何答错代价高于 token 费用的事。

无论怎么选,上面的机制都一样。官方端点与 ROIBest AI 这类中转站之间唯一的差别,是端点接受哪一组模型名,所以把默认值写进 settings.json 之前,先到服务方那边核对列表。

常见问题

怎么只给当前这一次会话换模型?

在会话里输入 /model <别名或 ID>,从下一条消息生效,退出后重置。

永久默认模型设在哪里?

给自己用写进 ~/.claude/settings.json 的 "model";给整个团队用写进仓库的 .claude/settings.json。

为什么 settings.json 里的 model 一直被忽略?

有更具体的层级在生效:--model 参数、shell 配置里的 ANTHROPIC_MODEL export,或当前会话里的 /model 覆盖。范围窄的赢。

第三方端点能用模型别名吗?

只有端点做了别名映射才行。很多中转站要求完整模型 ID 或它们自己的命名。查服务方的模型列表,用它公布的精确字符串。