模型别名映射实战:用 9Router 让 Claude Code 无缝改用 DeepSeek

发布时间:2026/10/10 21:25:50
模型别名映射实战:用 9Router 让 Claude Code 无缝改用 DeepSeek 模型别名映射实战用 9Router 让 Claude Code 无缝改用 DeepSeek【免费下载链接】9routerUnlimited FREE AI coding. Connect Claude Code, Codex, Cursor, Cline, Copilot, Antigravity to FREE Claude/GPT/Gemini via 40 providers. Auto-fallback, RTK -40% tokens, never hit limits.项目地址: https://gitcode.com/GitHub_Trending/9r/9routerClaude Code 是目前编程体验最好的 AI 终端之一但它默认只认 Anthropic 官方模型每个月固定的订阅配额、高峰期限流以及按量计费时动辄数十美元的 API 账单让不少开发者又爱又恨。而 DeepSeek 以极低的推理价格和接近第一梯队的代码能力早已成为省钱平替的热门选项——问题只在于一个只认 Claude 的 CLI 工具怎么才能不换工具、不改习惯就把请求真正发到 DeepSeek 后端9Router 给出的答案是一套模型别名映射机制在前端保留sonnet、opus、haiku这些 Claude Code 认识的名字在后端把它们逐一解析为deepseek/xxx这样的真实模型。这篇文章从源码出发拆解别名映射的原理给出让 Claude Code 无缝改用 DeepSeek 的完整配置并用仓库中的定价数据估算实际省钱效果。别名映射的原理一个名字对应一个后端要理解 9Router 的别名机制先要分清它体系里的两层别名第一层是 Provider 别名。每个接入的供应商在注册表中都有自己的短前缀。以 DeepSeek 为例它的注册定义在 open-sse/providers/registry/deepseek.jsexport default { id: deepseek, alias: deepseek, aliases: [ds], uiAlias: ds, ... models: [ { id: deepseek-v4-pro, name: DeepSeek V4 Pro }, { id: deepseek-v4.1-flash, name: DeepSeek V4.1 Flash }, { id: deepseek-chat, name: DeepSeek V3.2 Chat }, { id: deepseek-reasoner, name: DeepSeek V3.2 Reasoner }, ], };这意味着ds/deepseek-chat与deepseek/deepseek-chat指向同一个后端——前缀只是入口的马甲。第二层才是本文的主角模型别名。9Router 在 SQLite 中维护了一张modelAliases的 KV 表规则就是注释里写的那句话key 别名value 完整的模型字符串。见 src/lib/db/repos/aliasRepo.jsconst aliasKv makeKv(modelAliases); // modelAliases: keyalias, valuemodelString export async function getModelAliases() { return await aliasKv.getAll(); } export async function setModelAlias(alias, model) { await aliasKv.set(alias, model); }对外暴露为三个 REST 接口src/app/api/models/alias/route.jsGET /api/models/alias拉取全量映射PUT /api/models/aliasbody 传{ model, alias }新增/覆盖映射DELETE /api/models/alias?aliasxxx删除映射。真正的解析逻辑在 open-sse/services/model.js。核心是parseModel的分流判断模型字符串里带/说明用户直接写明了哪个 provider 的哪个模型走常规路由不带/说明这只是一个别名需要查表翻译// Check if standard format: provider/model or alias/model if (modelStr.includes(/)) { const firstSlash modelStr.indexOf(/); const providerOrAlias modelStr.slice(0, firstSlash); const model modelStr.slice(firstSlash 1); const provider resolveProviderAlias(providerOrAlias); return { provider, model, isAlias: false, providerAlias: providerOrAlias }; } // Alias format (model alias, not provider alias) return { provider: null, model: modelStr, isAlias: true, providerAlias: null, };命中别名后resolveModelAliasFromMap把别名替换成provider/model结构export function resolveModelAliasFromMap(alias, aliases) { const resolved aliases[alias]; if (!resolved) return null; // Resolved value is provider/model format if (typeof resolved string resolved.includes(/)) { const firstSlash resolved.indexOf(/); return { provider: resolveProviderAlias(resolved.slice(0, firstSlash)), model: resolved.slice(firstSlash 1), }; } ... }在 9Router 应用层src/sse/services/model.js 中的resolveModelAlias从本地库读取映射表再交给核心解析器完成别名 → 真实 provider/model的闭环。所以整个链路可以概括为Claude Code 说 sonnet → 9Router 查 modelAliases 表sonnet → ds/deepseek-v4-pro → 解析为 providerdeepseek, modeldeepseek-v4-pro → 按注册表里的 transport 配置转发到 DeepSeek 端点一个名字对应一个后端改表即改路由客户端的请求体一行都不用动。让 Claude Code 认 DeepSeek 的完整配置Claude Code 的模型槽位由一组环境变量控制。在 src/shared/constants/cliTools.js 中claude工具的配置写得明明白白claude: { id: claude, name: Claude Code, configType: env, envVars: { baseUrl: ANTHROPIC_BASE_URL, model: ANTHROPIC_MODEL, opusModel: ANTHROPIC_DEFAULT_OPUS_MODEL, sonnetModel: ANTHROPIC_DEFAULT_SONNET_MODEL, fableModel: ANTHROPIC_DEFAULT_FABLE_MODEL, haikuModel: ANTHROPIC_DEFAULT_HAIKU_MODEL, }, settingsFile: ~/.claude/settings.json, defaultModels: [ { id: sonnet, alias: sonnet, envKey: ANTHROPIC_DEFAULT_SONNET_MODEL, defaultValue: cc/claude-sonnet-5 }, { id: opus, alias: opus, envKey: ANTHROPIC_DEFAULT_OPUS_MODEL, defaultValue: cc/claude-opus-5 }, ... ], }也就是说Claude Code 在启动时会读~/.claude/settings.json或环境变量里的ANTHROPIC_BASE_URL与各槽位模型变量。要让 DeepSeek 接管只需要做两件事第一步把请求端点指向 9Router。在~/.claude/settings.json中写入{ env: { ANTHROPIC_BASE_URL: http://localhost:20128/v1, ANTHROPIC_AUTH_TOKEN: sk_9router } }20128是 9Router 默认端口API Key 在 Dashboard 中生成。这一步是把 Claude Code 的所有请求先劫持到本地网关。第二步把模型槽位映射到 DeepSeek。这里有两种做法。做法 A——直接映射最省事。把某个槽位写成完整的provider/model字符串比如让默认对话模型和轻量模型都走 DeepSeek{ env: { ANTHROPIC_BASE_URL: http://localhost:20128/v1, ANTHROPIC_AUTH_TOKEN: sk_9router, ANTHROPIC_DEFAULT_SONNET_MODEL: ds/deepseek-v4-pro, ANTHROPIC_DEFAULT_HAIKU_MODEL: ds/deepseek-v4.1-flash } }之后 Claude Code 里所有默认模型的会话都落在 DeepSeek 上。注意ds是 DeepSeek 在注册表中的快捷别名写deepseek/deepseek-v4-pro效果相同。做法 B——自定义模型别名灵活可控。先在 Dashboard 或直接调用PUT /api/models/alias建一张自己的映射表curl -X PUT http://localhost:20128/api/models/alias \ -H Content-Type: application/json \ -d {model: deepseek/deepseek-v4-pro, alias: my-coding-model}然后在 Claude Code 中把ANTHROPIC_DEFAULT_SONNET_MODEL指向这个别名。这样把哪个别名对应哪个后端的决策权从客户端剥离出来集中在 9Router 的配置里——换供应商只改一行映射客户端零改动。如果不想手写 JSONDashboard 的 CLI Tools → Claude Code 页面对应 src/app/(dashboard)/dashboard/cli-tools/components/ClaudeToolCard.js/dashboard/cli-tools/components/ClaudeToolCard.js)提供了可视化编辑每个槽位都有一个输入框直接填ds/deepseek-v4-pro这类值点 Apply 后前端会组装上述 env 并写回~/.claude/settings.json。一个必须强调的技术细节为什么不建议 Claude Code 直连 DeepSeek 的 Anthropic 兼容端点因为在 open-sse/providers/registry/deepseek.js 的注册表注释里写得很清楚DeepSeek 官方虽然提供https://api.deepseek.com/anthropic/v1/messages端点但只接受内置的web_search_*工具任何客户端自定义工具MCP、Read、Bash 等都会直接返回 HTTP 400。而 Claude Code 重度依赖 MCP 与文件操作工具直连必然失败。9Router 为此在注册表中声明了工具白名单quirks: { claudeSupportedToolTypes: [web_search_20250305, web_search_20260209], },当客户端以 Claude 协议发请求时9Router 的prepareClaudeRequest()会先剥掉白名单之外的工具再转发避免整个请求被 400 拒掉同时 transport 配置 为 DeepSeek 同时声明了openai与claude两种格式的端点9Router 会根据客户端协议自动选择对应 transport 以跳过不必要的格式翻译。这正是走 9Router 中转比直连 DeepSeek更可靠的核心原因。省钱效果与响应体验实测DeepSeek 的成本优势在 9Router 的定价表 open-sse/providers/pricing.js 中有据可查deepseek-chat: { input: 0.14, output: 0.28, cached: 0.0028, reasoning: 0.28, cache_creation: 0.14 }, deepseek-v4-flash: { input: 0.14, output: 0.28, cached: 0.0028, reasoning: 0.28, cache_creation: 0.14 }, deepseek-v4-pro: { input: 0.435, output: 0.87, cached: 0.003625, reasoning: 0.87, cache_creation: 0.435 },单位是每百万 token 的美元价格主力对话模型deepseek-v4-pro输入仅 $0.435/M、输出 $0.87/M轻量档deepseek-v4-flash更是低至 $0.14/$0.28。对比 Claude Code 的订阅制或官方 API 按量价格差距在一个数量级以上。按一个中重度使用场景粗算每月 5000 万输入 token 1000 万输出 token全部走deepseek-v4-pro大约是 $21.75 $8.7 ≈$30 出头若代码审查、日志解析这类任务下沉到deepseek-v4-flash总账单可以压到 $10 以内。而同样的量如果按 Claude 官方 API 计费通常是这笔费用的 5-10 倍。更重要的是DeepSeek 按量计费没有月度配额清零的焦虑——不会出现订阅制那种月底还剩一大半额度月初又撞限流的尴尬。省钱之外还有一重叠加收益9Router 默认开启的 RTKToken Saver会在转发前对tool_result内容做压缩README 宣称可节省 20-40% 的 token 消耗。DeepSeek 定价本来就低再叠加 RTK 压缩等效成本还能再打六到八折——这也是仓库主打的订阅 → 低价 → 免费三级回落策略里DeepSeek 常驻低价层的原因。关于响应体验源码层面有一个对开发者友好的设计DeepSeek 的deepseek-chat与deepseek-reasoner分别对应 V3.2 的 Chat 与 Reasoner 档位而 9Router 的 reasoningInject 配置 声明scope: all会把客户端的思考thinking请求统一注入到 DeepSeek 的推理链路里所以 Claude Code 侧先思考再作答的交互节奏基本保留。多端点配置也意味着请求不需要做协议翻译Claude 格式请求直接打到 Anthropic 兼容端点、OpenAI 格式请求打到 chat/completions 端点转发延迟接近代理直连的水平。写在最后模型别名映射的本质是把客户端看到的模型名和真正干活的后端解耦。9Router 用一张 KV 表src/lib/db/repos/aliasRepo.js实现了这个解耦Claude Code 继续说着sonnet、haiku而流量已经悄悄转向 DeepSeek 的低价算力。这套机制同样适用于 Cursor、Cline、Codex 等任何支持自定义端点的客户端改的只是各自的配置文件。最后提醒一句DeepSeek 的 Anthropic 兼容端点对自定义工具的支持有限务必经由 9Router 中转利用其工具白名单剥离机制而不是在客户端里直接填写 DeepSeek 官方地址。把握住这一条从 Claude 到 DeepSeek 的切换就是一次零风险、立省数十美元的配置操作。【免费下载链接】9routerUnlimited FREE AI coding. Connect Claude Code, Codex, Cursor, Cline, Copilot, Antigravity to FREE Claude/GPT/Gemini via 40 providers. Auto-fallback, RTK -40% tokens, never hit limits.项目地址: https://gitcode.com/GitHub_Trending/9r/9router创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询