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

发布时间:2026/10/10 21:25:52

模型别名映射实战:用 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),仅供参考
延伸阅读

更多相关文章

2026/10/10 21:25:52

Rhod-2 AM钙结合动力学解析:从原理到实验优化

1. 项目概述:为什么偏偏盯着Rhod-2 AM的钙结合动力学做细胞钙成像这行,绕不开一个选择:到底用哪种钙指示剂。市面上Fura-2、Fluo-3、Fluo-4、Cal-520、GCaMP……一抓一大把,但如果你需要长波长激发、适合与GFP共转染、又想做比率或…

2026/10/10 21:20:51

Windows一键部署OCR服务:文字识别与身份证识别实战

简介:这份资源面向需要在Windows环境下快速搭建文字识别与身份证识别能力的开发者,尤其适合希望跳过繁琐环境配置、直接调用现成服务进行功能验证或项目集成的初中级技术人员。压缩包共包含2000个文件,以1848个Python脚本为核心,辅…

2026/10/10 21:20:51

Python爬虫+人脸识别+DCGAN:人脸图像生成全流程实战

简介:一份将写真套图爬取、人脸识别与DCGAN对抗生成整合为完整实践链路的学习资源,面向机器学习与图像生成方向、具备一定Python基础的学习者。压缩包共506个文件、约77.58MB,442个jpg与29个png构成训练图片集,8个py脚本承担爬虫抓…

2026/10/10 23:41:47

Python+OpenCV车道线检测实战:环境搭建、参数调优与GUI避坑指南

简介:这份资源面向正在做毕设、课程设计或期末大作业的学生,以及希望入门计算机视觉与图像处理方向的Python学习者,提供一套可直接运行的车道线检测完整项目。源码基于Python与OpenCV实现,覆盖图像加载、灰度化与高斯滤波预处理、…

2026/10/10 23:41:47

垃圾分类回收系统毕设全攻略:图像识别、硬件联调与论文答辩

简介:一份基于SpringBootVue的垃圾分类回收系统毕业论文文档,面向计算机专业毕业生与需要JavaWeb毕业设计参考的学习者。文档以垃圾分类回收系统的设计与实现为主线,完整覆盖课题背景与研究意义、开发环境与技术选型(Java、MySQL、…

2026/10/10 23:41:47

为Agent编译数据库知识包:从DDL到OKF的工程实践

第二次让 Agent 直接连数据库做查询,它把订单表和客户表的关联字段猜错了,当天晚上我收到一排告警。那一刻我才想明白:把一堆CREATE TABLE丢给 Agent,跟把一本没有目录、没有注释的字典丢给新来的实习生,本质没有区别。…

2026/10/10 23:41:47

Python练习总练废?分层练习+两个实战项目带你走出误区

1. 先聊聊“Python练习”这件事为什么容易练废我见过不少人学Python,开头那几天热情高涨,买了一堆书、收藏了一堆教程,结果练了不到两周就放弃了。回头一问,练的方式基本都是“跟着教程敲一遍”,敲完就忘,忘…

2026/10/10 23:41:47

WSL2 AI开发环境搭建:GPU直通与CUDA配置实战指南

1. 为什么要在 WSL2 里折腾 AI 开发环境1.1 一个真实的两难处境做 AI 开发的人大概率都遇到过这个场景:主力机是 Windows,平时写代码、跑实验、调模型都挺顺手,但一旦涉及某些深度学习框架的特定版本、CUDA 工具链、或者需要编译一些 Linux 专…

2026/10/10 7:31:36

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/9 20:15:56

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/8 6:05:44

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 0:04:53

从逻辑门到计算机:数字电路核心原理与全加器搭建实战

如果你拆过一台旧电脑的主板,盯着那些黑乎乎的小芯片看上一会儿,可能会冒出同一个疑问:这堆引脚密集的元件,到底是怎么“变”出那么复杂的应用的?答案并不在某个神秘的部件里,而是在所有芯片内部都在反复使…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑