中级平台 / AI 工程

混合多供应商模型栈:plan 走 Opus、执行走 Qwen / DeepSeek

按 agent 角色把不同供应商的旗舰模型拼成一套 —— 规划保留 Anthropic Opus,执行落 Qwen Plus / DeepSeek V3,客户端零改动、跨协议自动翻译。

社区真正在抱怨什么

Claude Code 全程走 Claude Opus 成本压不住;一刀切降到 Sonnet 后,规划与架构判断明显掉档,返工反而更贵。开发者想混用其他供应商的旗舰(如 Qwen、DeepSeek),但客户端只认 Anthropic 协议和 claude-* 模型名,改一次配置要动所有开发机。

而 plan、主执行循环、批量子任务这几个角色对能力和价格的需求本来就不同 —— 客户端只给一个模型开关,根本对不上。

GateLLM 怎么做

GateLLM 在入口闸之后、路由之前按身份重写模型名,客户端零改动。plan 与架构判断保留 claude-opus-4 直发 Anthropic;主执行循环的 claude-sonnet-* 映射到 DashScope 的 qwen-plus;批量子任务(格式化、提交信息、检索摘要)映射到经 OpenAI 兼容上游接入的 deepseek-v3。跨协议由网关翻译,SSE 流与 tool_call_id 往返保真。

规则配在访问密钥或密钥组上,按团队分别生效,出口闸校验目标在白名单内 —— 配映射不等于发权限。

落地的 5 个手段

  • 身份作用域模型映射:from → to 配在访问密钥 / 密钥组,入口闸后、路由前重写;支持单个 * 中间片段捕获回填,热重载生效
  • 跨协议互译:Claude Code 走 Anthropic、Codex / OpenAI SDK 走 OpenAI,网关翻译成 DashScope / OpenAI / Gemini / Bedrock 上游;上游推理久插 :keep-alive,流中断插 _gateway_warning
  • 请求头条件分流:同一个 from 按 X-Tenant 等头走不同目标(exact / prefix / regex / exists / absent),带条件规则前置、无条件兜底,first-match-wins,可用于灰度
  • plan 模式识别:Claude Code 的 plan 模式注入 Plan mode is active / Exited Plan Mode 标记,脚本比较末次位置即可切路由 —— 规划走 Opus、执行落性价比模型
  • 权限与可观测:出口闸校验目标必须在身份白名单(配映射 ≠ 发权限);日志模型列挂 MM 标签、悬停显示原名 → 映射名;统计与计费按映射后真实模型名归集,混合栈成本一眼可比
查看完整方案:配置身份作用域模型映射(docs 站)

常问问题