通过配置 MODEL_OPUS、MODEL_SONNET 和 MODEL_HAIKU 环境变量,你可以精确控制 Free Claude Code 为 Claude 的不同能力层级分配不同的模型和 Provider。这项功能允许你将最复杂的推理任务路由到强大的 Kimi K2.5,将日常编码任务交给性价比高的 DeepSeek,而将代码补全等简单操作分配给本地或免费的快速模型,从而实现成本和性能的优化组合。
Free Claude Code 多模型路由:让 Opus/Sonnet/Haiku 走不同后端
在完成 Free Claude Code 的 安装部署 后,你可能希望更精细地控制模型的使用。默认配置下,所有请求可能都指向同一个后端模型。本文将指导你如何利用 Free Claude Code 的 ModelRouter,为 Claude Code 请求的 Opus、Sonnet、Haiku 三个能力层级分别指定不同的 Provider 和模型,实现真正的“物尽其用”。
理解模型路由:ModelRouter 的工作原理
Claude Code 在运行时,会根据任务复杂度请求不同层级的模型,模型名中会包含层级关键词,例如 claude-opus-4-20250514 或 claude-sonnet-4-20250514。
Free Claude Code 代理中的 ModelRouter 组件负责拦截这些请求,并根据模型名中的关键词(opus/sonnet/haiku)进行匹配,将其路由到你预先配置好的后端。下图展示了这一过程:
Claude Code 发出请求,模型名为: claude-opus-4-20250514
↓
ModelRouter.resolve() 开始解析
↓
匹配环境变量 MODEL_OPUS,将其值设为 nvidia_nim/moonshotai/kimi-k2.5
↓
请求被路由到 NVIDIA NIM Provider
↓
最终请求被发送至 Kimi K2.5 模型
关键规则:路由的匹配优先级为 MODEL_OPUS/MODEL_SONNET/MODEL_HAIKU > MODEL。如果特定层级的变量未设置,则会 fallback 到通用的 MODEL 变量。
配置多模型路由:从基础到进阶
所有路由配置都通过环境变量完成。你可以将它们设置在系统环境变量中,或者写入启动脚本。
场景一:统一配置(基础)
如果你希望所有请求都走同一个经济或稳定的后端,只需设置 MODEL 环境变量。
# 所有 Opus、Sonnet、Haiku 请求都路由到 NVIDIA NIM 的 GLM-4.7
MODEL="nvidia_nim/z-ai/glm4.7"
这是最简单的配置,适合对成本敏感且对模型能力无差异化要求的场景。
场景二:分层路由配置(进阶)
这是多模型路由的核心。你可以为三个层级独立指定模型,甚至混合使用不同的 Provider(如 NVIDIA NIM、OpenRouter、本地 Ollama 等)。
# 首先,设置相关 Provider 的 API Key
NVIDIA_NIM_API_KEY="nvapi-..."
OPENROUTER_API_KEY="sk-or-..."
# 为每个层级指定模型
MODEL_OPUS="nvidia_nim/moonshotai/kimi-k2.5"
MODEL_SONNET="open_router/deepseek/deepseek-r1-0528:free"
MODEL_HAIKU="lmstudio/unsloth/GLM-4.7-Flash-GGUF"
# 设置 fallback 模型(可选,但推荐)
MODEL="nvidia_nim/z-ai/glm4.7"
上述配置的路由映射关系如下表所示:
| Claude Code 请求的层级 | 路由到的后端模型 | 设计思路 |
|---|---|---|
| Opus | Kimi K2.5 (NVIDIA NIM) | 将最强推理能力分配给最复杂的架构设计任务 |
| Sonnet | DeepSeek R1 (OpenRouter 免费) | 用高性价比模型处理日常编码和重构 |
| Haiku | GLM-4.7 Flash (LM Studio 本地) | 用本地快速模型完成代码补全等轻量工作 |
| 其他/未匹配 | GLM-4.7 (NVIDIA NIM) | 作为通用后备方案 |
精细化控制:Thinking 模式开关
扩展思考(thinking blocks)能提升模型处理复杂逻辑的能力,但会消耗更多 Token。Free Claude Code 允许你为每个模型层级独立控制是否启用此功能。
# 全局开关,所有未单独设置的层级遵循此值
ENABLE_MODEL_THINKING=true
# 为特定层级覆盖全局设置
ENABLE_OPUS_THINKING=true # 为 Opus 启用深度思考
ENABLE_SONNET_THINKING=false # 为 Sonnet 禁用思考,节省 Token
ENABLE_HAIKU_THINKING= # 留空,表示继承 ENABLE_MODEL_THINKING 的值(true)
注意:留空 = 后不写值,代表继承全局设置 ENABLE_MODEL_THINKING。如果全局也未设置,则默认禁用。
三种实战路由场景
下面给出三种典型的配置思路,你可以根据自身需求调整。
省钱模式:以免费模型为主力
此模式目标是将成本降至最低,优先使用 OpenRouter 等平台的免费模型。
OPENROUTER_API_KEY="sk-or-..."
# 所有层级都指向免费模型
MODEL_OPUS="open_router/deepseek/deepseek-r1-0528:free"
MODEL_SONNET="open_router/stepfun/step-3.5-flash:free"
MODEL_HAIKU="open_router/stepfun/step-3.5-flash:free"
# fallback 模型也设为免费模型
MODEL="open_router/deepseek/deepseek-r1-0528:free"
验证:启动代理后,观察控制台日志,应能看到所有模型映射均指向 open_router 的免费端点。
质量优先模式:强模型处理复杂任务
此模式在成本可控的前提下,将最好的模型分配给最重要的任务。
NVIDIA_NIM_API_KEY="nvapi-..."
DEEPSEEK_API_KEY="..."
MODEL_OPUS="nvidia_nim/moonshotai/kimi-k2.5" # 最强模型用于复杂推理
MODEL_SONNET="deepseek/deepseek-chat" # 性能均衡模型用于日常开发
MODEL_HAIKU="nvidia_nim/z-ai/glm4.7" # 快速模型用于简单任务
MODEL="deepseek/deepseek-chat" # fallback
本地优先模式:隐私敏感项目
对于涉及商业代码或敏感数据的项目,确保代码不离开本机是首要原则。所有模型都通过本地 Ollama 运行。
# 确保本地 Ollama 已运行,并已拉取所需模型
MODEL_OPUS="ollama/deepseek-r1:70b"
MODEL_SONNET="ollama/llama3.1:70b"
MODEL_HAIKU="ollama/llama3.1:8b" # 使用更小的模型以获得更快响应
MODEL="ollama/llama3.1:8b" # fallback
关键点:此配置无需任何云服务商 API Key,所有请求都在本地处理。模型大小(如 70b vs 8b)直接影响本地算力需求和推理速度。
验证与调试
配置完成后,启动 Free Claude Code 代理。在代理启动后的控制台输出中,寻找类似下面的 MODEL MAPPING 日志:
[ModelRouter] claude-opus-4-20250514 → nvidia_nim/moonshotai/kimi-k2.5
[ModelRouter] claude-sonnet-4-20250514 → open_router/deepseek/deepseek-r1-0528:free
[ModelRouter] claude-haiku-4-20250514 → ollama/llama3.1:8b
这些日志直观显示了你的路由配置是否生效。如果看到模型被路由到了意外的后端,请检查环境变量的拼写和加载顺序。
FAQ
Q: Claude Code 怎么决定用 Opus 还是 Sonnet? A: 这由 Claude Code 自身的内部逻辑决定。通常,涉及跨文件分析、架构设计等复杂任务会触发 Opus,而常规的代码生成和修改使用 Sonnet。你也可以在 Claude Code 的界面中手动切换首选模型。
Q: 如果 MODEL_OPUS 没有配置会怎样?
A: ModelRouter 会尝试使用 MODEL 变量的值作为后备。如果 MODEL 也未配置,代理将无法路由 Opus 请求,并会报告错误。建议始终设置 MODEL 作为最后的安全网。
Q: 可以把所有层级都指向同一个模型吗?
A: 完全可以。最简单的方式就是只设置 MODEL 变量,不设置 MODEL_OPUS/MODEL_SONNET/MODEL_HAIKU 中的任何一个。所有请求都会 fallback 到 MODEL 指定的模型。
Q: 路由日志在哪里看?
A: 在 Free Claude Code 代理启动后的控制台(终端)输出中,会有明确的 MODEL MAPPING 日志,格式如 模型名 → 目标后端。这是验证配置是否符合预期的最直接方式。