通过ANTHROPIC_BASE_URL和LiteLLM代理,将低优先级任务路由到DeepSeek V4,保留Claude订阅处理高难度工作。
用 ANTHROPIC_BASE_URL 和 LiteLLM 的 drop_params 为 DeepSeek 创建一个 claude-cheap 别名,把订阅额度留给高风险任务。
你为 Claude Code 订阅付费,但并非每个任务都需要最强大的模型。探索性阅读、"总结一下这个目录"、用完即弃的草稿工作——这类高频低风险任务会烧掉大量 token。解决方案:为此类任务配置第二个更便宜的 backend。
问题在于:Claude Code 只认 Anthropic 的 Messages API。它没有内置的"同一工具、不同模型"概念。但你可以通过几个环境变量和一个自托管代理把它指向别处。
这个方案(由 dev.to 上的一位开发者分享)可以从同一个终端运行两个 agent:
可信赖的 agent:claude — 真正的 Anthropic 订阅,默认 session
便宜的 agent:claude-cheap — 同一个 CLI,通过 LiteLLM 代理路由到 DeepSeek V4(pro 对应 Sonnet 级别,flash 对应 Haiku 级别)
代理将 Anthropic 格式的请求转换为 DeepSeek,通过 OpenRouter API 提供服务。VPS 上的持久 SSH 隧道连接到各台机器。
关键操作:将 ANTHROPIC_BASE_URL 指向 LiteLLM 的 /v1/messages 端点,而不是 LiteLLM 也暴露的 OpenAI 兼容路径。Claude Code 只认 Anthropic 的请求结构,所以 OpenAI 形状的端点会以类似客户端 bug 的方式失败,但实际上不是。一旦 LiteLLM 坐到正确的端点上并在底层做转换,Claude Code 完全不知道它其实不是在跟 Anthropic 通信。
Claude Code 的 Plan Mode 会在请求中附加一个 context_management 参数。Anthropic 的 API 能处理它。但大多数其他 backend 不认识这个参数,会以 400 拒绝整个请求——看起来像是 Plan Mode 本身坏了,实际上是下游模型从未打算接受这个参数。

LiteLLM 配置中的一行修复:
litellm_config.yaml
---
drop_params: true
这告诉 LiteLLM 静默删除不支持的参数,而不是转发它们让 backend 拒绝请求。这样 Plan Mode 在哪个模型实际回答时都能正常工作。
这一部分比任何代理配置都值得复制:可信赖的和便宜的 agent 故意看起来不一样。
claude — 真家伙,全订阅,无包装。默认终端,默认 prompt。这是错误代价最高的 session,所以你希望在它做的事情和你之间零视觉噪音。
claude-cheap — 一个 shell 函数,掉进一个隔离的子 shell,用独特的标签和图标重命名 tab,并在退出时重置。不是为了美观:晚上 11 点在六个标签页之间切换时,你希望从结构上不可能把便宜的、限制更宽松的 session 误认为运行在你订阅上的那个。贵的工具不给仪式感;便宜的工具给一身伪装。
# --- Cheap agent: DeepSeek via self-hosted LiteLLM proxy ---
claude-cheap() {
(
unset ANTHROPIC_API_KEY
export ANTHROPIC_BASE_URL=http://localhost:3456
export ANTHROPIC_AUTH_TOKEN=anything
export ANTHROPIC_MODEL=deepseek/deepseek-v4-pro
export ANTHROPIC_DEFAULT_SONNET_MODEL=deepseek/deepseek-v4-pro
export ANTHROPIC_DEFAULT_HAIKU_MODEL=deepseek/deepseek-v4-flash
export CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1
echo -ne "\033]0;🐋 DEEPSEEK-AGENT\007"
claude "$@"
echo -ne "\033]0;Terminal\007"
)
}
子 shell ( ... ) 使这些 export 是用完即弃的——函数返回后不会泄漏到父 shell。
ANTHROPIC_AUTH_TOKEN 设置为假值,因为 LiteLLM 不检查它;它只是需要存在,这样 Claude Code 才不会拒绝启动。
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC 减少对这个 session 回拨 Anthropic 自有遥测端点的调用,因为这个 session 背后没有真实的 Anthropic 账户。
目标从来不是"让 Claude Code 更便宜"。而是 supervisor/executor 分离:订阅 session 做规划、审查,任何你不想看到出问题的事情。代理 session 处理高频低风险工作,其输出在获得信任之前会经过审查,方式与订阅 session 相同。
决策的逻辑与为监控 agent 选云端模型而非本地模型相同——不是"哪个模型更聪明",而是"我能容忍哪种失败模式,什么是最便宜且能达标的东西"。这里轴是订阅成本而非设备端 vs 云端。底层问题是一样的:我愿意接受什么程度的错误,以及谁来监督它是否出错。
也有一个纯本地变体:同样的双层模式,但便宜的那层完全跑在本地设备上而非通过托管代理。那个方案遇到了 tool-calling 格式不匹配的问题——那是一个值得单独讲的故事,作者计划另写一篇。
你的订阅留在需要的地方。你的便宜 agent 处理其余的事情。
Originally published on gentic.news