{"_id":"9rudy","_rev":"2-855788b5338c43831898721041e808cd","name":"9rudy","dist-tags":{"latest":"0.4.72"},"versions":{"0.4.71":{"name":"9rudy","version":"0.4.71","_id":"9rudy@0.4.71","maintainers":[{"name":"ruddypp","email":"paningalrudy@gmail.com"}],"dist":{"shasum":"46fb27a8afb2d0d3906994c6ec45d0cf0be6a629","tarball":"https://registry.npmjs.org/9rudy/-/9rudy-0.4.71.tgz","fileCount":316,"integrity":"sha512-RlnJiDdFrO6vAqznQJCN0ilfb/n67HMutukp6hHLvdww5eadvm4DTOxidWLbmTJAJAICtnzWTntIfS3bKDwTAQ==","signatures":[{"sig":"MEUCID+poyuNNdaadNBCAnYg43/HhoSVXvsEsG0D5QoHE4e4AiEA99V6pQMreMD2uL3GZSwJqWa8NCvvO0dcb/JfsJ2Ll0s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3179665},"gitHead":"05a2eb43bee1e8984e5443b966c8ce9597f878da","scripts":{"dev":"next dev --webpack --port 20128","build":"next build --webpack","start":"next start","dev:bun":"bun --bun next dev --webpack --port 20128","build:bun":"bun --bun next build --webpack","start:bun":"bun ./.next/standalone/server.js"},"_npmUser":{"name":"ruddypp","email":"paningalrudy@gmail.com"},"_npmVersion":"11.6.2","description":"9Router web dashboard","directories":{},"_nodeVersion":"24.12.0","dependencies":{"fs":"^0.0.1-security","ora":"^9.1.0","jose":"^6.1.3","next":"^16.1.6","open":"^11.0.0","uuid":"^13.0.0","react":"19.2.4","marked":"^18.0.1","sql.js":"^1.14.1","undici":"^7.19.2","confbox":"^0.2.4","express":"^5.2.1","zustand":"^5.0.10","bcryptjs":"^3.0.3","react-is":"^16.13.1","recharts":"^3.7.0","react-dom":"19.2.4","node-forge":"^1.3.3","selfsigned":"^5.5.0","@dnd-kit/core":"^6.3.1","@xyflow/react":"^12.10.1","monaco-editor":"^0.55.1","node-machine-id":"^1.1.12","material-symbols":"^0.44.6","@dnd-kit/sortable":"^10.0.0","socks-proxy-agent":"^8.0.5","@dnd-kit/modifiers":"^9.0.0","@dnd-kit/utilities":"^3.2.2","@monaco-editor/react":"^4.7.0","http-proxy-middleware":"^3.0.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9","postcss":"^8.5.6","tailwindcss":"^4","eslint-config-next":"16.1.6","@tailwindcss/postcss":"^4.1.18"},"optionalDependencies":{"better-sqlite3":"^12.6.2"},"comment_better_sqlite3":"kept in optionalDependencies so npm install doesn't fail on systems without build tools — sql.js is used as fallback at runtime","_npmOperationalInternal":{"tmp":"tmp/9rudy_0.4.71_1781269989237_0.3650523350355954","host":"s3://npm-registry-packages-npm-production"}},"0.4.72":{"name":"9rudy","version":"0.4.72","description":"9Rudy web dashboard","scripts":{"dev":"next dev --webpack --port 20128","build":"next build --webpack","start":"next start","dev:bun":"bun --bun next dev --webpack --port 20128","build:bun":"bun --bun next build --webpack","start:bun":"bun ./.next/standalone/server.js"},"dependencies":{"@dnd-kit/core":"^6.3.1","@dnd-kit/modifiers":"^9.0.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@monaco-editor/react":"^4.7.0","@xyflow/react":"^12.10.1","bcryptjs":"^3.0.3","confbox":"^0.2.4","express":"^5.2.1","fs":"^0.0.1-security","http-proxy-middleware":"^3.0.5","jose":"^6.1.3","marked":"^18.0.1","material-symbols":"^0.44.6","monaco-editor":"^0.55.1","next":"^16.1.6","node-forge":"^1.3.3","node-machine-id":"^1.1.12","open":"^11.0.0","ora":"^9.1.0","react":"19.2.4","react-dom":"19.2.4","react-is":"^16.13.1","recharts":"^3.7.0","selfsigned":"^5.5.0","socks-proxy-agent":"^8.0.5","sql.js":"^1.14.1","undici":"^7.19.2","uuid":"^13.0.0","zustand":"^5.0.10"},"optionalDependencies":{"better-sqlite3":"^12.6.2"},"comment_better_sqlite3":"kept in optionalDependencies so npm install doesn't fail on systems without build tools — sql.js is used as fallback at runtime","devDependencies":{"@tailwindcss/postcss":"^4.1.18","eslint":"^9","eslint-config-next":"16.1.6","postcss":"^8.5.6","tailwindcss":"^4"},"gitHead":"1cb2bdb92013358c508233728413ffdf30ddcce9","_id":"9rudy@0.4.72","_nodeVersion":"24.12.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-F6lmgfLdV358emcr+wEOPV2bJHxyNqD+w1ZiTVACcfwIBBZJEMwf/wIBzV1lvwh7uFnpe5KBQekCwPIbW+1Aqw==","shasum":"a7587a43a96c3acb0e93a217452bce42f5cd44db","tarball":"https://registry.npmjs.org/9rudy/-/9rudy-0.4.72.tgz","fileCount":316,"unpackedSize":3179447,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICCVd3mHpR/Tq6zCKEpRoZnDMT8wWATB76oSrhGFiSYVAiBBmdGLe0+bRPFnPubAxPd7x+lBJkDvZ26xKSGjq/Tmeg=="}]},"_npmUser":{"name":"ruddypp","email":"paningalrudy@gmail.com"},"directories":{},"maintainers":[{"name":"ruddypp","email":"paningalrudy@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/9rudy_0.4.72_1781270611818_0.87676787385883"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-12T13:13:09.098Z","modified":"2026-06-12T13:23:32.140Z","0.4.71":"2026-06-12T13:13:09.491Z","0.4.72":"2026-06-12T13:23:32.014Z"},"description":"9Rudy web dashboard","maintainers":[{"name":"ruddypp","email":"paningalrudy@gmail.com"}],"readme":"\n<div align=\"center\">\n  <img src=\"./images/9router.png?1\" alt=\"9Router Dashboard\" width=\"800\"/>\n  \n  # 9Router - 免费 AI 路由器与 Token 节省器\n  \n  **编程永不停歇。使用 RTK + 自动切换到免费/低价 AI 模型，节省 20-40% 的 tokens。**\n  \n  **将所有 AI 编程工具（Claude Code、Cursor、Antigravity、Copilot、Codex、Gemini、OpenCode、Cline、OpenClaw...）连接到 40+ AI 提供商和 100+ 模型。**\n  \n  [![npm](https://img.shields.io/npm/v/9router.svg)](https://www.npmjs.com/package/9router)\n  [![Downloads](https://img.shields.io/npm/dm/9router.svg)](https://www.npmjs.com/package/9router)\n  [![License](https://img.shields.io/npm/l/9router.svg)](https://github.com/decolua/9router/blob/main/LICENSE)\n\n  <a href=\"https://trendshift.io/repositories/22628\" target=\"_blank\"><img src=\"https://trendshift.io/api/badge/repositories/22628\" alt=\"decolua%2F9router | Trendshift\" style=\"width: 250px; height: 55px;\" width=\"250\" height=\"55\"/></a>\n  \n  [🚀 快速开始](#-快速开始) • [💡 功能特点](#-主要功能) • [📖 设置指南](#-设置指南) • [🌐 网站](https://9router.com)\n\n  [🇻🇳 Tiếng Việt](./i18n/README.vi.md) • [🇨🇳 中文](./i18n/README.zh-CN.md) • [🇯🇵 日本語](./i18n/README.ja-JP.md)\n</div>\n\n---\n\n## 🤔 为什么选择 9Router？\n\n**告别浪费金钱、tokens 和触碰限制的困扰：**\n\n- ❌ 订阅配额每月到期却未使用\n- ❌ 速率限制在编程中途打断你\n- ❌ 工具输出（git diff、grep、ls...）快速消耗 tokens\n- ❌ 昂贵的 API（每个提供商 $20-50/月）\n- ❌ 需要手动在提供商之间切换\n\n**9Router 解决这一切：**\n\n- ✅ **RTK Token 节省器** - 自动压缩 tool_result 内容，每次请求节省 20-40% tokens\n- ✅ **充分利用订阅** - 追踪配额，在重置前用尽每一分额度\n- ✅ **自动切换** - 订阅 → 低价 → 免费，零停机时间\n- ✅ **多账户支持** - 按提供商在账户之间轮询\n- ✅ **通用兼容** - 支持 Claude Code、Codex、Cursor、Cline 以及任何 CLI 工具\n\n---\n\n## 🔄 工作原理\n\n```\n┌─────────────┐\n│  你的 CLI   │  (Claude Code、Codex、OpenClaw、Cursor、Cline...)\n│   工具      │\n└──────┬──────┘\n       │ http://localhost:20128/v1\n       ↓\n┌─────────────────────────────────────────────┐\n│           9Router（智能路由器）              │\n│  • RTK Token 节省器（减少 tool_result tokens）│\n│  • 格式转换（OpenAI ↔ Claude）              │\n│  • 配额追踪                                  │\n│  • 自动刷新 token                           │\n└──────┬──────────────────────────────────────┘\n       │\n       ├─→ [第一层：订阅] Claude Code、Codex、GitHub Copilot\n       │   ↓ 配额耗尽\n       ├─→ [第二层：低价] GLM ($0.6/1M)、MiniMax ($0.2/1M)\n       │   ↓ 预算超限\n       └─→ [第三层：免费] Kiro、OpenCode Free、Vertex ($300 额度)\n\n结果：编程永不停歇，最小成本 + 通过 RTK 节省 20-40% tokens\n```\n\n---\n\n## ⚡ 快速开始\n\n**1. 全局安装：**\n\n```bash\nnpm install -g 9router\n9router\n```\n\n🎉 控制面板在 `http://localhost:20128` 打开\n\n**2. 连接免费提供商（无需注册）：**\n\n控制面板 → 提供商 → 连接 **Kiro AI**（免费 Claude 无限量）或 **OpenCode Free**（无需认证）→ 完成！\n\n**3. 在 CLI 工具中使用：**\n\n```\nClaude Code/Codex/OpenClaw/Cursor/Cline 设置：\n  Endpoint: http://localhost:20128/v1\n  API Key: [从控制面板复制]\n  Model: kr/claude-sonnet-4.5\n```\n\n**就这么简单！** 开始使用免费 AI 模型编程。\n\n**替代方案：从源码运行（本仓库）：**\n\n本仓库的包是私有的（`9router-app`），所以源码/Docker 执行是预期的本地开发方式。\n\n```bash\ncp .env.example .env\nnpm install\nPORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev\n```\n\n生产模式：\n\n```bash\nnpm run build\nPORT=20128 HOSTNAME=0.0.0.0 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run start\n```\n\n默认 URL：\n- 控制面板：`http://localhost:20128/dashboard`\n- OpenAI 兼容 API：`http://localhost:20128/v1`\n\n---\n\n## 视频教程\n\n<div align=\"center\">\n\n<table>\n  <tr>\n    <td align=\"center\" width=\"320\">\n      <a href=\"https://www.youtube.com/watch?v=raEyZPg5xE0\">\n        <img src=\"https://img.youtube.com/vi/raEyZPg5xE0/maxresdefault.jpg\" alt=\"9Router Setup Tutorial\" width=\"300\"/>\n      </a><br/>\n      <b>🇺🇸 English</b><br/>\n      <sub>9Router + Claude Code 免费设置<br/>by <a href=\"https://www.youtube.com/@BuildAIWithHamid\">Build AI With Hamid</a></sub>\n    </td>\n    <td align=\"center\" width=\"320\">\n      <a href=\"https://www.youtube.com/watch?v=X69n5Lm06Yw\">\n        <img src=\"https://img.youtube.com/vi/X69n5Lm06Yw/maxresdefault.jpg\" alt=\"Tiết kiệm chi phí LLM với 9Router\" width=\"300\"/>\n      </a><br/>\n      <b>🇻🇳 Tiếng Việt</b><br/>\n      <sub>使用 9Router 节省 OpenClaw 的 LLM 成本<br/>by <a href=\"https://www.youtube.com/c/M%C3%ACAIblog\">Mì AI</a></sub>\n    </td>\n    <td align=\"center\" width=\"320\">\n      <a href=\"https://www.youtube.com/watch?v=o3qYCyjrFYg\">\n        <img src=\"https://img.youtube.com/vi/o3qYCyjrFYg/maxresdefault.jpg\" alt=\"Claude Code FREE Forever\" width=\"300\"/>\n      </a><br/>\n      <b>🇺🇸 English</b><br/>\n      <sub>Claude Code 免费永久使用 — 无限模型<br/>by <a href=\"https://www.youtube.com/@BuildAIWithHamid\">Build AI With Hamid</a></sub>\n    </td>\n  </tr>\n  <tr>\n    <td align=\"center\" width=\"320\">\n      <a href=\"https://www.youtube.com/watch?v=Ttpc26m39Dw\">\n        <img src=\"https://img.youtube.com/vi/Ttpc26m39Dw/maxresdefault.jpg\" alt=\"Claude CLI Free Setup\" width=\"300\"/>\n      </a><br/>\n      <b>🇺🇸 English</b><br/>\n      <sub>使用 9Router 免费设置 Claude CLI 🚀<br/>by <a href=\"https://www.youtube.com/@CodeVerseSoban\">CodeVerse Soban</a></sub>\n    </td>\n    <td align=\"center\" width=\"320\">\n      <a href=\"https://www.youtube.com/watch?v=G-5A_D5Pm6Y\">\n        <img src=\"https://img.youtube.com/vi/G-5A_D5Pm6Y/maxresdefault.jpg\" alt=\"Cài đặt OpenClaw Free A-Z\" width=\"300\"/>\n      </a><br/>\n      <b>🇻🇳 Tiếng Việt</b><br/>\n      <sub>从零开始安装 OpenClaw 免费版 + 9Router<br/>by <a href=\"https://www.youtube.com/@maigia\">Mai Gia</a></sub>\n    </td>\n    <td align=\"center\" width=\"320\">\n      <a href=\"https://www.youtube.com/watch?v=JXmg8_gccgE\">\n        <img src=\"https://img.youtube.com/vi/JXmg8_gccgE/maxresdefault.jpg\" alt=\"FREE OpenClaw with Claude Opus\" width=\"300\"/>\n      </a><br/>\n      <b>🇺🇸 English</b><br/>\n      <sub>免费 OpenClaw + Claude Opus 4.6<br/>by <a href=\"https://www.youtube.com/@BuildAIWithHamid\">Build AI With Hamid</a></sub>\n    </td>\n  </tr>\n</table>\n\n</div>\n\n> 🎬 **制作了关于 9Router 的视频？** 提交 [Pull Request](https://github.com/decolua/9router/pulls)，将你的视频添加到此部分 — 我们会合并它！\n\n---\n\n## 🛠️ 支持的 CLI 工具\n\n9Router 与所有主流 AI 编程工具无缝协作：\n\n<div align=\"center\">\n  <table>\n    <tr>\n      <td align=\"center\" width=\"120\">\n        <img src=\"./public/providers/claude.png\" width=\"60\" alt=\"Claude Code\"/><br/>\n        <b>Claude-Code</b>\n      </td>\n      <td align=\"center\" width=\"120\">\n        <img src=\"./public/providers/openclaw.png\" width=\"60\" alt=\"OpenClaw\"/><br/>\n        <b>OpenClaw</b>\n      </td>\n      <td align=\"center\" width=\"120\">\n        <img src=\"./public/providers/codex.png\" width=\"60\" alt=\"Codex\"/><br/>\n        <b>Codex</b>\n      </td>\n      <td align=\"center\" width=\"120\">\n        <img src=\"./public/providers/opencode.png\" width=\"60\" alt=\"OpenCode\"/><br/>\n        <b>OpenCode</b>\n      </td>\n      <td align=\"center\" width=\"120\">\n        <img src=\"./public/providers/cursor.png\" width=\"60\" alt=\"Cursor\"/><br/>\n        <b>Cursor</b>\n      </td>\n      <td align=\"center\" width=\"120\">\n        <img src=\"./public/providers/antigravity.png\" width=\"60\" alt=\"Antigravity\"/><br/>\n        <b>Antigravity</b>\n      </td>\n    </tr>\n    <tr>\n      <td align=\"center\" width=\"120\">\n        <img src=\"./public/providers/cline.png\" width=\"60\" alt=\"Cline\"/><br/>\n        <b>Cline</b>\n      </td>\n      <td align=\"center\" width=\"120\">\n        <img src=\"./public/providers/continue.png\" width=\"60\" alt=\"Continue\"/><br/>\n        <b>Continue</b>\n      </td>\n      <td align=\"center\" width=\"120\">\n        <img src=\"./public/providers/droid.png\" width=\"60\" alt=\"Droid\"/><br/>\n        <b>Droid</b>\n      </td>\n      <td align=\"center\" width=\"120\">\n        <img src=\"./public/providers/roo.png\" width=\"60\" alt=\"Roo\"/><br/>\n        <b>Roo</b>\n      </td>\n      <td align=\"center\" width=\"120\">\n        <img src=\"./public/providers/copilot.png\" width=\"60\" alt=\"Copilot\"/><br/>\n        <b>Copilot</b>\n      </td>\n      <td align=\"center\" width=\"120\">\n        <img src=\"./public/providers/kilocode.png\" width=\"60\" alt=\"Kilo Code\"/><br/>\n        <b>Kilo Code</b>\n      </td>\n    </tr>\n  </table>\n</div>\n\n---\n\n## 🌐 支持的提供商\n\n### 🔐 OAuth 提供商\n\n<div align=\"center\">\n  <table>\n    <tr>\n      <td align=\"center\" width=\"120\">\n        <img src=\"./public/providers/claude.png\" width=\"60\" alt=\"Claude Code\"/><br/>\n        <b>Claude-Code</b>\n      </td>\n      <td align=\"center\" width=\"120\">\n        <img src=\"./public/providers/antigravity.png\" width=\"60\" alt=\"Antigravity\"/><br/>\n        <b>Antigravity</b>\n      </td>\n      <td align=\"center\" width=\"120\">\n        <img src=\"./public/providers/codex.png\" width=\"60\" alt=\"Codex\"/><br/>\n        <b>Codex</b>\n      </td>\n      <td align=\"center\" width=\"120\">\n        <img src=\"./public/providers/github.png\" width=\"60\" alt=\"GitHub\"/><br/>\n        <b>GitHub</b>\n      </td>\n      <td align=\"center\" width=\"120\">\n        <img src=\"./public/providers/cursor.png\" width=\"60\" alt=\"Cursor\"/><br/>\n        <b>Cursor</b>\n      </td>\n    </tr>\n  </table>\n</div>\n\n### 🆓 免费提供商\n\n<div align=\"center\">\n  <table>\n    <tr>\n      <td align=\"center\" width=\"150\">\n        <img src=\"./public/providers/kiro.png\" width=\"70\" alt=\"Kiro\"/><br/>\n        <b>Kiro AI</b><br/>\n        <sub>Claude 4.5 + GLM-5 + MiniMax<br/>无限免费</sub>\n      </td>\n      <td align=\"center\" width=\"150\">\n        <img src=\"./public/providers/opencode.png\" width=\"70\" alt=\"OpenCode Free\"/><br/>\n        <b>OpenCode Free</b><br/>\n        <sub>无需认证 • 自动获取模型<br/>无限免费</sub>\n      </td>\n      <td align=\"center\" width=\"150\">\n        <img src=\"./public/providers/gemini.png\" width=\"70\" alt=\"Vertex AI\"/><br/>\n        <b>Vertex AI</b><br/>\n        <sub>Gemini 3 Pro + GLM-5 + DeepSeek<br/>$300 免费额度</sub>\n      </td>\n    </tr>\n  </table>\n</div>\n\n> **注意：** iFlow、Qwen 和 Gemini CLI 的免费等级已于 2026 年停止。请改用 Kiro / OpenCode Free / Vertex。\n\n### 🔑 API Key 提供商（40+）\n\n<div align=\"center\">\n  <table>\n    <tr>\n      <td align=\"center\" width=\"100\">\n        <img src=\"./public/providers/openrouter.png\" width=\"50\" alt=\"OpenRouter\"/><br/>\n        <sub>OpenRouter</sub>\n      </td>\n      <td align=\"center\" width=\"100\">\n        <img src=\"./public/providers/glm.png\" width=\"50\" alt=\"GLM\"/><br/>\n        <sub>GLM</sub>\n      </td>\n      <td align=\"center\" width=\"100\">\n        <img src=\"./public/providers/kimi.png\" width=\"50\" alt=\"Kimi\"/><br/>\n        <sub>Kimi</sub>\n      </td>\n      <td align=\"center\" width=\"100\">\n        <img src=\"./public/providers/minimax.png\" width=\"50\" alt=\"MiniMax\"/><br/>\n        <sub>MiniMax</sub>\n      </td>\n      <td align=\"center\" width=\"100\">\n        <img src=\"./public/providers/openai.png\" width=\"50\" alt=\"OpenAI\"/><br/>\n        <sub>OpenAI</sub>\n      </td>\n      <td align=\"center\" width=\"100\">\n        <img src=\"./public/providers/anthropic.png\" width=\"50\" alt=\"Anthropic\"/><br/>\n        <sub>Anthropic</sub>\n      </td>\n    </tr>\n    <tr>\n      <td align=\"center\" width=\"100\">\n        <img src=\"./public/providers/gemini.png\" width=\"50\" alt=\"Gemini\"/><br/>\n        <sub>Gemini</sub>\n      </td>\n      <td align=\"center\" width=\"100\">\n        <img src=\"./public/providers/deepseek.png\" width=\"50\" alt=\"DeepSeek\"/><br/>\n        <sub>DeepSeek</sub>\n      </td>\n      <td align=\"center\" width=\"100\">\n        <img src=\"./public/providers/groq.png\" width=\"50\" alt=\"Groq\"/><br/>\n        <sub>Groq</sub>\n      </td>\n      <td align=\"center\" width=\"100\">\n        <img src=\"./public/providers/xai.png\" width=\"50\" alt=\"xAI\"/><br/>\n        <sub>xAI</sub>\n      </td>\n      <td align=\"center\" width=\"100\">\n        <img src=\"./public/providers/mistral.png\" width=\"50\" alt=\"Mistral\"/><br/>\n        <sub>Mistral</sub>\n      </td>\n      <td align=\"center\" width=\"100\">\n        <img src=\"./public/providers/perplexity.png\" width=\"50\" alt=\"Perplexity\"/><br/>\n        <sub>Perplexity</sub>\n      </td>\n    </tr>\n    <tr>\n      <td align=\"center\" width=\"100\">\n        <img src=\"./public/providers/together.png\" width=\"50\" alt=\"Together\"/><br/>\n        <sub>Together AI</sub>\n      </td>\n      <td align=\"center\" width=\"100\">\n        <img src=\"./public/providers/fireworks.png\" width=\"50\" alt=\"Fireworks\"/><br/>\n        <sub>Fireworks</sub>\n      </td>\n      <td align=\"center\" width=\"100\">\n        <img src=\"./public/providers/cerebras.png\" width=\"50\" alt=\"Cerebras\"/><br/>\n        <sub>Cerebras</sub>\n      </td>\n      <td align=\"center\" width=\"100\">\n        <img src=\"./public/providers/cohere.png\" width=\"50\" alt=\"Cohere\"/><br/>\n        <sub>Cohere</sub>\n      </td>\n      <td align=\"center\" width=\"100\">\n        <img src=\"./public/providers/nvidia.png\" width=\"50\" alt=\"NVIDIA\"/><br/>\n        <sub>NVIDIA</sub>\n      </td>\n      <td align=\"center\" width=\"100\">\n        <img src=\"./public/providers/siliconflow.png\" width=\"50\" alt=\"SiliconFlow\"/><br/>\n        <sub>SiliconFlow</sub>\n      </td>\n    </tr>\n  </table>\n  <p><i>...以及 20+ 更多提供商，包括 Nebius、Chutes、Hyperbolic 和自定义 OpenAI/Anthropic 兼容端点</i></p>\n</div>\n\n---\n\n## 💡 主要功能\n\n| 功能 | 作用 | 为什么重要 |\n|---------|--------------|----------------|\n| 🚀 **RTK Token 节省器**（[RTK](https://github.com/rtk-ai/rtk) ⭐40K） | 压缩工具输出（`git diff`、`grep`、`ls`、`tree`...）后再发送给 LLM | 每次请求节省 **20-40% 输入 tokens** |\n| 🪨 **Caveman 模式**（[Caveman](https://github.com/JuliusBrussee/caveman) ⭐52K） | 注入 caveman 风格提示词 → LLM 回复简洁，保留技术实质 | 节省 **高达 65% 输出 tokens** |\n| 🎯 **智能三层切换** | 自动路由：订阅 → 低价 → 免费 | 编程永不停歇，零停机时间 |\n| 📊 **实时配额追踪** | 实时 token 计数 + 重置倒计时 | 充分利用订阅价值 |\n| 🔄 **格式转换** | OpenAI ↔ Claude ↔ Gemini ↔ Cursor ↔ Kiro ↔ Vertex | 兼容任何 CLI 工具 |\n| 👥 **多账户支持** | 每个提供商支持多个账户 | 负载均衡 + 冗余备份 |\n| 🔄 **自动 Token 刷新** | OAuth token 自动刷新 | 无需手动重新登录 |\n| 🎨 **自定义组合** | 创建无限模型组合 | 自定义适合你的切换策略 |\n| 📝 **请求日志** | 调试模式下的完整请求/响应日志 | 轻松排查问题 |\n| 💾 **云同步** | 跨设备同步配置 | 处处相同设置 |\n| 📊 **使用分析** | 追踪 tokens、成本、趋势 | 优化开支 |\n| 🌐 **任意部署** | 本地、VPS、Docker、Cloudflare Workers | 灵活部署选项 |\n\n<details>\n<summary><b>📖 功能详情</b></summary>\n\n### 🚀 RTK Token 节省器\n\n工具输出（`git diff`、`grep`、`find`、`ls`、`tree`、日志转储...）通常占用 30-50% 的提示词预算。RTK 在请求到达 LLM 之前检测并应用智能、无损压缩：\n\n- **过滤器：** `git-diff`、`git-status`、`grep`、`find`、`ls`、`tree`、`dedup-log`、`smart-truncate`、`read-numbered`、`search-list`\n- **自动检测：** 无需配置 — RTK 检查每个 `tool_result` 的前 1KB，选择合适的过滤器。\n- **安全设计：** 如果过滤器失败、抛出异常或使输出变大，RTK 会静默保留原始文本。错误永远不会中断你的请求。\n- **通用兼容：** 适用于所有格式（OpenAI、Claude、Gemini、Cursor、Kiro、OpenAI Responses），因为它在任何格式转换**之前**运行。\n- **默认开启：** 可随时在控制面板 → 端点设置中切换。\n\n```\n不使用 RTK：47K tokens 发送给 LLM\n使用 RTK：    28K tokens 发送给 LLM   (节省 40% · 相同上下文 · 相同答案)\n```\n\n### 🎯 智能三层切换\n\n创建具有自动切换功能的组合：\n\n```\n组合：\"my-coding-stack\"\n  1. cc/claude-opus-4-6        （你的订阅）\n  2. glm/glm-4.7               （低价备份，$0.6/1M）\n  3. if/kimi-k2-thinking       （免费备选）\n\n→ 配额用完或出错时自动切换\n```\n\n### 📊 实时配额追踪\n\n- 每个提供商的 token 消耗\n- 重置倒计时（5小时、每日、每周）\n- 付费等级的成本估算\n- 月度支出报告\n\n### 🔄 格式转换\n\n格式间无缝转换：\n- **OpenAI** ↔ **Claude** ↔ **Gemini** ↔ **Cursor** ↔ **Kiro** ↔ **Vertex** ↔ **Antigravity** ↔ **Ollama** ↔ **OpenAI Responses**\n- 你的 CLI 工具发送 OpenAI 格式 → 9Router 转换 → 提供商接收原生格式\n- 适用于任何支持自定义 OpenAI 端点的工具\n\n### 👥 多账户支持\n\n- 每个提供商添加多个账户\n- 自动轮询或基于优先级的路由\n- 当一个账户达到配额时切换到下一个\n\n### 🔄 自动 Token 刷新\n\n- OAuth token 在过期前自动刷新\n- 无需手动重新认证\n- 所有提供商的无缝体验\n\n### 🎨 自定义组合\n\n- 创建无限模型组合\n- 混合订阅、低价和免费等级\n- 为组合命名以便访问\n- 使用云同步跨设备共享组合\n\n### 📝 请求日志\n\n- 启用调试模式获取完整请求/响应日志\n- 追踪 API 调用、请求头和载荷\n- 排查集成问题\n- 导出日志进行分析\n\n### 💾 云同步\n\n- 跨设备同步提供商、组合和设置\n- 自动后台同步\n- 安全加密存储\n- 从任何地方访问你的设置\n\n#### 云运行时说明\n\n- 生产环境中优先使用服务端云变量：\n  - `BASE_URL`（云同步调度程序使用的内部回调 URL）\n  - `CLOUD_URL`（云同步端点基础 URL）\n- `NEXT_PUBLIC_BASE_URL` 和 `NEXT_PUBLIC_CLOUD_URL` 仍用于兼容性/UI，但服务端运行时现在优先使用 `BASE_URL`/`CLOUD_URL`。\n- 云同步请求现在使用超时 + 快速失败行为，以避免云 DNS/网络不可用时 UI 挂起。\n\n### 📊 使用分析\n\n- 追踪每个提供商和模型的 token 使用量\n- 成本估算和支出趋势\n- 月度报告和洞察\n- 优化你的 AI 支出\n\n> **💡 重要 - 了解控制面板成本：**\n> \n> 使用分析中显示的\"成本\"**仅用于追踪和比较目的**。\n> 9Router 本身**永远不会向你收费**。你只直接向提供商付款（如果使用付费服务）。\n> \n> **示例：** 如果你的控制面板显示使用 iFlow 模型时\"总成本 $290\"，这代表你如果直接使用付费 API 需要支付的金额。你的实际成本 = **$0**（iFlow 免费无限量）。\n> \n> 把它想象成一个\"节省追踪器\"，展示你通过使用免费模型或通过 9Router 路由节省了多少钱！\n\n### 🌐 任意部署\n\n- 💻 **本地** - 默认，离线可用\n- ☁️ **VPS/云** - 跨设备共享\n- 🐳 **Docker** - 一键部署\n- 🚀 **Cloudflare Workers** - 全球边缘网络\n\n</details>\n\n---\n\n## 💰 价格一览\n\n| 等级 | 提供商 | 成本 | 配额重置 | 适用场景 |\n|------|----------|------|-------------|----------|\n| **🚀 TOKEN 节省器** | **RTK（内置）** | **免费** | 始终开启 | **每次请求节省 20-40% tokens** |\n| **💳 订阅** | Claude Code (Pro/Max) | $20-200/月 | 5小时 + 每周 | 已有订阅的用户 |\n| | Codex (Plus/Pro) | $20-200/月 | 5小时 + 每周 | OpenAI 用户 |\n| | GitHub Copilot | $10-19/月 | 每月 | GitHub 用户 |\n| | Cursor IDE | $20/月 | 每月 | Cursor 用户 |\n| **💰 低价** | GLM-5.1 / GLM-4.7 | $0.6/1M | 每日 10AM | 预算备份 |\n| | MiniMax M2.7 | $0.2/1M | 5小时滚动 | 最便宜选项 |\n| | Kimi K2.5 | $9/月固定 | 10M tokens/月 | 可预测成本 |\n| **🆓 免费** | Kiro AI | $0 | 无限量 | Claude 4.5 + GLM-5 + MiniMax 免费 |\n| | OpenCode Free | $0 | 无限量 | 无需认证，自动获取模型 |\n| | Vertex AI | $300 额度 | 新 GCP 账户 | Gemini 3 Pro + DeepSeek + GLM-5 |\n\n**💡 专业提示：** RTK + Kiro AI + OpenCode Free 组合 = **$0 成本 + 节省 20-40% tokens**！\n\n---\n\n### 📊 理解 9Router 成本与计费\n\n**9Router 计费真相：**\n\n✅ **9Router 软件 = 永久免费**（开源，绝不收费）  \n✅ **控制面板\"成本\" = 仅用于显示/追踪**（不是实际账单）  \n✅ **你直接向提供商付款**（订阅或 API 费用）  \n✅ **免费提供商保持免费**（iFlow、Kiro、Qwen = $0 无限量）  \n❌ **9Router 永不发送发票** 或扣款\n\n**成本显示如何工作：**\n\n控制面板显示**估算成本**，如同你直接使用付费 API。这**不是计费** — 它是一个比较工具，展示你的节省。\n\n**示例场景：**\n```\n控制面板显示：\n• 总请求数：1,662\n• 总 Tokens：47M\n• 显示成本：$290\n\n实际检查：\n• 提供商：iFlow（免费无限量）\n• 实际支付：$0.00\n• $290 意味着什么：通过使用免费模型节省的金额！\n```\n\n**付款规则：**\n- **订阅提供商**（Claude Code、Codex）：通过他们的网站直接付款\n- **低价提供商**（GLM、MiniMax）：直接付款，9Router 只做路由\n- **免费提供商**（iFlow、Kiro、Qwen）：真正的永久免费，无隐藏费用\n- **9Router**：从不收取任何费用，永远不会\n\n---\n\n## 🎯 使用场景\n\n### 场景 1：\"我有 Claude Pro 订阅\"\n\n**问题：** 配额到期未用完，繁忙编码时遇到速率限制\n\n**解决方案：**\n```\n组合：\"maximize-claude\"\n  1. cc/claude-opus-4-7        （充分利用订阅）\n  2. glm/glm-5.1               （配额用完时的低价备份）\n  3. kr/claude-sonnet-4.5      （免费紧急备选）\n\n月成本：$20（订阅）+ ~$5（备份）= $25 总计\n对比：$20 + 遇到限制 = 沮丧\n```\n\n### 场景 2：\"我想零成本\"\n\n**问题：** 负担不起订阅，需要可靠的 AI 编码\n\n**解决方案：**\n```\n组合：\"free-forever\"\n  1. kr/claude-sonnet-4.5      （Claude 4.5 免费无限量）\n  2. kr/glm-5                  （通过 Kiro 免费使用 GLM-5）\n  3. oc/<auto>                 （OpenCode Free，无需认证）\n\n月成本：$0\n质量：生产级模型 + RTK 节省 20-40% tokens\n```\n\n### 场景 3：\"我需要 24/7 编码，不中断\"\n\n**问题：** 截止日期紧迫，不能承受停机\n\n**解决方案：**\n```\n组合：\"always-on\"\n  1. cc/claude-opus-4-7        （最佳质量）\n  2. cx/gpt-5.5                （第二个订阅）\n  3. glm/glm-5.1               （低价，每日重置）\n  4. minimax/MiniMax-M2.7      （最便宜，5小时重置）\n  5. kr/claude-sonnet-4.5      （免费无限量）\n\n结果：5 层切换 = 零停机时间\n月成本：$20-200（订阅）+ $10-20（备份）\n```\n\n### 场景 4：\"我想在 OpenClaw 中使用免费 AI\"\n\n**问题：** 需要在消息应用（WhatsApp、Telegram、Slack...）中使用 AI 助手，完全免费\n\n**解决方案：**\n```\n组合：\"openclaw-free\"\n  1. kr/claude-sonnet-4.5      （Claude 4.5 免费）\n  2. kr/glm-5                  （GLM-5 免费）\n  3. kr/MiniMax-M2.5           （MiniMax 免费）\n\n月成本：$0\n访问方式：WhatsApp、Telegram、Slack、Discord、iMessage、Signal...\n```\n\n---\n\n## ❓ 常见问题\n\n<details>\n<summary><b>📊 为什么我的控制面板显示高成本？</b></summary>\n\n控制面板追踪你的 token 使用情况，并显示**估算成本**，如同你直接使用付费 API。这**不是实际计费** — 它是一个参考，展示你通过使用免费模型或通过 9Router 路由现有订阅节省了多少钱。\n\n**示例：**\n- **控制面板显示：** \"$290 总成本\"\n- **实际情况：** 你在使用 iFlow（免费无限量）\n- **你的实际成本：** **$0.00**\n- **$290 的含义：** 你通过使用免费模型而不是付费 API **节省**的金额！\n\n成本显示是一个\"节省追踪器\"，帮助你了解使用模式和优化机会。\n\n</details>\n\n<details>\n<summary><b>💳 9Router 会扣我的钱吗？</b></summary>\n\n**不会。** 9Router 是在你自己的电脑上运行的开源软件。它永远不会向你收取任何费用。\n\n**你只需支付：**\n- ✅ **订阅提供商**（Claude Code $20/月、Codex $20-200/月）→ 在他们的网站上直接付款\n- ✅ **低价提供商**（GLM、MiniMax）→ 直接付款，9Router 只是路由你的请求\n- ❌ **9Router 本身** → **永不收费，永远不会**\n\n9Router 是一个本地代理/路由器。它没有你的信用卡，不能发送发票，也没有计费系统。它是完全免费的软件。\n\n</details>\n\n<details>\n<summary><b>🆓 免费提供商真的是无限量的吗？</b></summary>\n\n**是的！** 当前的免费提供商（Kiro、OpenCode Free、Vertex）是真正的免费，**无隐藏费用**。\n\n这些是各公司提供的免费服务：\n- **Kiro AI**：通过 AWS Builder ID / Google / GitHub OAuth 免费无限量使用 Claude 4.5 + GLM-5 + MiniMax\n- **OpenCode Free**：无认证直连代理，模型从 `opencode.ai/zen/v1/models` 自动获取\n- **Vertex AI**：新 Google Cloud 账户可获得 $300 免费额度（90 天）\n\n9Router 只是路由你的请求到它们 — 没有\"陷阱\"或未来的计费。它们是真正的免费服务，9Router 让它们易于使用并支持切换。\n\n**已停止的免费等级（不再推荐）：**\n- ❌ **iFlow**：曾是免费无限量，现在改为付费（2026）\n- ❌ **Qwen Code**：阿里巴巴于 2026-04-15 停止免费 OAuth 等级\n- ❌ **Gemini CLI**：仍可用，但与非 CLI 工具（Claude、Codex、Cursor...）一起使用可能会导致账户被封 — 仅在你坚持使用 Gemini CLI 本身时才使用\n\n</details>\n\n<details>\n<summary><b>💰 如何最小化我的实际 AI 成本？</b></summary>\n\n**免费优先策略：**\n\n1. **从 100% 免费组合开始：**\n   ```\n   1. gc/gemini-3-flash (Google 每月 180K 免费)\n   2. if/kimi-k2-thinking (iFlow 无限量免费)\n   3. qw/qwen3-coder-plus (Qwen 无限量免费)\n   ```\n   **成本：$0/月**\n\n2. **仅在需要时添加低价备份：**\n   ```\n   4. glm/glm-4.7 ($0.6/1M tokens)\n   ```\n   **额外成本：只为实际使用的部分付费**\n\n3. **最后使用订阅提供商：**\n   - 仅当你已有订阅时\n   - 9Router 通过配额追踪帮助最大化其价值\n\n**结果：** 大多数用户可以仅使用免费等级以 $0/月运行！\n\n</details>\n\n<details>\n<summary><b>📈 如果我的使用量突然激增怎么办？</b></summary>\n\n9Router 的智能切换可以防止意外费用：\n\n**场景：** 你正在进行编码冲刺，用尽了配额\n\n**没有 9Router：**\n- ❌ 达到速率限制 → 工作停止 → 沮丧\n- ❌ 或者：不慎累积大量 API 账单\n\n**有 9Router：**\n- ✅ 订阅达到限制 → 自动切换到低价等级\n- ✅ 低价等级变得昂贵 → 自动切换到免费等级\n- ✅ 编程永不停歇 → 可预测的成本\n\n**你掌控一切：** 在控制面板中设置每个提供商的支出限制，9Router 会遵守它们。\n\n</details>\n\n---\n\n## 📖 设置指南\n\n<details>\n<summary><b>🔐 订阅提供商（充分利用价值）</b></summary>\n\n### Claude Code (Pro/Max)\n\n```bash\n控制面板 → 提供商 → 连接 Claude Code\n→ OAuth 登录 → 自动 token 刷新\n→ 5小时 + 每周配额追踪\n\n模型：\n  cc/claude-opus-4-7\n  cc/claude-opus-4-6\n  cc/claude-sonnet-4-6\n  cc/claude-haiku-4-5-20251001\n```\n\n**专业提示：** 复杂任务使用 Opus，追求速度使用 Sonnet。9Router 按模型追踪配额！\n\n### OpenAI Codex (Plus/Pro)\n\n```bash\n控制面板 → 提供商 → 连接 Codex\n→ OAuth 登录（端口 1455）\n→ 5小时 + 每周重置\n\n模型：\n  cx/gpt-5.5\n  cx/gpt-5.4\n  cx/gpt-5.3-codex\n  cx/gpt-5.2-codex\n```\n\n### GitHub Copilot\n\n```bash\n控制面板 → 提供商 → 连接 GitHub\n→ 通过 GitHub 进行 OAuth\n→ 每月重置（每月 1 日）\n\n模型：\n  gh/gpt-5.4\n  gh/claude-opus-4.7\n  gh/claude-sonnet-4.6\n  gh/gemini-3.1-pro-preview\n  gh/grok-code-fast-1\n```\n\n### Cursor IDE\n\n```bash\n控制面板 → 提供商 → 连接 Cursor\n→ OAuth 登录\n→ 每月订阅\n\n模型：\n  cu/claude-4.6-opus-max\n  cu/claude-4.5-sonnet-thinking\n  cu/gpt-5.3-codex\n```\n\n</details>\n\n<details>\n<summary><b>💰 低价提供商（备份）</b></summary>\n\n### GLM-5.1 / GLM-4.7（每日重置，$0.6/1M）\n\n1. 注册：[Zhipu AI](https://open.bigmodel.cn/)\n2. 从编程计划获取 API key\n3. 控制面板 → 添加 API Key：\n   - 提供商：`glm`\n   - API Key：`your-key`\n\n**使用：** `glm/glm-5.1`、`glm/glm-5`、`glm/glm-4.7`\n\n**专业提示：** 编程计划提供 3 倍配额，成本仅为 1/7！每日 10:00 AM 重置。\n\n### MiniMax M2.7（5小时重置，$0.20/1M）\n\n1. 注册：[MiniMax](https://www.minimax.io/)\n2. 获取 API key\n3. 控制面板 → 添加 API Key\n\n**使用：** `minimax/MiniMax-M2.7`、`minimax/MiniMax-M2.5`\n\n**专业提示：** 长上下文（1M tokens）的最便宜选项！\n\n### Kimi K2.5（$9/月固定）\n\n1. 订阅：[Moonshot AI](https://platform.moonshot.ai/)\n2. 获取 API key\n3. 控制面板 → 添加 API Key\n\n**使用：** `kimi/kimi-k2.5`、`kimi/kimi-k2.5-thinking`\n\n**专业提示：** 每月 $9 固定费用获得 10M tokens = 实际成本 $0.90/1M！\n\n</details>\n\n<details>\n<summary><b>🆓 免费提供商（推荐）</b></summary>\n\n### Kiro AI（Claude 4.5 + GLM-5 + MiniMax 免费）\n\n```bash\n控制面板 → 连接 Kiro\n→ AWS Builder ID、AWS IAM Identity Center、Google 或 GitHub\n→ 无限量使用\n\n模型：\n  kr/claude-sonnet-4.5\n  kr/claude-haiku-4.5\n  kr/glm-5\n  kr/MiniMax-M2.5\n  kr/qwen3-coder-next\n  kr/deepseek-3.2\n```\n\n**专业提示：** Claude 最佳免费选项。无需 API key，无需付款，完全无限量。\n\n### OpenCode Free（无需认证，自动获取模型）\n\n```bash\n控制面板 → 连接 OpenCode Free\n→ 无需登录（直连代理）\n→ 模型从 opencode.ai/zen/v1/models 自动获取\n```\n\n**专业提示：** 最快的设置。连接后即可开始编码。\n\n### Vertex AI（新 GCP 账户 $300 免费额度）\n\n```bash\n控制面板 → 连接 Vertex AI\n→ 上传 Google Cloud 服务账户 JSON\n→ 在你的 GCP 项目中启用 Vertex AI API\n\n模型：\n  vertex/gemini-3.1-pro-preview\n  vertex/gemini-3-flash-preview\n  vertex/gemini-2.5-flash\n\nVertex 合作伙伴（通过 Vertex 提供 Anthropic / DeepSeek / GLM / Qwen）：\n  vertex-partner/glm-5-maas\n  vertex-partner/deepseek-v3.2-maas\n  vertex-partner/qwen3-next-80b-a3b-thinking-maas\n```\n\n**专业提示：** 新 Google Cloud 账户可获得 90 天内 $300 免费额度。足够日常编码使用。\n\n</details>\n\n<details>\n<summary><b>🎨 创建组合</b></summary>\n\n### 示例 1：充分利用订阅 → 低价备份\n\n```\n控制面板 → 组合 → 创建新组合\n\n名称：premium-coding\n模型：\n  1. cc/claude-opus-4-7 (订阅主用)\n  2. glm/glm-5.1 (低价备份，$0.6/1M)\n  3. minimax/MiniMax-M2.7 (最便宜的备选，$0.20/1M)\n\n在 CLI 中使用：premium-coding\n\n月度成本示例（100M tokens）：\n  80M 通过 Claude（订阅）：$0 额外费用\n  15M 通过 GLM：$9\n  5M 通过 MiniMax：$1\n  总计：$10 + 你的订阅费用\n```\n\n### 示例 2：仅免费（零成本）\n\n```\n名称：free-combo\n模型：\n  1. kr/claude-sonnet-4.5 (Claude 4.5 免费无限量)\n  2. kr/glm-5 (通过 Kiro 免费使用 GLM-5)\n  3. vertex/gemini-3.1-pro-preview ($300 免费额度)\n\n成本：通过 RTK 永久 $0（+ 节省 20-40% tokens）！\n```\n\n</details>\n\n<details>\n<summary><b>🔧 CLI 集成</b></summary>\n\n### Cursor IDE\n\n```\n设置 → 模型 → 高级：\n  OpenAI API Base URL：http://localhost:20128/v1\n  OpenAI API Key：[来自 9router 控制面板]\n  Model：cc/claude-opus-4-7\n```\n\n或使用组合：`premium-coding`\n\n### Claude Code\n\n编辑 `~/.claude/config.json`：\n\n```json\n{\n  \"anthropic_api_base\": \"http://localhost:20128/v1\",\n  \"anthropic_api_key\": \"your-9router-api-key\"\n}\n```\n\n### Codex CLI\n\n```bash\nexport OPENAI_BASE_URL=\"http://localhost:20128\"\nexport OPENAI_API_KEY=\"your-9router-api-key\"\n\ncodex \"your prompt\"\n```\n\n### OpenClaw\n\n**选项 1 — 控制面板（推荐）：**\n\n```\n控制面板 → CLI 工具 → OpenClaw → 选择模型 → 应用\n```\n\n**选项 2 — 手动：** 编辑 `~/.openclaw/openclaw.json`：\n\n```json\n{\n  \"agents\": {\n    \"defaults\": {\n      \"model\": {\n        \"primary\": \"9router/kr/claude-sonnet-4.5\"\n      }\n    }\n  },\n  \"models\": {\n    \"providers\": {\n      \"9router\": {\n        \"baseUrl\": \"http://127.0.0.1:20128/v1\",\n        \"apiKey\": \"sk_9router\",\n        \"api\": \"openai-completions\",\n        \"models\": [\n          {\n            \"id\": \"kr/claude-sonnet-4.5\",\n            \"name\": \"Claude Sonnet 4.5 (Kiro Free)\"\n          }\n        ]\n      }\n    }\n  }\n}\n```\n\n> **注意：** OpenClaw 仅适用于本地 9Router。使用 `127.0.0.1` 而不是 `localhost` 以避免 IPv6 解析问题。\n\n### Cline / Continue / RooCode\n\n```\nProvider：OpenAI 兼容\nBase URL：http://localhost:20128/v1\nAPI Key：[来自控制面板]\nModel：cc/claude-opus-4-7\n```\n\n</details>\n\n<details>\n<summary><b>🚀 部署</b></summary>\n\n### VPS 部署\n\n```bash\n# 克隆并安装\ngit clone https://github.com/decolua/9router.git\ncd 9router\nnpm install\nnpm run build\n\n# 配置\nexport JWT_SECRET=\"your-secure-secret-change-this\"\nexport INITIAL_PASSWORD=\"your-password\"\nexport DATA_DIR=\"/var/lib/9router\"\nexport PORT=\"20128\"\nexport HOSTNAME=\"0.0.0.0\"\nexport NODE_ENV=\"production\"\nexport NEXT_PUBLIC_BASE_URL=\"http://localhost:20128\"\nexport NEXT_PUBLIC_CLOUD_URL=\"https://9router.com\"\nexport API_KEY_SECRET=\"endpoint-proxy-api-key-secret\"\nexport MACHINE_ID_SALT=\"endpoint-proxy-salt\"\n\n# 启动\nnpm run start\n\n# 或使用 PM2\nnpm install -g pm2\npm2 start npm --name 9router -- start\npm2 save\npm2 startup\n```\n\n### Docker\n\n```bash\n# 构建镜像（从仓库根目录）\ndocker build -t 9router .\n\n# 运行容器（当前设置使用的命令）\ndocker run -d \\\n  --name 9router \\\n  -p 20128:20128 \\\n  --env-file /root/dev/9router/.env \\\n  -v 9router-data:/app/data \\\n  -v 9router-usage:/root/.9router \\\n  9router\n```\n\n便携命令（如果你已经在仓库根目录）：\n\n```bash\ndocker run -d \\\n  --name 9router \\\n  -p 20128:20128 \\\n  --env-file ./.env \\\n  -v 9router-data:/app/data \\\n  -v 9router-usage:/root/.9router \\\n  9router\n```\n\n容器默认值：\n- `PORT=20128`\n- `HOSTNAME=0.0.0.0`\n\n常用命令：\n\n```bash\ndocker logs -f 9router\ndocker restart 9router\ndocker stop 9router && docker rm 9router\n```\n\n### 环境变量\n\n| 变量 | 默认值 | 描述 |\n|----------|---------|-------------|\n| `JWT_SECRET` | 自动生成（`~/.9router/jwt-secret`） | 用于控制面板 auth cookie 的 JWT 签名密钥（设置可在多实例间共享） |\n| `INITIAL_PASSWORD` | `123456` | 当没有保存的哈希时首次登录的密码 |\n| `DATA_DIR` | `~/.9router` | 主应用数据库位置（`db.json`） |\n| `PORT` | 框架默认值 | 服务端口（示例中为 `20128`） |\n| `HOSTNAME` | 框架默认值 | 绑定主机（Docker 默认为 `0.0.0.0`） |\n| `NODE_ENV` | 运行时默认值 | 设置 `production` 用于部署 |\n| `BASE_URL` | `http://localhost:20128` | 云同步任务使用的服务端内部基础 URL |\n| `CLOUD_URL` | `https://9router.com` | 服务端云同步端点基础 URL |\n| `NEXT_PUBLIC_BASE_URL` | `http://localhost:3000` | 向后兼容/公开基础 URL（服务端运行时优先使用 `BASE_URL`） |\n| `NEXT_PUBLIC_CLOUD_URL` | `https://9router.com` | 向后兼容/公开云 URL（服务端运行时优先使用 `CLOUD_URL`） |\n| `API_KEY_SECRET` | `endpoint-proxy-api-key-secret` | 生成 API key 的 HMAC 密钥 |\n| `MACHINE_ID_SALT` | `endpoint-proxy-salt` | 稳定机器 ID 哈希的盐值 |\n| `ENABLE_REQUEST_LOGS` | `false` | 在 `logs/` 下启用请求/响应日志 |\n| `AUTH_COOKIE_SECURE` | `false` | 强制 `Secure` auth cookie（在 HTTPS 反向代理后面设置为 `true`） |\n| `REQUIRE_API_KEY` | `false` | 在 `/v1/*` 路由上强制使用 Bearer API key（面向互联网部署时推荐） |\n| `HTTP_PROXY`、`HTTPS_PROXY`、`ALL_PROXY`、`NO_PROXY` | 空 | 用于上游提供商调用的可选出站代理 |\n\n注意：\n- 也支持小写代理变量：`http_proxy`、`https_proxy`、`all_proxy`、`no_proxy`。\n- `.env` 不会打包到 Docker 镜像中（`.dockerignore`）；使用 `--env-file` 或 `-e` 注入运行时配置。\n- 在 Windows 上，`APPDATA` 可用于本地存储路径解析。\n- `INSTANCE_NAME` 出现在较旧的文档/环境变量模板中，但当前运行时未使用。\n\n### 运行时文件和存储\n\n- 主应用状态：`${DATA_DIR}/db.json`（提供商、组合、别名、密钥、设置），由 `src/lib/localDb.js` 管理。\n- 使用历史和日志：`${DATA_DIR}/usage.json` 和 `${DATA_DIR}/log.txt`，由 `src/lib/usageDb.js` 管理。\n- 可选的请求/翻译器日志：`ENABLE_REQUEST_LOGS=true` 时位于 `<repo>/logs/...`。\n- `${DATA_DIR}` 和 `~/.9router` 在 Docker 容器中解析到同一位置 — 符号链接 `/root/.9router -> /app/data` 在构建时创建。\n\n</details>\n\n---\n\n## 📊 可用模型\n\n<details>\n<summary><b>查看所有可用模型</b></summary>\n\n**Claude Code（`cc/`）** - Pro/Max：\n- `cc/claude-opus-4-7`\n- `cc/claude-opus-4-6`\n- `cc/claude-sonnet-4-6`\n- `cc/claude-sonnet-4-5-20250929`\n- `cc/claude-haiku-4-5-20251001`\n\n**Codex（`cx/`）** - Plus/Pro：\n- `cx/gpt-5.5`\n- `cx/gpt-5.4`\n- `cx/gpt-5.3-codex`\n- `cx/gpt-5.2-codex`\n- `cx/gpt-5.1-codex-max`\n\n**GitHub Copilot（`gh/`）**：\n- `gh/gpt-5.4`\n- `gh/claude-opus-4.7`\n- `gh/claude-sonnet-4.6`\n- `gh/gemini-3.1-pro-preview`\n- `gh/grok-code-fast-1`\n\n**Cursor（`cu/`）** - 订阅：\n- `cu/claude-4.6-opus-max`\n- `cu/claude-4.5-sonnet-thinking`\n- `cu/gpt-5.3-codex`\n- `cu/kimi-k2.5`\n\n**GLM（`glm/`）** - $0.6/1M：\n- `glm/glm-5.1`\n- `glm/glm-5`\n- `glm/glm-4.7`\n\n**MiniMax（`minimax/`）** - $0.2/1M：\n- `minimax/MiniMax-M2.7`\n- `minimax/MiniMax-M2.5`\n\n**Kimi（`kimi/`）** - $9/月固定：\n- `kimi/kimi-k2.5`\n- `kimi/kimi-k2.5-thinking`\n\n**Kiro（`kr/`）** - 免费无限量：\n- `kr/claude-sonnet-4.5`\n- `kr/claude-haiku-4.5`\n- `kr/glm-5`\n- `kr/MiniMax-M2.5`\n- `kr/qwen3-coder-next`\n- `kr/deepseek-3.2`\n\n**OpenCode Free（`oc/`）** - 免费无需认证：\n- 从 `opencode.ai/zen/v1/models` 自动获取\n\n**Vertex AI（`vertex/`）** - $300 免费额度：\n- `vertex/gemini-3.1-pro-preview`\n- `vertex/gemini-3-flash-preview`\n- `vertex/gemini-2.5-flash`\n- `vertex-partner/glm-5-maas`\n- `vertex-partner/deepseek-v3.2-maas`\n\n</details>\n\n---\n\n## 🐛 故障排除\n\n**\"语言模型未提供消息\"**\n- 提供商配额耗尽 → 检查控制面板配额追踪器\n- 解决方案：使用组合切换或切换到更便宜的等级\n\n**速率限制**\n- 订阅配额用完 → 切换到 GLM/MiniMax\n- 添加组合：`cc/claude-opus-4-7 → glm/glm-5.1 → kr/claude-sonnet-4.5`\n\n**OAuth token 已过期**\n- 9Router 自动刷新\n- 如果问题持续：控制面板 → 提供商 → 重新连接\n\n**高成本**\n- 在控制面板 → 端点设置中启用 RTK（默认开启，节省 20-40% tokens）\n- 在控制面板中检查使用统计\n- 将主模型切换到 GLM/MiniMax\n- 对于非关键任务使用免费等级（Kiro、OpenCode Free、Vertex）\n\n**控制面板在错误端口打开**\n- 设置 `PORT=20128` 和 `NEXT_PUBLIC_BASE_URL=http://localhost:20128`\n\n**首次登录不工作**\n- 检查 `.env` 中的 `INITIAL_PASSWORD`\n- 如果未设置，回退密码是 `123456`\n\n**`logs/` 下没有请求日志**\n- 设置 `ENABLE_REQUEST_LOGS=true`\n\n---\n\n## 🛠️ 技术栈\n\n- **运行时**：Node.js 20+\n- **框架**：Next.js 16\n- **UI**：React 19 + Tailwind CSS 4\n- **数据库**：LowDB（基于 JSON 文件）\n- **流式传输**：Server-Sent Events (SSE)\n- **认证**：OAuth 2.0 (PKCE) + JWT + API Keys\n\n---\n\n## 📝 API 参考\n\n### 聊天补全\n\n```bash\nPOST http://localhost:20128/v1/chat/completions\nAuthorization: Bearer your-api-key\nContent-Type: application/json\n\n{\n  \"model\": \"cc/claude-opus-4-6\",\n  \"messages\": [\n    {\"role\": \"user\", \"content\": \"Write a function to...\"}\n  ],\n  \"stream\": true\n}\n```\n\n### 列出模型\n\n```bash\nGET http://localhost:20128/v1/models\nAuthorization: Bearer your-api-key\n\n→ 以 OpenAI 格式返回所有模型和组合\n```\n\n## 📧 支持\n\n- **网站**：[9router.com](https://9router.com)\n- **GitHub**：[github.com/decolua/9router](https://github.com/decolua/9router)\n- **问题**：[github.com/decolua/9router/issues](https://github.com/decolua/9router/issues)\n\n---\n\n## 👥 贡献者\n\n感谢所有帮助改进 9Router 的贡献者！\n\n[![Contributors](https://contrib.rocks/image?repo=decolua/9router&max=150&columns=15&anon=1&v=20260309)](https://github.com/decolua/9router/graphs/contributors)\n\n---\n\n## 📊 Star 图表\n\n[![Star Chart](https://starchart.cc/decolua/9router.svg?variant=adaptive)](https://starchart.cc/decolua/9router)\n\n\n\n## 🔀 分支\n\n**[OmniRoute](https://github.com/diegosouzapw/OmniRoute)** — 9Router 的全功能 TypeScript 分支。增加了 36+ 提供商、4 层自动切换、多模态 API（图像、嵌入、音频、TTS）、断路器、语义缓存、LLM 评估和精美的控制面板。368+ 单元测试。可通过 npm 和 Docker 使用。\n\n---\n\n## 🙏 致谢\n\n站在巨人的肩膀上构建：\n\n- **CLIProxyAPI** — 启发了这个 JavaScript 移植的原始 Go 实现。\n- **[RTK](https://github.com/rtk-ai/rtk)** ![Stars](https://img.shields.io/github/stars/rtk-ai/rtk?style=flat&color=yellow) — Rust token 节省器。9Router 将其压缩管道移植到 JS → 每次请求 **减少 20-40% 输入 tokens**。\n- **[Caveman](https://github.com/JuliusBrussee/caveman)** ![Stars](https://img.shields.io/github/stars/JuliusBrussee/caveman?style=flat&color=yellow) by **[@JuliusBrussee](https://github.com/JuliusBrussee)** — 病毒式传播的 *\"为什么用很多 token 当少的 token 就能搞定\"*。9Router 适配其提示词 → **减少 65% 输出 tokens**。\n\n非常感谢这些作者 — 没有他们的工作，9Router 的 token 节省功能就不会存在。在 GitHub 上给他们加星！\n\n---\n\n## 📄 许可证\n\nMIT 许可证 — 详见 [LICENSE](LICENSE)。\n\n---\n\n<div align=\"center\">\n  <sub>用 ❤️ 为 24/7 编程的开发者构建</sub>\n</div>","readmeFilename":"README.zh-CN.md"}