4 步把 Claude Code 的请求路由到 DeepSeek 模型:Claude Code Router 实践
【免费下载链接】claude-code-routerOne local control plane for every AI agent: route across models, fuse new capabilities, orchestrate tools, and stay fully in control.项目地址: https://gitcode.com/GitHub_Trending/cl/claude-code-router
Claude Code Router(下称 CCR)是一个本地模型网关:它为 Claude Code 等编程代理提供统一的本地端点,把每次模型请求转发到你配置的提供商与模型上。本文以 DeepSeek 集成为主线,依次说明 CCR 的定位、最小可运行配置、路由机制、按场景分发模型的方法、高级定制手段,以及成本监控与生产部署,覆盖从 DeepSeek 接入 Claude Code 到多模型路由策略的完整过程。
认识项目:Claude Code Router 是什么
Claude Code Router 是一个运行在本地的模型网关与控制面。Claude Code 默认只调用 Anthropic 的模型,而 CCR 在本地(默认127.0.0.1:3456)暴露一个兼容端点,接收请求后完成三件事:
- 判断请求属于哪类场景,选择目标提供商和模型;
- 做协议转换(transformer),把 Anthropic Messages 格式的请求转成目标模型支持的格式,再把响应转回来;
- 记录每次请求的最终路由、耗时、token 用量与成本估计,供界面查看。
DeepSeek 是 CCR 内置的提供商预设之一,使用 OpenAI Chat Completions 兼容协议,预设定义见 packages/core/src/providers/presets/deepseek/index.ts。因此 DeepSeek 接入 Claude Code 不需要自己写转换逻辑:把 Claude Code 指向 CCR 的本地端点,由 CCR 负责协议适配与路由。
安装 Claude Code Router 并准备最小配置
通过 npm 全局安装 CLI,然后启动服务:
npm install -g @musistudio/claude-code-router ccr start # 后台启动管理服务和网关;ccr ui 可打开管理界面最小可运行的配置如下(保存为~/.claude-code-router/config.json):
{ "HOST": "127.0.0.1", "PORT": 3456, "API_TIMEOUT_MS": 600000, "Providers": [ { "name": "deepseek", "api_base_url": "https://api.deepseek.com", "api_key": "$DEEPSEEK_API_KEY", "models": ["deepseek-chat", "deepseek-reasoner"] } ], "Router": { "default": "deepseek/deepseek-chat" } }| 字段 | 含义 | 示例值 |
|---|---|---|
HOST/PORT | 本地网关监听地址,Claude Code 指向它 | 127.0.0.1/3456 |
API_TIMEOUT_MS | 上游模型请求超时时间(毫秒) | 600000 |
Providers[].name | 提供商名称,路由时以「名称/模型」引用 | deepseek |
api_base_url | 模型服务地址 | https://api.deepseek.com |
api_key | 服务密钥,支持$变量引用环境变量 | $DEEPSEEK_API_KEY |
models | 该提供商下可用的模型 ID 列表 | deepseek-chat |
Router.default | 默认路由目标 | deepseek/deepseek-chat |
需要注意:桌面版将运行配置维护在 SQLite 数据库中(位置见 docs/src/content/docs/zh/configuration/configuration-file.md),config.json仅在没有数据库时作为迁移来源读取一次。因此日常建议在ccr ui界面中管理提供商和路由,界面内也提供 DeepSeek 预设导入。
路由机制:请求如何按场景分发到不同模型
(token 指模型计费与计量所用的词元单位;router 指决定「这次请求交给哪个模型」的环节。)
CCR 处理每个请求的顺序是:先由内置路由识别请求来源与场景,再依次匹配用户自定义规则,最后交给 transformer 做协议转换并转发。Claude Code 的不同请求对应不同场景:
| 场景 | 配置项 | 触发时机 |
|---|---|---|
| 主对话 | default | 常规对话与编码请求 |
| 后台任务 | background | 标题生成、摘要等低成本后台请求 |
| 扩展思考 | think | 需要 reasoning 的复杂推理请求 |
| 长上下文 | longContext | 上下文长度超过设定阈值 |
| 联网搜索 | webSearch | 请求需要网页检索能力 |
整体流程如下:
内置路由与自定义规则的细节见 docs/src/content/docs/zh/configuration/routing.md。
按场景选模型:DeepSeek 模型对比表
Claude Code 模型路由配置的核心是给每个场景指定合适的模型,参考如下(模型 ID 以 DeepSeek 平台实际可用为准):
| 场景 | 配置项 | 推荐模型 | 适用任务 |
|---|---|---|---|
| 日常编码 | default | deepseek-chat | 一般问答、代码补全、代码解释 |
| 后台小任务 | background | 轻量 Flash 级模型 | 标题生成、摘要、低成本并行子代理 |
| 复杂推理 | think | deepseek-reasoner | 数学推导、算法设计、多步规划 |
| 长文档分析 | longContext | 长上下文模型(可跨提供商) | 仓库级上下文整理、长文档问答 |
| 联网检索 | webSearch | 具备搜索能力的模型 | 实时信息获取 |
高级配置:自定义路由规则、子代理与环境变量
在路由页面添加自定义规则:按请求头或请求体字段设置条件,命中后改写目标模型;规则按列表顺序匹配,第一条命中即生效。更复杂的判断可用 Node.js 脚本规则,脚本可访问请求摘要与 token 估算,例如按关键词分发:
const text = input.summary.lastUserText || ""; if (/debug|单测|修复/.test(text)) { return { model: "deepseek/deepseek-chat" }; } if (/证明|推导|算法设计/.test(text)) { return { model: "deepseek/deepseek-reasoner" }; } return null; // 不命中,走默认路由子代理指定模型:Claude Code 派生的子代理(Subagent)请求可以在 prompt 首行携带模型标签,CCR 内置路由会提取并删除该标签,把请求路由到指定模型:
<CCR-SUBAGENT-MODEL>deepseek/deepseek-reasoner</CCR-SUBAGENT-MODEL> 请分析这道数学题的解题步骤……API Key 管理:配置中api_key支持$变量名写法,避免密钥写死在文件里:
export DEEPSEEK_API_KEY=sk-xxxx成本与性能:基于 token 的路由和日志监控
脚本规则可直接读取input.tokenCount(CCR 估算的输入 token 数),实现按上下文规模分流,小请求走便宜模型、大请求走长上下文模型:
if (input.tokenCount > 20000) { return { model: "deepseek/deepseek-v3.2" }; } if (input.tokenCount < 1000) { return { model: "deepseek/deepseek-chat" }; } return null;成本方面,DeepSeek 各模型的输入输出定价普遍低于 Claude 旗舰模型,具体数值以两家官方定价页为准,这里不做数字承诺。CCR 界面为每个模型标注了单价,请求日志中会按 token 用量给出成本估计,便于核对实际花费。
日志监控:在设置中开启请求日志后,管理界面可查询每次请求的最终路由模型、耗时、token 用量与成本估计,失败请求还会记录错误信息,用于排查路由或上游问题。
生产部署:Docker 容器化与 CI 集成
仓库提供 Docker 部署方式(说明见 docker/README.md):
docker compose up -d --build容器内设置HOME=/data,配置数据库位于/data/.claude-code-router/config.sqlite。持久化时挂载整个/data目录即可保留配置与日志;密钥通过环境变量注入,例如DEEPSEEK_API_KEY。
CI 场景下可以在流水线里安装并启动 CCR,再把代理的模型端点指向本地网关:
steps: - name: Start router run: | npm install -g @musistudio/claude-code-router export DEEPSEEK_API_KEY=${{ secrets.DEEPSEEK_API_KEY }} ccr start无人值守环境注意在启动前准备好配置(或界面完成初始化),避免服务在无提供商可用状态下空跑。
常见问题:连接超时、代理与 token 上限
- 连接超时:推理类模型响应慢时,调大
API_TIMEOUT_MS(默认已是 600000 毫秒);若走代理,先确认代理端口可达,再在设置的 proxy 部分为上游请求指定代理。 - 代理设置:CCR 支持系统代理与自定义上游两种模式,跨境访问 DeepSeek 或反向访问时,在界面 proxy 配置中切换上游模式并填写地址与认证信息。
- 输出 token 上限:当上游返回
max_tokens相关错误时,说明请求要求的输出长度超过模型上限。可在模型配置中下调最大输出 token,或换用输出上限更高的模型;对长文档请求,优先调整longContext场景的模型而不是强行加长输出。 - 配置不生效:确认 CCR 未处于运行状态时再迁移 JSON 配置;运行中请通过界面修改,界面保存会即时写入 SQLite 数据库。
小结
Claude Code Router 把 Claude Code 的模型请求收敛到本地网关,DeepSeek 作为内置预设可以直接接入,无需自行处理协议转换。最小路径是:安装 CLI、写入包含Providers与Router.default的 JSON 配置、用环境变量管理密钥,然后启动ccr start。路由层面,内置场景(default、background、think、longContext、webSearch)负责粗分发,自定义规则与脚本负责细粒度策略,子代理可通过标签指定模型。成本与排障主要依赖请求日志中的路由、耗时与 token 数据。
【免费下载链接】claude-code-routerOne local control plane for every AI agent: route across models, fuse new capabilities, orchestrate tools, and stay fully in control.项目地址: https://gitcode.com/GitHub_Trending/cl/claude-code-router
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考