Appearance
Free Claude Code 的模型路由机制允许你为 Claude 的 Opus、Sonnet、Haiku 三个层级分别指定不同的 Provider 和模型。通过 MODEL_OPUS、MODEL_SONNET、MODEL_HAIKU 三个环境变量,可以实现"强模型用于复杂推理、便宜模型用于简单任务"的成本最优化。
Free Claude Code 多模型路由:让 Opus/Sonnet/Haiku 走不同后端
模型路由的工作原理
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/SONNET/HAIKU > MODEL(fallback)。
配置方法
基础配置:一个 Provider 覆盖所有层级
dotenv
MODEL="nvidia_nim/z-ai/glm4.7"所有请求都走 NVIDIA NIM 的 GLM-4.7。
进阶配置:每个层级独立路由
dotenv
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"
MODEL="nvidia_nim/z-ai/glm4.7"| Claude 请求层级 | 路由目标 | 说明 |
|---|---|---|
| Opus | Kimi K2.5 (NVIDIA NIM) | 最强推理,用于复杂任务 |
| Sonnet | DeepSeek R1 (OpenRouter 免费) | 中等推理,用于日常开发 |
| Haiku | GLM-4.7 Flash (LM Studio 本地) | 最快速度,用于简单任务 |
| 其他 | GLM-4.7 (NVIDIA NIM) | fallback |
Thinking 模式控制
每个层级可以独立控制是否启用扩展思考(thinking blocks):
dotenv
ENABLE_MODEL_THINKING=true # 全局开关
ENABLE_OPUS_THINKING=true # Opus 启用 thinking
ENABLE_SONNET_THINKING=false # Sonnet 禁用 thinking
ENABLE_HAIKU_THINKING= # Haiku 继承全局设置(true)留空表示继承 ENABLE_MODEL_THINKING 的值。thinking 模式会消耗更多 Token,但能提升复杂推理的准确率。
实战场景
场景一:省钱模式——免费模型为主
dotenv
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"
MODEL="open_router/deepseek/deepseek-r1-0528:free"全部走 OpenRouter 免费模型,零成本。
场景二:质量优先——强模型处理复杂任务
dotenv
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"Opus 用最强的 Kimi,Sonnet 用 DeepSeek,Haiku 用快速的 GLM。
场景三:本地优先——隐私敏感项目
dotenv
MODEL_OPUS="ollama/deepseek-r1:70b"
MODEL_SONNET="ollama/llama3.1:70b"
MODEL_HAIKU="ollama/llama3.1:8b"
MODEL="ollama/llama3.1:8b"全部走本地 Ollama,代码不离开本机。
FAQ
Q: Claude Code 怎么决定用 Opus 还是 Sonnet? A: Claude Code 内部有任务复杂度判断逻辑。一般来说,涉及多文件重构、架构设计等复杂任务会请求 Opus,日常代码生成用 Sonnet,简单的补全或建议用 Haiku。用户也可以在 Claude Code 中手动切换模型。
Q: 如果 MODEL_OPUS 没有配置会怎样? A: fallback 到 MODEL 的值。如果 MODEL 也没配置,代理会报错。
Q: 可以把所有层级都指向同一个模型吗? A: 可以。只设 MODEL,不设 MODEL_OPUS / MODEL_SONNET / MODEL_HAIKU,所有请求都走同一个模型。
Q: 路由日志在哪里看? A: 代理启动后的控制台输出中会有 MODEL MAPPING 日志,显示 claude-opus-4-20250514 → nvidia_nim/moonshotai/kimi-k2.5 这样的映射。