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


📌 9Router 适合解决什么问题

9Router 0.5.45 管理面板

同时使用 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 组合模型配置界面

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

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

  1. 主线路:质量稳定、上下文足够的订阅或付费模型。
  2. 备用线路:成本较低、速度较快的模型。
  3. 应急线路:免费模型或本地模型,仅用于保持基础可用性。
场景主线路备用线路应急线路
编程代理强代码模型通用快速模型免费代码模型
内容整理长上下文模型低价通用模型本地模型
图片生成主图像模型第二家图像服务不自动降级到聊天模型
网页研究搜索服务备用搜索服务只抓取指定网页

回退链不能只按价格排序。上下文长度、工具调用、结构化输出和图片能力不兼容时,即使请求成功,结果也可能不可用。


🛡️ 安全与稳定性

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

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

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


❓ 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:可以作为统一接入层,但要补齐备份、监控、访问控制和备用端点。不要把免费模型回退当成生产稳定性保证。