claude-code-model-alias-mapping · ZH · 2026-11-05

让 Claude Code 点到想用的后端:把它写死的模型名映射到聚合站别名

本文解释 Claude Code 客户端内置的模型标识(如 claude-sonnet-4-20250514)在通过 LLM API 聚合站转发时如何被识别与映射,并给出三种重映射方案:利用聚合站别名配置、在客户端侧拦截改写请求、以及服务端代理层转换。文章不涉及具体价格与模型清单,仅讨论机制与操作要点,帮助开发者将 Claude Code 的请求导向 GPT、DeepSeek 或 Qwen 等非 Claude 后端。

Claude Code 把模型名写死在代码里,默认指向 Claude 系列模型。当它指向聚合站时,请求里带的仍是这些 claude-* 标识。聚合站需要在转发前把它们翻译成上游真实模型,或者让你主动重映射到 GPT、DeepSeek、Qwen 等后端。本文拆解这套映射发生在哪些环节,以及可行的拦截与改写方式。

Claude Code 如何选择模型标识

Claude Code 在发起 API 请求时,会在请求体中携带 model 字段。这个值来自内置配置或环境变量,常见形态是带日期后缀的 claude- 名称。由于代码写死,它不会主动改为 gpt- 或 deepseek-* 之类的名字。

因此,只要请求经过聚合站,聚合站收到的就是 Claude Code 认定的那个模型标识。能否落到别的后端,取决于聚合站是否把这个标识映射到其他模型。

聚合站一侧的翻译层

聚合站的核心工作之一是模型名翻译:接收客户端传来的 model 字段,按站点配置把它换成向上游服务商发请求时使用的真实模型名。常见做法有几种:

  • 别名表:站点维护一张从客户端可见名称到上游模型的映射表。Claude Code 传来的 claude-* 若在别名表中有条目,就被替换成目标后端。
  • 前缀/路径路由:部分聚合站允许在模型名里加入路由信息,或通过不同接入点区分后端。
  • 默认回退:若某个标识未命中任何映射,站点可能回退到默认模型,或直接返回错误。

换句话说,Claude Code 的模型名在聚合站内部只是一把“钥匙”;聚合站决定这把钥匙开哪扇门。

方式一:利用聚合站别名做重映射

最省事的方式是配置聚合站的别名表。通常站点会提供控制台或配置接口,允许你把某个客户端模型名指向任意上游模型。

操作要点:

  1. 确认聚合站是否支持自定义别名,以及别名作用域(是按 API key、按项目还是全局)。
  2. 把 Claude Code 实际会发出的 model 值(可通过抓包或查看环境变量确认)登记为别名键。
  3. 把别名值设为你希望落到后端对应的模型标识(例如 gpt-、deepseek-、qwen-* 等,以站点文档为准)。
  4. 用一次小请求验证响应头或返回体里的 model 字段,确认已落到目标后端。

这种方式不改客户端,风险最低,但依赖聚合站是否开放别名配置。

方式二:在客户端侧拦截并改写请求

如果聚合站不开放别名,或者你想按请求条件动态切换后端,可以在客户端与聚合站之间加一层拦截。

常见做法是让 Claude Code 指向一个本地代理,由代理改写请求体里的 model 字段:

Claude Code  ->  本地代理(改写 model)  ->  聚合站  ->  上游后端

代理需要做几件事:

  • 读取请求体 JSON,定位 model 字段。
  • 按规则替换为目标模型名;可以按路径、按 header 或按请求特征决定替换成哪个后端。
  • 保留其他字段不变,尤其是流式参数与工具调用结构。
  • 注意 Claude Code 可能走流式接口,代理要支持流式透传,不能在改写 model 后缓冲整个响应。

这种方式的优点是灵活:你可以按任务类型把某些请求导向 GPT,某些导向 DeepSeek 或 Qwen。代价是要维护代理,并确保流式与错误处理正确。

方式三:服务端代理层做转换

如果你已经在客户端和聚合站之间有自建网关,也可以在网关层完成模型名转换。网关通常比本地代理更适合团队使用,因为配置集中、可审计。

实现要点与方式二类似,但需要注意:

  • 网关要能识别 Claude Code 使用的接入点,避免影响其他客户端。
  • 模型名转换规则最好用配置而不是代码写死,方便后续调整。
  • 记录原始 model 与改写后的 model,便于排查落错后端的问题。

映射时需要注意的兼容性

不同后端的 API 结构并不完全一致。改模型名只是第一步,还需要确认:

  • 消息格式:Claude Code 发出的消息结构是 Anthropic 风格还是 OpenAI 风格,取决于它调用的接入点。聚合站通常会在翻译层做格式转换,但重映射后要确认转换仍然正确。
  • 工具调用:如果 Claude Code 使用工具调用,目标后端是否支持等价结构,聚合站是否做了适配。
  • 流式响应:重映射后流式事件格式是否一致,客户端能否正常解析。
  • 错误语义:上游返回的错误是否被正确翻译,避免客户端误判。

这些兼容性问题比模型名本身更容易导致“请求发出去了但结果不对”。

验证重映射是否生效

改写后不要只看请求是否成功,建议做三层验证:

  1. 请求侧:抓包或查看代理日志,确认发往聚合站的 model 已是目标值。
  2. 响应侧:检查响应体里的 model 字段与响应特征,确认来自目标后端而非回退模型。
  3. 行为侧:用可区分的提示词或任务观察输出风格与能力边界,辅助判断实际后端。

若聚合站返回的 model 字段与预期不符,优先检查别名表是否命中,以及代理是否在流式请求中正确改写了请求体。

小结

Claude Code 的模型名是写死的,但请求经过聚合站时可以翻译。三条路径各有取舍:别名配置最轻量,客户端代理最灵活,服务端网关最适合团队。核心都是把 model 字段从 claude-* 改写成目标后端标识,并确保消息格式、工具调用与流式响应在重映射后仍然兼容。