9Router 网关接入技能
让 AI 编码工具通过本地网关统一调用 40+ 免费与低价模型供应商,自动故障切换,配合 RTK 每次请求节省 20-40% 的 token。
技能本身仅读取环境变量并发起本地HTTP请求,权限克制,无破坏性默认行为;但要求在运行时从 raw.githubusercontent.com 拉取未固定的 master 分支 SKILL.md,构成供应链风险且无内容校验/回滚说明,发布者身份未验证。扣分点:远程内容无版本固定、无完整性校验。
设置、模型发现与错误码(401/400/503)说明自洽且附健康检查命令;但整体依赖本地网关服务已运行及远程技能文件可达,无测试证据、无离线降级路径,失败反馈依赖远程服务。扣分点:关键路径未经执行复现,依赖外部可用性。
触发条件清晰(用户提及9Router、NINEROUTER_URL或需要免样板AI接入),场景与错误处理明确;但完全依赖本地运行的9Router服务,未声明该前置为不适用边界;中文支持未覆盖(README有多语言但技能本身无中文)。扣分点:前置依赖边界未声明,中国网络可达性证据不足(依赖GitHub raw与海外免费供应商)。
文档分层良好(索引技能+能力子技能),含示例响应、错误表和MIT许可证,仓库有版本号(0.5.69)和CI;但子技能通过master分支URL引用而非版本固定,技能本身无changelog,维护责任仅隐含于仓库。扣分点:引用无版本固定、无变更记录。
若网关已配置,该技能能减少接入样板并自动路由多供应商,具有真实价值;但静态审阅无法验证端到端产出,且价值前提是用户已完成安装、供应商连接和密钥配置等大量前置工作。扣分点:核心价值不可静态验证,前置成本较高。
API形状、端点和错误码可通过仓库源码(ping.js等)部分交叉印证;README提供npm/Docker徽章与第三方视频,但多为营销性证据;无提交的测试套件覆盖技能关键路径。扣分点:缺乏独立可复现的执行证据。
- 技能在运行时从未固定的 master 分支拉取子技能文件,内容可能随时变化且无完整性校验,建议审查后再使用或自行固定版本。
- 必须先安装并运行 9Router 网关且连接供应商后技能才有用;文档未明确声明此前置条件。
- 核心功能依赖 GitHub raw 访问与海外AI供应商,中国大陆网络可达性存疑;技能本身无中文支持。
- RTK节省20-40% token、免费无限使用等宣传性数字未经独立验证。
- 静态审阅,未执行任何命令;所有结论仅基于源码阅读,置信度低。
这个 Skill 能做什么,适合哪些场景?
9Router 技能是连接 9Router AI 网关的入口文档。9Router 是一个本地或远程部署的网关服务,暴露 OpenAI 兼容的 REST API,涵盖聊天、图像生成、语音合成、语音识别、嵌入、网页搜索与网页抓取等能力,支持 40+ 供应商和 100+ 模型。该技能本身只负责环境配置(设置 NINEROUTER_URL 与 NINEROUTER_KEY)和模型发现,并按需引导获取对应能力子技能的 SKILL.md。适合已经或打算自建 9Router 网关、希望让编码代理直接复用免费模型额度的用户。技能采用 MIT 许可证,与仓库中其余 8 个技能打包在同一 monorepo 中。
指导设置 NINEROUTER_URL 和 NINEROUTER_KEY 环境变量并验证 /api/health;通过 /v1/models 及其子端点(/v1/models/image、/v1/models/tts、/v1/models/embedding、/v1/models/web、/v1/models/stt、/v1/models/image-to-text)发现可用模型与组合(combo);给出带 Authorization Bearer 头的 OpenAI 兼容 REST 调用方式;按用户所需能力从 GitHub 原始地址抓取对应的子技能 SKILL.md(聊天、图像、TTS、STT、嵌入、网页搜索、网页抓取共 7 个);提供 401、400、503 等错误码的排查指引。
- 已本地运行 9Router 的开发者,想让 Claude Code、Codex、Cursor、Cline 等编码工具直接调用免费模型而不写供应商样板代码
- 订阅额度经常浪费的用户,希望代理按订阅→低价→免费三层自动切换避免中断
- 希望零成本使用 Kiro、OpenCode Free、Vertex AI 免费额度进行日常编码的用户
- 需要在同一套 API 后面切换多家供应商(OpenAI、Anthropic、Gemini、DeepSeek、Qwen 等)进行模型对比的工程师
- 需要图像生成、TTS、嵌入等非聊天能力,但想通过统一 OpenAI 兼容接口调用的用户
这个 Skill 有哪些优点和局限?
- OpenAI 兼容的统一 REST 接口,一份代码可调用 40+ 供应商、100+ 模型
- 模型发现按能力分类(聊天/图像/TTS/STT/嵌入/网页),结构清晰
- 文档提供明确的错误码排查表(401/400/503),失败模式可预期
- 入口技能按需加载子技能,上下文开销小
- 强依赖一个正在运行的 9Router 网关,没有网关实例时技能完全不可用
- 本技能只是入口与索引,实际操作细节分散在 7 个子技能中,需要额外网络抓取
- README 中的部分免费信息以 2026 年为准(如 iFlow、Qwen、Gemini CLI 免费层已停用),时效性需自行核实
- 仓库未展示针对该技能的测试套件,可靠性主要依赖网关本身的稳定性
如何安装这个 Skill?
本技能位于 decolua/9router 仓库的 skills/9router/SKILL.md,随整个技能集(共 9 个技能)一起分发,仓库采用 MIT 许可证。前提是先安装并运行 9Router 网关本体:README 推荐 npm install -g 9router && 9router,仪表盘默认在 http://localhost:20128;源码或 Docker 运行方式见仓库 README(未在本技能内重复说明)。将 skills/9router 文件夹放入你的 Agent Skills 目录即可,具体安装路径未在源码中说明。
如何使用这个 Skill?
1) 导出环境变量:export NINEROUTER_URL="http://localhost:20128",若网关启用鉴权再设置 export NINEROUTER_KEY="sk-..."(密钥来自 Dashboard → Keys);2) 验证:curl $NINEROUTER_URL/api/health 应返回 {"ok":true};3) 用 curl $NINEROUTER_URL/v1/models(或 image/tts/embedding/web/stt/image-to-text 子端点)发现模型,取 data[].id 作为请求的 model 字段;4) 向 ${NINEROUTER_URL}/v1/... 发送带 Authorization Bearer 头的标准请求;5) 需要具体能力时,按技能内表格抓取对应子技能的 SKILL.md。触发方式:当用户提到 9Router、NINEROUTER_URL 或想免样板代码调用 AI 时使用。
这个 Skill 与同类方案有什么区别?
README 提到本项目受 CLIProxyAPI(Go 原版实现)启发,并有 TypeScript 分支 OmniRoute(增加 36+ 供应商、四层回退等)。若只需要一个轻量路由代理而不需要仪表盘与 token 节省功能,直接用 CLIProxyAPI 类方案也是选择。