Claude Code Router 三步接入 DeepSeek:本地模型网关最小配置指南
【免费下载链接】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)是运行在本机的模型网关,默认监听http://127.0.0.1:3456,负责把 Claude Code 发出的请求路由到 DeepSeek 等第三方上游,响应再原路返回。本文用三步完成一条可跑通的接入链路:装好网关、配好 DeepSeek 供应商、定好路由;随后给出按内容分流、子代理指定模型两个进阶手法,以及三类高频故障的排查与验证方式。
先判断:这类需求是否匹配 CCR 方案
先对齐预期。CCR 的定位是"本地集中管理多家模型的路由与回退",它不替代 Claude Code 客户端,也不适合一次性调用几个模型 API 的场景。适合它的画像:
- 日常主力工具是 Claude Code,且手里有多家供应商的额度;
- 希望按任务类型切换模型(日常走便宜模型、难题走推理模型),而不是每次改环境变量;
- 需要失败回退、请求日志等可观测能力。
一次接入后的请求走向如下:
判断完成且结论为"适合",再进入安装环节。
如何安装 ccr 命令并启动网关
CCR 的 npm CLI 要求 Node.js 22 及以上。安装一条命令:
npm install -g @musistudio/claude-code-router安装完成后,ccr即可以命令行方式启动同一个网关。随后用ccr ui打开基于浏览器的管理界面,地址为http://127.0.0.1:3458。端口区分一下:3456是给 Claude Code 用的模型网关端口,3458是给人用的管理界面端口。
界面打开后,第一个任务是接入供应商。
如何用预设添加 DeepSeek 供应商并验证密钥
CCR 内置了 DeepSeek 预设,API 地址https://api.deepseek.com、协议 OpenAI Chat Completions 均已预填,基本无需手工编辑。预设定义见源码 packages/core/src/providers/presets/deepseek/。
操作路径如下:
- 打开供应商 → 添加供应商,选择 DeepSeek 预设;
- 填入 API 密钥,勾选需要的模型(
deepseek-chat、deepseek-reasoner); - 点检测连通性,确认 Key 与模型 ID 真实可调用。
供应商就绪后,还要让 Claude Code 从 CCR 出去。在Agent 配置添加一条 Claude Code 配置,选定默认模型,然后直接从这个配置入口打开 Claude Code——这一步决定了网关对哪一次会话生效,后面"配置不生效"的坑与它直接相关。完整字段说明见 Claude Code 接入文档。
上游通了,接下来解决"什么任务走哪个模型"。
如何按场景选模型:路由表与内置规则
打开路由页面配置分流。先理解内置路由的优先级:客户端显式选择且 CCR 可识别的模型优先;客户端未选或无法识别时,落到 Agent 配置里的默认模型;用户自定义规则仍可在其后继续改写模型。
四类常见场景的推荐模型如下:
| 场景 | 推荐模型 | 理由 |
|---|---|---|
| 复杂推理 | deepseek/deepseek-reasoner | 架构分析、难题拆解需要更强推理,留给低频任务 |
| 写代码 | deepseek/deepseek-chat | 代码任务够用,配合回退链更稳 |
| 日常问答 | deepseek/deepseek-chat | 响应快、成本低,适合高频对话 |
| 长上下文 | 另配长上下文模型 | 读大日志、长文档时切换,避免小窗口截断 |
自定义规则按列表顺序匹配,第一条命中的启用规则生效。完整字段说明见 路由文档。
规则解决的是"按任务切模型",如果需要更细的"按内容切模型",往下看进阶手法。
进阶:按内容分流与子代理单独指定模型
场景一:按消息内容分流。普通条件规则只能匹配单个字段,无法表达"像代码任务走一个模型、像推理任务走另一个"这类多条件判断。
做法:把规则类型改为Node.js 脚本,指向一个本地脚本文件。脚本按列表顺序执行,返回null表示不命中、继续下一条;CCR 每次执行前都会重新读取文件,改完脚本无需重存规则。示例:
const text = input.summary.lastUserText ?? ""; if (/(def |function |class |import )/.test(text)) { return { model: "deepseek/deepseek-chat" }; } if (/推理|证明|为什么/.test(text)) { return { model: "deepseek/deepseek-reasoner" }; } return null;场景二:子代理单独指定模型。Claude Code 通过 Agent / Task / Workflow 派生子代理时,你希望它们不走默认模型,而是按任务选模型。
做法:在模型页面给希望被自动选择的模型填Description(写清适合的任务、速度与成本)。CCR 会把模型列表注入 Claude Code 的工具说明;派生请求的 prompt 首行携带模型标签,例如<CCR-SUBAGENT-MODEL>deepseek/deepseek-reasoner</CCR-SUBAGENT-MODEL>,CCR 识别后直接路由到该模型。注意:没有任何模型配置 Description 时,这套注入不会发生,等于机制关闭。
配置完成并不意味着万无一失,下面三类问题出现频率最高。
超时、token 超限、配置不生效:三个坑与处理
坑一:推理模型超时。
- 现象:reasoner 类请求被默认超时打穿,任务中断。
- 原因:推理模型出结果慢,默认超时窗口不够。
- 处理:在对应路由规则上单独调大超时,脚本规则可设 10–30000 毫秒。
- 验证:发一条典型难题,到请求日志确认该条请求状态为成功。
坑二:输出长度超过模型上限。
- 现象:请求以错误返回,上游报错直接写明 token 限制。
- 原因:Claude Code 期望的输出 token 高于 DeepSeek 模型的单次上限。
- 处理:在命中规则里加改写,把
request.body.max_tokens调小到模型可接受的范围。 - 验证:重试同类请求,查看日志中的上游错误信息是否消失。
坑三:改了配置但没生效。
- 现象:路由、模型都不按预期工作。
- 原因:最常见是没从 CCR 打开 Claude Code,或配置未启用。
- 处理:确认 Agent 配置处于启用状态,并从 CCR 入口启动 Claude Code。
- 验证:打开 CCR 的请求日志,核对这条请求解析出的供应商/模型是否为预期组合;同时用
/model确认能看到 CCR 暴露的模型列表。
跑通之后做什么
接入完成只是起点,建议按这个顺序继续:
- 给
deepseek-chat和deepseek-reasoner都填上 Description,激活子代理自动选模型; - 在路由里为推理模型规则单独设置超时与
max_tokens改写,再发一条难题验证; - 用请求日志抽查一天的真实流量,确认场景与模型的实际对应关系,再决定是否增加回退链。
若你只是偶尔调用几家模型 API,或打算直接换掉 Claude Code 客户端本身,CCR 这套方案收益有限,不必继续投入配置。
【免费下载链接】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),仅供参考