Skip to content

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-20250514claude-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 请求层级路由目标说明
OpusKimi K2.5 (NVIDIA NIM)最强推理,用于复杂任务
SonnetDeepSeek R1 (OpenRouter 免费)中等推理,用于日常开发
HaikuGLM-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 这样的映射。