Claude Code Router 实战:10 分钟搭好本地 AI 模型路由网关
【免费下载链接】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)是一台跑在本机的 AI 模型网关兼路由控制台:它给 Claude Code、Codex 等客户端提供统一入口,再按你的规则把请求调度到不同供应商的模型,顺带管降级、Key 轮换与成本观测。
你的两人小工作室大概是这样运转的:前端拿 Claude Code 挂 Anthropic 官方 Key 写业务代码,后端拿 OpenCode 接一个便宜的 API 跑重构,周末还要批量整理一堆文档。换一次模型,两个人得各自翻客户端里的环境变量;便宜 Key 被限流时,批处理卡住,前端也得跟着降速。月底问一句"这个月钱花在哪个模型上",没人答得上来。
值不值得搭:用三个问题过滤需求
三个反问,快速判断这套网关有没有必要:
- 你是否在两个以上客户端(或同一客户端的多份配置)里维护着同一套模型设置,想收敛到一处?
- 你是否需要"简单任务走便宜模型、关键任务走强模型",而不是靠人手动切换?
- 你是否想知道每个请求最终打到了哪个供应商、哪个模型、花了多少 token?
三条都占,值得花十分钟搭起来。反过来,如果你只用一个客户端、一把 Key、也不需要成本观测,直接配环境变量就够了,不必多养一个服务。
十分钟拉起本地网关,跑通第一条链路
3 条命令装好并启动服务
node -v # CLI 需要 Node.js 22+ npm install -g @musistudio/claude-code-router ccr ui # 拉起后台服务并打开管理界面无桌面环境用ccr ui --no-open,需要前台常驻则用ccr serve --no-open。更多安装方式见安装与启动指南。
分清两个端口,别把客户端配错
| 端口 | 角色 | 谁来访问 |
|---|---|---|
3456 | 模型网关 | AI 客户端、curl |
3458 | 管理界面(CLI 模式) | 你,浏览器 |
管理界面能打开不等于网关可用。进入服务页面,确认状态为"运行中"再继续。
发出最小请求,核对一条日志
在供应商页面选一个内置预设、填入 API 密钥、勾选模型,对单个模型点检测连通性(检测会真实计费,别全量勾)。再到API 密钥页面创建一把 CCR 客户端 Key——它和发给上游的供应商 Key 是两回事。客户端 Base URL 指向http://127.0.0.1:3456后:
curl -s http://127.0.0.1:3456/health返回 200 说明网关在跑。再发一个最小模型请求,到日志页面确认:原始请求模型、最终命中的供应商与模型、状态码、耗时,一条日志里全有。
核心能力:规则挑模型、子代理自己选、脚本兜动态
用条件规则给请求挑模型
一条路由规则由三部分组成:条件、改写、失败时策略。条件来源选request.header或request.body,操作符支持==、starts with、contains deep;最常用的改写是把request.body.model设成供应商/模型选择器。举例:请求头x-client-name等于batch-job的请求,命中后改写到低价模型,交互编码请求继续留在旗舰模型。规则按列表顺序匹配,第一条命中的启用规则生效,单条规则的"失败时"策略会覆盖页面顶部的全局默认。配完的效果是:批量摘要自动落到便宜模型,交互编码不动,全程无需手动切换。字段细节见智能路由文档。
用模型描述驱动子代理选模
给模型页里每个模型填一段 Description,写清适合什么任务、速度和成本如何。CCR 会把这些说明注入 Claude Code 的 Agent/Task/Workflow 工具描述,客户端派生子代理时自行挑一个模型并带上标签,CCR 据此把派生请求路由过去。效果:主对话留在强推理模型,后台搜索、摘要类子任务自动走又快又便宜的模型,没人干预。
进阶:用 Node.js 脚本做动态路由
普通条件表达不了多字段联合判断、灰度分桶或外部策略查询时,把规则类型切换成 Node.js 脚本。脚本在独立 Worker 里执行,能读取完整请求、访问内网接口和文件,返回目标模型、改写与降级策略;自带超时(10–30000 毫秒)和"60 秒内失败 3 次熔断 30 秒"的保护。只用到前两个能力点的话,到这里就可以停了。
主模型挂掉时自动切线
降级策略有三种模式:off失败即报错;retry同模型重试retryCount次,治偶发抖动;model-chain失败后按顺序逐个试备用模型列表。建议给关键工作流至少配一条模型链,比如供应商A/旗舰失败后自动落到供应商A/备用——主模型限流或宕机时,请求自己换线,开发不中断。规则级"失败时"配置会覆盖全局默认,适合给高风险模型单独加码。
多把 Key 分散在不同账号时,在供应商高级设置里展开凭据池:每条 Key 可设名称、启用开关、优先级(数字越小越先试)和权重,还能挂本地限额,例如{"rpm": 60, "tpm": 100000}。碰到窗口上限的 Key 会被自动跳过,请求转给同供应商的其他 Key,比手动换 Key 稳,也避免单把 Key 提前触发供应商侧风控。完整字段见供应商配置文档。
出问题时先查这张表
| 现象 | 大概率原因 | 30 秒内能做的动作 |
|---|---|---|
/health返回 502 | 还没配置供应商和模型,属预期 | 先加一个供应商并勾选模型 |
| 客户端请求报 401 | 把上游供应商 Key 当 CCR 客户端 Key 用了 | 到API 密钥页新建客户端 Key 替换 |
| 路由规则不生效 | 规则没启用、顺序靠前被别的规则截胡、目标模型没配置 | 看启用开关、调整上下顺序、核对供应商/模型是否存在 |
| 某把 Key 频繁被跳过 | 凭据池 rpm/tpm 限额太紧,或该 Key 在上游已限流 | 检查该凭据的本地限额配置 |
| 管理界面能开,请求不通 | 看的是 3458 管理端口,网关在 3456 | 到服务页确认"运行中",客户端指向 3456 |
更多细节可参考排障文档。
你手里现在有什么
一条只认本地3456端口的模型网关,一组按场景分层的调度规则,一套自动降级与 Key 轮换机制,再加一份能查到每个请求成本的日志。把客户端指向它,然后让模型选择靠规则,不靠记性。
【免费下载链接】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),仅供参考