🎯 一句话总结:9Router 把多个 AI 账号、API Key 和订阅入口收进一个本地网关,对外统一提供 OpenAI 兼容接口,并负责模型切换、失败回退、额度监控和 Token 压缩。


📌 9Router 适合解决什么问题

同时使用 Claude Code、Codex、Cursor、Cline 或其他 AI 工具时,最麻烦的往往不是模型本身,而是每个客户端都要重复维护地址、密钥和模型名。

9Router 在客户端与上游服务之间增加一层本地网关:客户端只连接一个地址,网关再按规则把请求交给不同账号和模型。

能力 实际作用
OpenAI 兼容入口 支持标准接口的客户端可直接接入
格式转换 在 OpenAI、Anthropic 等请求格式之间转换
多账号管理 同一提供商可保存多个账号或 API Key
自动回退 当前模型失败、限流或额度不足时切换备用路径
额度监控 在面板查看配额、Token 与成本趋势
RTK 压缩 精简工具输出,降低长日志和代码差异占用的输入 Token
自定义组合 把多个模型按优先级组成一个可调用的逻辑模型
它更适合多模型、高频调用和自托管场景。如果只偶尔使用一个固定模型,直接配置官方客户端通常更简单。

🔥 0.5.45 版有哪些变化

当前 npm 最新版为 0.5.45。从较早的 0.5.x 版本升级后,重点不只是模型数量,而是路由链路和管理体验更完整。

更新方向 变化
多模态接口 已扩展到图片、语音、嵌入、网页搜索与抓取等能力
模型发现 可按能力查询模型,减少把聊天模型误用于图片或语音接口的情况
回退控制 支持订阅、低价和免费模型组成分层回退链
Token 管理 RTK 可压缩工具输出,也可按单次请求绕过压缩
账号维护 批量添加 API Key 时避免覆盖已有密钥
模型兼容 改善实时模型目录、Claude 请求头与 OpenAI Responses 转换
启动性能 跳过未启用的后台服务,减少无效初始化

⚠️ 补丁版本会持续发布。升级前先确认当前版本,升级后再检查服务和健康接口,不要只看安装命令是否退出成功。


⚙️ 安装、升级与启动

首次安装

npm install -g 9router@latest
9router
默认管理面板位于:

http://localhost:20128
标准 API 地址是:

http://localhost:20128/v1

从旧版升级

查看 npm 最新版本

npm view 9router version

安装最新版

npm install -g 9router@latest –prefer-online

systemd 部署时重启服务

systemctl restart 9router

快速检查

读取实际安装版本

node -p “require(‘/usr/local/lib/node_modules/9router/package.json’).version”

检查服务与监听端口

systemctl status 9router –no-pager
ss -ltnp ‘( sport = :20128 )’

检查健康状态

curl http://127.0.0.1:20128/api/health
健康接口应返回:

{“ok”:true}
如果使用 NVM,先确认 npm prefix -g。NVM 的全局目录和 /usr/local/lib/node_modules 可能不是同一处,装进错误目录后,systemd 仍会启动旧版本。


🔌 添加提供商与调用模型

在管理面板中进入 Providers,连接订阅账号或填写 API Key。完成后再进入 Keys 创建 9Router 自己的访问密钥,客户端不应直接持有所有上游密钥。

模型列表按能力拆分:

curl http://127.0.0.1:20128/v1/models
curl http://127.0.0.1:20128/v1/models/image
curl http://127.0.0.1:20128/v1/models/tts
curl http://127.0.0.1:20128/v1/models/stt
curl http://127.0.0.1:20128/v1/models/embedding
curl http://127.0.0.1:20128/v1/models/web
聊天请求示例:

curl http://127.0.0.1:20128/v1/chat/completions
-H “Authorization: Bearer YOUR_9ROUTER_KEY”
-H “Content-Type: application/json”
-d ‘{
“model”: “provider/model-name”,
“messages”: [
{“role”: “user”, “content”: “用三句话解释反向代理”}
]
}’
模型 ID 必须以 /v1/models 返回结果为准。不要凭印象填写名称,否则常见结果是 Invalid model formatmodel_not_found

需要频繁测试多家 AI 服务时,可以通过 APIMart API 聚合平台 补充独立上游,再把对应 API Key 接入 9Router。生产任务仍应准备至少一条稳定的官方或自托管线路。


🧩 组合模型与自动回退

组合模型的价值在于把“选哪个模型”变成网关规则,而不是让每个客户端各自维护一套设置。

建议按任务价值配置三层:

  • 主线路:质量稳定、上下文足够的订阅或付费模型。- 备用线路:成本较低、速度较快的模型。- 应急线路:免费模型或本地模型,仅用于保持基础可用性。
    场景 主线路 备用线路 应急线路
    编程代理 强代码模型 通用快速模型 免费代码模型
    内容整理 长上下文模型 低价通用模型 本地模型
    图片生成 主图像模型 第二家图像服务 不自动降级到聊天模型
    网页研究 搜索服务 备用搜索服务 只抓取指定网页
    回退链不能只按价格排序。上下文长度、工具调用、结构化输出和图片能力不兼容时,即使请求成功,结果也可能不可用。

🛡️ 安全与稳定性

9Router 保存上游账号、密钥和请求记录,部署方式直接决定风险大小。

  • 默认仅监听本机:个人使用时绑定 127.0.0.1,不要无认证暴露到公网。- 启用独立访问密钥:客户端只使用 9Router Key,不下发上游密钥。- 远程访问走加密通道:优先使用 VPN、SSH 隧道或带身份认证的反向代理。- 限制日志内容:处理代码、合同或客户数据时,确认请求日志的保存范围和保留时间。- 保留备用路径:网关是统一入口,也会成为单点故障;关键任务应准备可直接切换的备用端点。- 更新前保存数据目录:升级通常保留配置,但数据库和密钥文件仍应纳入备份。

    ⚠️ 自动回退只解决“当前账号不可用”,不能保证备用模型具有同等质量、上下文长度或工具能力。


❓ FAQ

Q:升级后端口还应该是 8080 吗?
A:当前默认端口是 20128。旧教程中的 8080 配置已经过时,客户端地址应改为 http://localhost:20128/v1

Q:安装最新版后为什么仍显示旧版本?
A:先检查 npm prefix -gcommand -v 9router 和 systemd 的 ExecStart。NVM 与系统级 npm 可能分别安装了一份 9Router。

Q:为什么 /v1/models 有模型,调用仍失败?
A:常见原因包括账号被限流、模型锁定、上游无可用账号或请求超过上下文长度。查看 9Router 错误日志能区分格式错误和上游故障。

Q:RTK 会不会改坏代码?
A:RTK 主要压缩发送给模型的工具结果,例如日志、目录列表和代码差异,不会直接改写本地文件。对需要完整原始输出的请求,可以临时绕过压缩。

Q:能否在多台设备上共用?
A:可以部署到局域网或 VPS,但必须加访问密钥和加密通道。公开暴露管理面板或无认证 API 风险很高。

Q:适合生产环境吗?
A:可以作为统一接入层,但要补齐备份、监控、访问控制和备用端点。不要把免费模型回退当成生产稳定性保证。