Feat : Gitbook

This commit is contained in:
decolua
2026-05-11 11:50:24 +07:00
parent 7ad538bcf2
commit fd92af77a0
124 changed files with 34154 additions and 4 deletions

View File

@@ -0,0 +1,473 @@
# ☁️ 云端部署
将 9Router 部署到 VPS 或 Docker,实现远程访问和生产使用。
---
## 🖥️ VPS 部署
### 前置要求
- Ubuntu 20.04+ 或类似 Linux 发行版
- Node.js 20+
- Git
- root 或 sudo 权限
### 步骤 1:克隆仓库
```bash
git clone https://github.com/decolua/9router.git
cd 9router/app
```
### 步骤 2:安装依赖
```bash
npm install
```
### 步骤 3:构建应用
```bash
npm run build
```
### 步骤 4:配置环境变量
创建 `.env` 文件或导出变量:
```bash
export JWT_SECRET="your-secure-secret-change-this-to-random-string"
export INITIAL_PASSWORD="your-secure-password"
export DATA_DIR="/var/lib/9router"
export NODE_ENV="production"
```
**环境变量:**
| 变量 | 默认值 | 说明 |
|----------|---------|-------------|
| `JWT_SECRET` | 自动生成 | **生产环境必须修改!** 用于 JWT token 签名 |
| `INITIAL_PASSWORD` | `123456` | 仪表盘登录密码 |
| `DATA_DIR` | `~/.9router` | 数据库与数据存储路径 |
| `NODE_ENV` | `development` | 部署时设为 `production` |
| `ENABLE_REQUEST_LOGS` | `false` | 启用 debug 请求/响应日志 |
### 步骤 5:创建数据目录
```bash
sudo mkdir -p /var/lib/9router
sudo chown $USER:$USER /var/lib/9router
```
### 步骤 6:启动应用
```bash
npm run start
```
### 步骤 7:用 PM2 部署到生产环境
PM2 让应用持续运行,崩溃时自动重启:
```bash
# 全局安装 PM2
npm install -g pm2
# 用 PM2 启动 9Router
pm2 start npm --name 9router -- start
# 保存 PM2 配置
pm2 save
# 设置开机自启
pm2 startup
# 按上一条命令打印的提示执行
```
**PM2 管理命令:**
```bash
# 查看日志
pm2 logs 9router
# 重启应用
pm2 restart 9router
# 停止应用
pm2 stop 9router
# 查看状态
pm2 status
# 监控资源
pm2 monit
```
---
## 🐳 Docker 部署
### 方式 1:使用 Dockerfile
在 `app` 目录中创建 `Dockerfile`:
```dockerfile
FROM node:20-alpine
WORKDIR /app
# Copy package files
COPY package*.json ./
# Install dependencies
RUN npm ci --only=production
# Copy application files
COPY . .
# Build application
RUN npm run build
# Expose ports
EXPOSE 3000 20128
# Set environment variables
ENV NODE_ENV=production
ENV DATA_DIR=/app/data
# Create data directory
RUN mkdir -p /app/data
# Start application
CMD ["npm", "run", "start"]
```
**构建并运行:**
```bash
# 构建镜像
docker build -t 9router .
# 运行容器
docker run -d \
--name 9router \
-p 3000:3000 \
-p 20128:20128 \
-e JWT_SECRET="your-secure-secret-change-this" \
-e INITIAL_PASSWORD="your-secure-password" \
-v 9router-data:/app/data \
9router
```
### 方式 2:Docker Compose
创建 `docker-compose.yml`:
```yaml
version: '3.8'
services:
9router:
build: .
container_name: 9router
ports:
- "3000:3000"
- "20128:20128"
environment:
- NODE_ENV=production
- JWT_SECRET=your-secure-secret-change-this
- INITIAL_PASSWORD=your-secure-password
- DATA_DIR=/app/data
volumes:
- 9router-data:/app/data
restart: unless-stopped
volumes:
9router-data:
```
**使用 Docker Compose 运行:**
```bash
# 启动服务
docker-compose up -d
# 查看日志
docker-compose logs -f
# 停止服务
docker-compose down
# 重新构建并重启
docker-compose up -d --build
```
---
## 🌐 Nginx 反向代理
### 为什么使用 Nginx?
- SSL/TLS 终止
- 域名映射
- 负载均衡
- 更好的安全性
### 步骤 1:安装 Nginx
```bash
sudo apt update
sudo apt install nginx
```
### 步骤 2:配置 Nginx
创建 `/etc/nginx/sites-available/9router`:
```nginx
server {
listen 80;
server_name your-domain.com;
# Redirect HTTP to HTTPS
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name your-domain.com;
# SSL certificates (use certbot to generate)
ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
# SSL configuration
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# Proxy to 9Router
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
# SSE support - CRITICAL for streaming
proxy_buffering off;
proxy_read_timeout 86400;
}
# API endpoint
location /v1 {
proxy_pass http://localhost:20128;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# SSE support - CRITICAL for streaming
proxy_buffering off;
proxy_read_timeout 86400;
}
}
```
### 步骤 3:启用站点
```bash
# 创建软链接
sudo ln -s /etc/nginx/sites-available/9router /etc/nginx/sites-enabled/
# 测试配置
sudo nginx -t
# 重新加载 Nginx
sudo systemctl reload nginx
```
### 步骤 4:使用 Let's Encrypt 配置 SSL
```bash
# 安装 certbot
sudo apt install certbot python3-certbot-nginx
# 获取 SSL 证书
sudo certbot --nginx -d your-domain.com
# 自动续期已自动配置
# 测试续期
sudo certbot renew --dry-run
```
---
## 🔒 安全注意事项
### 1. 修改默认凭据
**关键:** 部署前修改 `JWT_SECRET` 和 `INITIAL_PASSWORD`:
```bash
# 生成安全的 JWT secret
openssl rand -base64 32
# 将该值用于 JWT_SECRET
export JWT_SECRET="generated-secret-here"
```
### 2. 防火墙配置
```bash
# 允许 SSH
sudo ufw allow 22/tcp
# 允许 HTTP/HTTPS(若使用 Nginx)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# 若不使用反向代理,放开 9Router 端口
sudo ufw allow 3000/tcp
sudo ufw allow 20128/tcp
# 启用防火墙
sudo ufw enable
```
### 3. 限制仪表盘访问
如果只需要 API 访问,可限制仪表盘端口:
```bash
# 仅允许 localhost 访问仪表盘
sudo ufw deny 3000/tcp
```
通过 SSH 隧道访问仪表盘:
```bash
ssh -L 3000:localhost:3000 user@your-server.com
# 然后在浏览器打开 http://localhost:3000
```
### 4. 定期更新
```bash
# 更新系统包
sudo apt update && sudo apt upgrade -y
# 更新 9Router
cd /path/to/9router/app
git pull
npm install
npm run build
pm2 restart 9router
```
### 5. 备份策略
```bash
# 备份数据目录
tar -czf 9router-backup-$(date +%Y%m%d).tar.gz /var/lib/9router
# 每日自动备份(加入 crontab)
0 2 * * * tar -czf /backups/9router-$(date +\%Y\%m\%d).tar.gz /var/lib/9router
```
---
## 📊 监控
### 检查应用状态
```bash
# PM2 状态
pm2 status
# 查看日志
pm2 logs 9router --lines 100
# 监控资源
pm2 monit
```
### Nginx 日志
```bash
# 访问日志
sudo tail -f /var/log/nginx/access.log
# 错误日志
sudo tail -f /var/log/nginx/error.log
```
### 系统资源
```bash
# CPU 和内存使用
htop
# 磁盘使用
df -h
# 网络连接
netstat -tulpn | grep -E '3000|20128'
```
---
## 🚨 故障排除
### 应用无法启动
```bash
# 查看日志
pm2 logs 9router
# 检查端口是否被占用
sudo lsof -i :3000
sudo lsof -i :20128
# 检查环境变量
pm2 env 9router
```
### Nginx 502 Bad Gateway
```bash
# 检查 9Router 是否运行
pm2 status
# 查看 Nginx 错误日志
sudo tail -f /var/log/nginx/error.log
# 测试 Nginx 配置
sudo nginx -t
```
### SSE 流式输出无法工作
确保 Nginx 配置中已设置 `proxy_buffering off` 以支持 SSE。
### 权限被拒绝错误
```bash
# 修复数据目录权限
sudo chown -R $USER:$USER /var/lib/9router
chmod 755 /var/lib/9router
```
---
## 🔗 下一步
- [连接提供商](/providers/subscription.md)
- [配置组合](/features/combos.md)
- [集成工具](/integration/cursor.md)

View File

@@ -0,0 +1,164 @@
# 🏠 本地部署
在本机运行 9Router,用于开发和个人使用。
---
## 📦 安装
通过 npm 全局安装 9Router:
```bash
npm install -g 9router
```
**要求:**
- Node.js 20 或更高
- npm 9 或更高
---
## 🚀 启动服务器
一条命令启动 9Router:
```bash
9router
```
仪表盘会自动在浏览器中打开,地址为 `http://localhost:3000`
**默认配置:**
- **仪表盘**: `http://localhost:3000`
- **API Endpoint**: `http://localhost:20128/v1`
- **数据目录**: `~/.9router`
---
## 🔧 配置
### 自定义数据目录
通过环境变量设置自定义数据目录:
```bash
DATA_DIR=/path/to/data 9router
```
### 自定义端口
API 端口(20128)和仪表盘端口(3000)在应用中配置。如需修改,你需要改源码或使用支持的环境变量(如果有)。
---
## 🛑 停止服务器
在运行 9Router 的终端中按 `Ctrl+C`。
```bash
# 在运行 9router 的终端中
^C # 按 Ctrl+C
```
服务器会优雅关闭并保存所有数据。
---
## 🔄 重启服务器
再次运行启动命令即可:
```bash
9router
```
所有配置、API keys 和组合都保存在数据目录中。
---
## 📊 更新 9Router
更新到最新版本:
```bash
npm update -g 9router
```
查看当前版本:
```bash
npm list -g 9router
```
---
## 🔍 故障排除
### 端口已被占用
如果端口 20128 或 3000 已被占用:
```bash
# 找到使用该端口的进程(macOS/Linux)
lsof -i :20128
lsof -i :3000
# 杀掉进程
kill -9 <PID>
```
### 权限错误
安装过程中遇到权限错误:
```bash
# 使用 sudo(不推荐)
sudo npm install -g 9router
# 或修复 npm 权限(推荐)
mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
```
### 数据目录问题
数据目录无法访问:
```bash
# 检查权限
ls -la ~/.9router
# 修复权限
chmod 755 ~/.9router
```
---
## 📁 数据目录结构
```
~/.9router/
├── db.json # 主数据库(提供商、组合、设置)
├── logs/ # 应用日志
└── cache/ # 临时缓存文件
```
**备份数据:**
```bash
# 备份
cp -r ~/.9router ~/.9router.backup
# 恢复
cp -r ~/.9router.backup ~/.9router
```
---
## 🔗 下一步
- [连接提供商](/providers/subscription.md)
- [创建组合](/features/combos.md)
- [集成 CLI 工具](/integration/cursor.md)

View File

@@ -0,0 +1,387 @@
# 常见问题
关于 9Router 的常见问题。
---
## 什么是 9Router?
**9Router 是一款 AI 模型路由工具,能够最大化你的订阅价值并最小化成本。**
它使用 3 层回退系统在多个 AI 提供商之间智能路由请求:
1. **订阅层** - 充分利用你已付费的 Claude Code、Codex、Gemini 配额
2. **低价层** - 超低价替代方案(每 1M tokens $0.20-$0.60)
3. **免费层** - 无限免费模型应急备用
**核心优势:**
- 不再浪费订阅配额
- 配额耗尽时自动回退
- 实时配额跟踪
- 比直接使用 API 节省 90% 成本
---
## 价格是如何计算的?
**9Router 采用三层定价策略:**
### 第 1 层:订阅(优先使用)
- **Claude Code**(Pro/Max):$20-100/月 - 5 小时 + 每周配额
- **OpenAI Codex**(Plus/Pro):$20-200/月 - 5 小时 + 每周配额
- **Gemini CLI**:免费 - 每月 180K 次补全 + 每天 1K
- **GitHub Copilot**:$10-19/月 - 每月重置
- **Antigravity**:免费 - 类似 Gemini
**目标:** 在配额重置前用掉每一点!
### 第 2 层:低价(备用)
- **GLM-4.7**:每 1M tokens $0.60/$2.20 - 每日 10AM 重置
- **MiniMax M2.1**:每 1M tokens $0.20/$1.00 - 5 小时滚动
- **Kimi K2**:$9/月固定(10M tokens)
**目标:** 比 ChatGPT API(每 1M $20)便宜 90%!
### 第 3 层:免费(应急)
- **iFlow**:8 个免费模型(Kimi K2、Qwen3、GLM、MiniMax...)
- **Qwen**:3 个免费模型(Qwen3 Coder Plus/Flash、Vision)
- **Kiro**:2 个免费模型(Claude Sonnet 4.5、Haiku 4.5)
**目标:** 当其他配额都受限时零成本回退!
---
## 9Router 是免费的吗?
**是的,9Router 本身 100% 免费且开源。**
**可用的免费层提供商:**
- **Gemini CLI** - 每月 180K 次补全(免费 Google 账户)
- **iFlow** - 8 个无限模型(免费 OAuth)
- **Qwen** - 3 个无限模型(免费 OAuth)
- **Kiro** - Claude Sonnet/Haiku(免费 AWS Builder ID)
**只用免费层提供商,就可以永久免费编码!**
**可选的付费提供商:**
- 你可能已有的订阅服务(Claude Code、Codex、Copilot)
- 超低价替代方案(每 1M tokens $0.20-$0.60)
---
## 支持哪些提供商?
### 订阅型提供商
- **Claude Code**(Pro/Max)- Claude 4.5 Opus/Sonnet/Haiku
- **OpenAI Codex**(Plus/Pro)- GPT 5.2 Codex、GPT 5.1 Codex Max
- **Gemini CLI**(免费)- Gemini 3 Flash/Pro、2.5 Pro/Flash
- **GitHub Copilot** - GPT-5、Claude 4.5、Gemini 3
- **Antigravity**(Google)- Gemini 3 Pro、Claude Sonnet 4.5
### 低价提供商
- **GLM**(Zhipu AI)- GLM 4.7、GLM 4.6V Vision
- **MiniMax** - MiniMax M2.1
- **Kimi**(Moonshot AI)- Kimi Latest
- **OpenRouter** - 透传到任意 OpenRouter 模型
### 免费提供商
- **iFlow** - 8 个模型(Kimi K2、Qwen3、GLM、MiniMax、DeepSeek...)
- **Qwen** - 3 个模型(Qwen3 Coder Plus/Flash、Vision)
- **Kiro** - 2 个模型(Claude Sonnet 4.5、Haiku 4.5)
**合计:15+ 个提供商,50+ 个模型**
详情请见 [提供商文档](providers/subscription.md)。
---
## 可以同时使用多个提供商吗?
**可以!这正是 9Router 的核心功能。**
**通过组合(Combos),你可以把多个提供商串联起来实现自动回退:**
```
示例组合: "premium-coding"
1. cc/claude-opus-4-5(订阅主力)
2. glm/glm-4.7(低价备用)
3. if/kimi-k2(免费应急)
→ 配额耗尽时自动切换
→ 永不停止编码
→ 几乎零额外成本
```
**创建组合的方法:**
```
仪表盘 → 组合 → 新建
→ 按优先级添加模型
→ CLI 中使用组合名: "premium-coding"
```
**优势:**
- 配额耗尽时零停机
- 自动成本优化
- 所有工具使用同一个模型名
详情见 [组合文档](features/combos.md)。
---
## 配额跟踪是如何工作的?
**9Router 为所有提供商提供实时配额跟踪:**
**功能:**
- **Token 消耗** - 每次请求的输入/输出 tokens
- **重置倒计时** - 配额刷新前剩余时间
- **使用统计** - 每日/每周/每月报告
- **成本估算** - 预计支出(付费层)
- **配额告警** - 配额不足时通知
**配额类型:**
- **5 小时滚动** - Claude Code、Codex、MiniMax
- **每日重置** - Gemini CLI(每日 1K)、GLM(10AM)
- **每周重置** - Claude Code、Codex(额外配额)
- **每月重置** - Gemini CLI(180K)、GitHub Copilot(1 日)
**查看配额:**
```
仪表盘 → 提供商 → 配额跟踪
→ 实时使用情况 + 重置倒计时
```
详情见 [配额跟踪文档](features/quota-tracking.md)。
---
## 9Router 能配合 Cursor 使用吗?
**可以,但 Cursor 需要使用云端 endpoint。**
**问题:** Cursor IDE 不支持 localhost endpoint。
**解决方案:** 使用 9Router 云端部署:
```
Cursor Settings → Models → Advanced:
OpenAI API Base URL: https://9router.com/v1
OpenAI API Key: [从仪表盘获取]
Model: cc/claude-opus-4-5-20251101
```
**替代方案:** 在 VPS 上自托管,使用公开域名:
```bash
# 部署到 VPS
git clone https://github.com/decolua/9router.git
cd 9router/app
npm install && npm run build
npm start
# 配置 Nginx 反向代理
# 将 Cursor 指向: https://your-domain.com/v1
```
**其他 CLI 工具支持 localhost:**
- Cline ✅
- Claude Desktop ✅
- Codex CLI ✅
- Continue ✅
- RooCode ✅
详情见 [Cursor 集成指南](integration/cursor.md)。
---
## 可以自托管 9Router 吗?
**可以!9Router 支持多种部署方式:**
### Localhost(默认)
```bash
npm install -g 9router
9router
→ 仪表盘: http://localhost:3000
→ API: http://localhost:20128/v1
```
### VPS/云
```bash
git clone https://github.com/decolua/9router.git
cd 9router/app
npm install && npm run build
export JWT_SECRET="your-secure-secret"
export INITIAL_PASSWORD="your-password"
export NODE_ENV="production"
npm start
```
### Docker
```bash
docker build -t 9router .
docker run -d \
-p 3000:3000 \
-e JWT_SECRET="your-secret" \
-v 9router-data:/app/data \
9router
```
### Cloudflare Workers
```bash
cd 9router/app
npm run deploy:cloudflare
```
**环境变量:**
- `JWT_SECRET` - **生产环境必须修改!**
- `DATA_DIR` - 数据库存储路径(默认:`~/.9router`)
- `INITIAL_PASSWORD` - 仪表盘登录(默认:`123456`)
- `NODE_ENV` - 部署时设为 `production`
详情见 [部署指南](getting-started/installation.md#deployment)。
---
## 我的数据安全吗?
**是的,9Router 优先考虑安全和隐私:**
**本地存储:**
- 所有数据存储在本地 `~/.9router`(或自定义 `DATA_DIR`)
- 不会发送数据到 9Router 服务器
- OAuth tokens 使用 JWT 加密
**无遥测:**
- 不跟踪使用情况
- 不分析
- 不向外回连
**开源:**
- GitHub 上提供完整源码
- 可自行审计安全性
- 社区评审
**最佳实践:**
- 生产环境修改 `JWT_SECRET`
- 使用强 `INITIAL_PASSWORD`
- 云端部署启用 HTTPS
- 定期轮换 API keys
**9Router 存储的内容:**
- 提供商 OAuth tokens(加密)
- API keys(加密)
- 使用统计(仅本地)
- 组合配置
**9Router 不存储的内容:**
- 你的 prompt 或响应
- 你生成的代码
- 个人信息
---
## 如何更新 9Router?
**更新方式取决于安装类型:**
### 全局 NPM 安装
```bash
npm update -g 9router
```
### 本地安装
```bash
cd 9router/app
git pull origin main
npm install
npm run build
npm start
```
### Docker
```bash
docker pull 9router:latest
docker stop 9router
docker rm 9router
docker run -d \
-p 3000:3000 \
-v 9router-data:/app/data \
9router:latest
```
**查看版本:**
```bash
9router --version
```
**破坏性变更:**
- 查看 [CHANGELOG.md](https://github.com/decolua/9router/blob/main/CHANGELOG.md)
- 大版本更新前备份 `~/.9router`
- 阅读大版本的迁移指南
---
## 如何贡献?
**欢迎贡献!**
### 贡献方式:
1. **报告 bug:**
- [GitHub Issues](https://github.com/decolua/9router/issues)
- 附上错误日志、复现步骤
2. **功能请求:**
- [GitHub Discussions](https://github.com/decolua/9router/discussions)
- 描述使用场景和价值
3. **提交代码:**
```bash
# Fork 仓库
git clone https://github.com/YOUR_USERNAME/9router.git
cd 9router
# 创建分支
git checkout -b feature/your-feature
# 修改代码
npm install
npm run dev
# 测试
npm test
# 提交并推送
git add .
git commit -m "Add your feature"
git push origin feature/your-feature
# 在 GitHub 上创建 Pull Request
```
4. **改进文档:**
- 修正错别字、添加示例
- 翻译到其他语言
- 编写教程
5. **添加提供商:**
- 实现新的 provider adapter
- 参考 `app/lib/providers/` 中的示例
**贡献指南:**
- 遵循现有代码风格
- 为新功能添加测试
- 更新文档
- 提交保持原子化、描述清晰
详情见 [CONTRIBUTING.md](https://github.com/decolua/9router/blob/main/CONTRIBUTING.md)。
---
## 需要更多帮助?
- **文档:** [9router.com/docs](https://9router.com/docs)
- **GitHub:** [github.com/decolua/9router](https://github.com/decolua/9router)
- **Issues:** [github.com/decolua/9router/issues](https://github.com/decolua/9router/issues)
- **故障排除:** [troubleshooting.md](troubleshooting.md)

View File

@@ -0,0 +1,537 @@
# 组合(Combos)- 自定义回退链
创建自定义的模型组合并自动回退。组合让你根据成本、质量和可用性定义自己的路由策略。
---
## 什么是组合?
组合是你在仪表盘中创建的 **自定义回退链**。它不是单一模型,而是定义一组顺序模型,由 9Router 依次尝试。
**示例:**
```
组合名: premium-coding
模型:
1. cc/claude-opus-4-5-20251101 (首选)
2. glm/glm-4.7 (#1 配额耗尽时)
3. minimax/MiniMax-M2.1 (#2 配额耗尽时)
```
**CLI 中使用:**
```
Model: premium-coding
```
9Router 会按顺序自动尝试每个模型,直到成功为止。
---
## 为什么使用组合?
### 1. 最大化订阅价值
```
cc/claude-opus → glm/glm-4.7 → if/kimi-k2-thinking
→ 先用订阅,低价备用,免费应急
→ 充分利用你已付费的订阅
```
### 2. 最小化成本
```
glm/glm-4.7 → minimax/MiniMax-M2.1 → if/kimi-k2-thinking
→ 从最便宜的付费选项开始(每 1M $0.60)
→ 回退到更便宜的(每 1M $0.20)
→ 应急免费层
→ 总成本: 约 $5-10/月,而 ChatGPT API 需要 $2000
```
### 3. 保障 24/7 可用
```
cc/claude-opus → cx/gpt-5.2-codex → glm/glm-4.7 → if/kimi-k2-thinking
→ 末尾总是放免费层
→ 永不耗尽配额
→ 随时随地编码
```
### 4. 质量优化
```
cc/claude-opus-4-5 → cx/gpt-5.2-codex → gc/gemini-3-pro
→ 优先最好的模型
→ 回退到其他高端模型
→ 整个回退链保持高质量
```
---
## 如何创建组合
### 步骤 1:打开仪表盘
```
http://localhost:20128
→ 用密码登录
```
### 步骤 2:进入组合页面
```
仪表盘 → 组合 → 新建组合
```
### 步骤 3:配置组合
**组合名:**
```
premium-coding
```
**描述(可选):**
```
订阅优先,低价备用,免费应急
```
**选择模型:**
```
1. cc/claude-opus-4-5-20251101
2. glm/glm-4.7
3. minimax/MiniMax-M2.1
```
**拖动排序** - 自上而下表示优先级。
### 步骤 4:保存
```
点击 "Save Combo"
→ 组合出现在模型列表中
```
### 步骤 5:在 CLI 中使用
```
Cursor/Cline/任意工具:
Model: premium-coding
```
---
## 示例组合
### 示例 1:Premium Coding(订阅 → 低价 → 免费)
**目标**:最大化订阅价值,最小化额外成本。
```
仪表盘 → 组合 → 新建
名称: premium-coding
模型:
1. cc/claude-opus-4-5-20251101
2. glm/glm-4.7
3. minimax/MiniMax-M2.1
```
**用法:**
```
Cursor IDE:
Model: premium-coding
```
**行为:**
```
早上(全新配额):
请求 → cc/claude-opus-4-5 ✅
下午(Claude 配额用完):
请求 → glm/glm-4.7 ✅ (自动切换)
晚上(GLM 配额用完):
请求 → minimax/MiniMax-M2.1 ✅ (自动切换)
```
**月成本(100M tokens):**
```
80M 通过 Claude Code: $0(订阅)
15M 通过 GLM: $9
5M 通过 MiniMax: $1
合计: $10 + 你的订阅
```
**节省**:相比 ChatGPT API($2000)约 99%。
---
### 示例 2:Budget Combo(低价 → 免费)
**目标**:最小化成本,免费层作为备用。
```
仪表盘 → 组合 → 新建
名称: budget-combo
模型:
1. glm/glm-4.7
2. minimax/MiniMax-M2.1
3. if/kimi-k2-thinking
```
**用法:**
```
Cline:
Provider: OpenAI Compatible
Base URL: http://localhost:20128/v1
Model: budget-combo
```
**行为:**
```
请求 → glm/glm-4.7
✅ 每日配额可用 → 使用 GLM(每 1M $0.60)
❌ 配额耗尽 → 尝试 MiniMax(每 1M $0.20)
❌ MiniMax 配额用完 → 使用 iFlow(免费)
```
**月成本(100M tokens):**
```
70M 通过 GLM: $42
20M 通过 MiniMax: $4
10M 通过 iFlow: $0
合计: $46,而 ChatGPT API 需 $2000
```
**节省**:97%。
---
### 示例 3:Free Combo(零成本)
**目标**:100% 免费,永不付费。
```
仪表盘 → 组合 → 新建
名称: free-combo
模型:
1. if/kimi-k2-thinking
2. qw/qwen3-coder-plus
3. kr/claude-sonnet-4.5
```
**用法:**
```
Claude Desktop:
Model: free-combo
```
**行为:**
```
请求 → if/kimi-k2-thinking
✅ 可用 → 使用 iFlow
❌ 错误 → 尝试 Qwen
❌ 错误 → 尝试 Kiro
```
**月成本:**
```
100M tokens 通过免费提供商: $0
合计: 永远 $0
```
**适用场景**:个人项目、学习、试验。
---
### 示例 4:Quality First(仅高端模型)
**目标**:最高质量,无低价回退。
```
仪表盘 → 组合 → 新建
名称: quality-first
模型:
1. cc/claude-opus-4-5-20251101
2. cx/gpt-5.2-codex
3. gc/gemini-3-pro-preview
```
**用法:**
```
Codex CLI:
export OPENAI_BASE_URL="http://localhost:20128"
Model: quality-first
```
**行为:**
```
请求 → cc/claude-opus-4-5
❌ 配额用完 → cx/gpt-5.2-codex
❌ 配额用完 → gc/gemini-3-pro-preview
❌ 全部用完 → 返回错误(无低价回退)
```
**适用场景**:关键生产代码、复杂重构。
---
### 示例 5:Multi-Subscription(用足所有订阅)
**目标**:在产生额外费用前用足所有订阅。
```
仪表盘 → 组合 → 新建
名称: multi-sub
模型:
1. gc/gemini-3-flash-preview (每月免费 180K)
2. cc/claude-opus-4-5-20251101 (Pro 订阅)
3. cx/gpt-5.2-codex (Plus 订阅)
4. gh/gpt-5 (Copilot 订阅)
5. glm/glm-4.7 (低价备用)
6. if/kimi-k2-thinking (免费应急)
```
**月成本(200M tokens):**
```
50M 通过 Gemini CLI: $0(免费层)
80M 通过 Claude Code: $0(订阅)
40M 通过 Codex: $0(订阅)
20M 通过 Copilot: $0(订阅)
8M 通过 GLM: $4.80
2M 通过 iFlow: $0
合计: $4.80 + 你已有的订阅
```
**结果**:190M tokens 来自订阅,只有 $4.80 额外费用。
---
### 示例 6:配额重置优化
**目标**:根据重置时间分配使用。
```
仪表盘 → 组合 → 新建
名称: reset-optimized
模型:
1. cc/claude-opus-4-5 (5h 重置, 早上用)
2. gc/gemini-3-flash (每日 1K, 下午用)
3. glm/glm-4.7 (每日 10AM 重置, 晚上用)
4. minimax/MiniMax-M2.1 (5h 滚动, 夜里用)
5. if/kimi-k2-thinking (无限, 应急)
```
**日常安排:**
```
08:00 - 13:00: Claude Code(全新 5h 配额)
13:00 - 18:00: Gemini CLI(每日 1K 配额)
18:00 - 22:00: GLM(次日 10AM 重置)
22:00 - 08:00: MiniMax(5h 滚动)或 iFlow
```
**结果**:24/7 编码,成本极低。
---
## 在 CLI 工具中使用组合
### Cursor IDE
```
Settings → Models → Advanced:
OpenAI API Base URL: http://localhost:20128/v1
OpenAI API Key: [从仪表盘获取]
Model: premium-coding
```
### Claude Desktop
编辑 `~/.claude/config.json`:
```json
{
"anthropic_api_base": "http://localhost:20128/v1",
"anthropic_api_key": "your-9router-api-key",
"model": "budget-combo"
}
```
### Codex CLI
```bash
export OPENAI_BASE_URL="http://localhost:20128"
export OPENAI_API_KEY="your-9router-api-key"
codex --model quality-first "your prompt"
```
### Cline / Continue / RooCode
```
Provider: OpenAI Compatible
Base URL: http://localhost:20128/v1
API Key: [从仪表盘获取]
Model: free-combo
```
### API 请求
```bash
curl http://localhost:20128/v1/chat/completions \
-H "Authorization: Bearer your-api-key" \
-H "Content-Type: application/json" \
-d '{
"model": "premium-coding",
"messages": [
{"role": "user", "content": "Write a function to..."}
],
"stream": true
}'
```
---
## 最佳实践
### 1. 总是包含免费层
```
✅ 好:
cc/claude-opus → glm/glm-4.7 → if/kimi-k2-thinking
❌ 不好:
cc/claude-opus → glm/glm-4.7
(无免费回退,可能耗尽配额)
```
**原因**:确保 24/7 可用,绝不会被配额卡住。
### 2. 按成本排序(便宜 → 贵)
```
✅ 好:
glm/glm-4.7 → minimax/MiniMax-M2.1 → cc/claude-opus
❌ 不好:
cc/claude-opus → glm/glm-4.7
(在简单任务上浪费订阅配额)
```
**例外**:如果想充分利用订阅价值,把订阅放在最前面。
### 3. 匹配质量要求
```
生产代码:
cc/claude-opus → cx/gpt-5.2-codex → glm/glm-4.7
简单任务:
glm/glm-4.7 → if/kimi-k2-thinking
试验:
if/kimi-k2-thinking → qw/qwen3-coder-plus
```
### 4. 考虑配额重置时间
```
早上组合(配额刚刷新):
cc/claude-opus → cx/gpt-5.2-codex
晚上组合(配额大概率耗尽):
glm/glm-4.7 → minimax/MiniMax-M2.1 → if/kimi-k2-thinking
```
### 5. 为不同场景创建多个组合
```
premium-coding: 复杂任务
budget-combo: 简单任务
free-combo: 试验
quality-first: 生产代码
```
**根据任务需求切换组合**。
### 6. 监控组合性能
```
仪表盘 → 分析 → 组合使用:
premium-coding:
80% 通过 cc/claude-opus(良好,使用订阅)
15% 通过 glm/glm-4.7(可接受备用)
5% 通过 minimax(罕见回退)
```
**优化**:回退使用过多时,提高主配额或重新排序模型。
---
## 高级配置
### 为组合设置预算上限
```
仪表盘 → 组合 → 编辑 → 预算:
每日上限: $5
每月上限: $50
```
达到上限时,9Router 跳过付费模型,仅使用免费层。
### 启用/禁用组合中的模型
```
仪表盘 → 组合 → 编辑 → 模型:
✅ cc/claude-opus-4-5(启用)
❌ glm/glm-4.7(暂时禁用)
✅ if/kimi-k2-thinking(启用)
```
**用途**:暂时禁用昂贵模型而不删除组合。
### 克隆已有组合
```
仪表盘 → 组合 → 克隆 "premium-coding"
→ 生成带 "-copy" 后缀的副本
→ 修改后另存为新组合
```
**用途**:为不同场景创建变体。
---
## 故障排除
**问题:组合未出现在模型列表中**
**方案:**
1. 刷新仪表盘
2. 检查组合已保存(绿色对勾)
3. 重启 CLI 工具以刷新模型列表
**问题:组合总是用最后一个模型(免费层)**
**方案:**
1. 检查主模型的配额(仪表盘 → 配额)
2. 确认 API keys 有效(仪表盘 → 提供商)
3. 检查是否超出预算上限
**问题:组合成本超出预期**
**方案:**
1. 仪表盘 → 分析 → 查看组合使用情况
2. 检查主模型是否配额耗尽
3. 重新排序模型(更便宜的放前面)
4. 设置预算上限
---
## 相关
- [智能路由](./smart-routing.md) - 自动回退如何工作
- [配额跟踪](./quota-tracking.md) - 监控使用与成本

View File

@@ -0,0 +1,687 @@
# 配额跟踪 & 使用监控
实时跟踪 token 消耗、监控配额上限、估算成本,并在配额用尽前获得提醒。绝不浪费订阅配额,也不超出预算上限。
---
## 概览
9Router 为所有提供商提供完善的配额跟踪:
- **实时 token 消耗** - 查看每次请求使用的 tokens
- **配额上限与剩余** - 跟踪使用 vs 上限
- **重置倒计时** - 了解配额何时刷新
- **成本估算** - 计算付费层支出
- **月度报告** - 分析使用模式
- **告警与通知** - 接近上限时收到警告
---
## 仪表盘总览
### 配额摘要
```
仪表盘 → 主页 → 配额概览
┌─────────────────────────────────────────────┐
│ Claude Code (cc/) │
│ ████████████░░░░░░░░ 2.5h / 5h (50%) │
│ 重置剩余: 2h 30m │
│ 成本: $0(订阅) │
└─────────────────────────────────────────────┘
┌─────────────────────────────────────────────┐
│ Gemini CLI (gc/) │
│ ████████░░░░░░░░░░░░ 450 / 1000 (45%) │
│ 每日重置剩余: 18h 30m │
│ 本月: 45K / 180K (25%) │
│ 成本: $0(免费层) │
└─────────────────────────────────────────────┘
┌─────────────────────────────────────────────┐
│ GLM-4.7 (glm/) │
│ ██████████████░░░░░░ 7M / 10M tokens (70%) │
│ 重置: 每日 10:00 AM(5h 35m 后) │
│ 今日成本: $4.20 │
└─────────────────────────────────────────────┘
┌─────────────────────────────────────────────┐
│ MiniMax M2.1 (minimax/) │
│ ████████████████░░░░ 4M / 5M tokens (80%) │
│ 5h 滚动窗口 │
│ 成本(5h): $0.80 │
└─────────────────────────────────────────────┘
┌─────────────────────────────────────────────┐
│ iFlow (if/) │
│ ████████████████████ 无限 │
│ 成本: $0(永久免费) │
└─────────────────────────────────────────────┘
```
---
## 实时 Token 消耗
### 按请求跟踪
每次请求都会显示详细的 token 使用情况:
```
仪表盘 → 活动 → 最近请求
请求 #1234
模型: cc/claude-opus-4-5-20251101
时间戳: 2026-02-04 04:15:32
Tokens:
输入: 1,250 tokens
输出: 850 tokens
合计: 2,100 tokens
成本: $0(订阅配额)
耗时: 3.2s
状态: ✅ 成功
```
### 实时使用监控
```
仪表盘 → 实时监控
当前请求:
模型: glm/glm-4.7
已流式输出 tokens: 450 / 预计 ~800
当前成本: $0.0009
耗时: 1.8s
```
### 按模型分解 Token
```
仪表盘 → 分析 → Token 使用
今日(2026-02-04):
cc/claude-opus-4-5: 15M tokens($0,订阅)
glm/glm-4.7: 8M tokens($4.80)
if/kimi-k2-thinking: 3M tokens($0,免费)
合计: 26M tokens
成本: $4.80
```
---
## 配额上限与重置时间
### 订阅型提供商
**Claude Code (Pro/Max)**
```
配额类型: 基于时间(5 小时滚动)
上限: 5 小时使用时长
重置: 5 小时滚动窗口 + 每周刷新
跟踪: 每个模型的使用时间
仪表盘显示:
Opus: 已用 2.5h / 5h
Sonnet: 已用 1.2h / 5h
Haiku: 已用 0.8h / 5h
每周重置: 每周一 00:00 UTC
```
**OpenAI Codex (Plus/Pro)**
```
配额类型: 基于时间(5 小时滚动)
上限: 5 小时(Plus)/ 10 小时(Pro)
重置: 5 小时滚动窗口 + 每周刷新
仪表盘显示:
GPT-5.2 Codex: 已用 3.5h / 5h
重置剩余: 1h 30m
```
**Gemini CLI(免费)**
```
配额类型: 请求次数 + 月度 tokens
每日上限: 1,000 次请求
月度上限: 180,000 次补全
重置: 每日 00:00 UTC + 每月 1 日
仪表盘显示:
今日: 450 / 1,000 次请求 (45%)
本月: 45K / 180K 次补全 (25%)
每日重置剩余: 18h 30m
月度重置剩余: 26 天
```
**GitHub Copilot**
```
配额类型: 月度使用量
上限: 因套餐而异
重置: 每月 1 日
仪表盘显示:
使用: 月度配额 60%
重置: 2026 年 3 月 1 日(25 天后)
```
### 低价提供商
**GLM-4.7**
```
配额类型: 每日 token 上限
上限: 10M tokens/天(Coding Plan)
重置: 每日 10:00 AM 北京时间(UTC+8)
仪表盘显示:
已用: 7M / 10M tokens (70%)
剩余: 3M tokens
重置剩余: 5h 35m
今日成本: $4.20
```
**MiniMax M2.1**
```
配额类型: 5 小时滚动窗口
上限: 每 5 小时 5M tokens
重置: 连续滚动窗口
仪表盘显示:
已用(5h): 4M / 5M tokens (80%)
最早一次使用过期: 45m
成本(5h): $0.80
```
**Kimi K2**
```
配额类型: 月度订阅
上限: 10M tokens/月($9 固定)
重置: 订阅日每月一次
仪表盘显示:
已用: 6M / 10M tokens (60%)
重置: 2026 年 2 月 15 日(11 天后)
成本: $9/月(预付)
```
### 免费提供商
**iFlow / Qwen / Kiro**
```
配额类型: 无限(限速)
上限: 无硬上限
重置: 不适用
仪表盘显示:
今日已用: 5M tokens
成本: $0(永久免费)
状态: ✅ 可用
```
---
## 成本估算
### 实时成本跟踪
```
仪表盘 → 成本 → 今日
订阅型提供商: $0
Claude Code: 15M tokens($0,包含)
Gemini CLI: 3M tokens($0,免费层)
付费提供商: $4.80
GLM-4.7: 8M tokens($4.80)
输入: 6M × $0.60/1M = $3.60
输出: 2M × $2.20/1M = $4.40
合计: $4.80
免费提供商: $0
iFlow: 3M tokens($0)
今日合计: $4.80
```
### 月度支出报告
```
仪表盘 → 成本 → 本月(2026 年 2 月)
第 1 周(2 月 1-7 日):
订阅: $0(80M tokens)
付费: $15.20(25M tokens)
免费: $0(10M tokens)
合计: $15.20
第 2 周(2 月 8-14 日):
订阅: $0(75M tokens)
付费: $12.80(20M tokens)
免费: $0(8M tokens)
合计: $12.80
本月至今: $28.00
预计(30 天): ~$120
按提供商分解:
GLM-4.7: $22.00 (78%)
MiniMax M2.1: $6.00 (22%)
每 1M tokens 平均成本: $0.62
相比 ChatGPT API 节省: 97%($4,000 → $120)
```
### 成本预测
```
仪表盘 → 成本 → 预测
基于近 7 天使用:
日均: 50M tokens
日成本: $4.50
月度预测:
Tokens: 1,500M (1.5B)
成本: $135
分解:
订阅: 900M tokens($0)
GLM-4.7: 450M tokens($90)
MiniMax: 120M tokens($24)
免费: 30M tokens($0)
预算状态:
每日上限: $5 → 今日已用 90%
每月上限: $150 → 预计 90%
⚠️ 警告: 可能超出每月预算
```
---
## 使用仪表盘
### 总览统计
```
仪表盘 → 分析 → 总览
今日(2026-02-04):
请求: 1,234
Tokens: 26M
成本: $4.80
平均响应时间: 2.1s
本周:
请求: 8,456
Tokens: 180M
成本: $28.00
成功率: 99.2%
本月:
请求: 15,234
Tokens: 320M
成本: $52.00
Top 模型: cc/claude-opus-4-5 (45%)
```
### 按模型使用
```
仪表盘 → 分析 → 模型
Top 模型(本月):
1. cc/claude-opus-4-5: 145M tokens (45%)
2. glm/glm-4.7: 95M tokens (30%)
3. if/kimi-k2-thinking: 50M tokens (16%)
4. minimax/MiniMax-M2.1: 20M tokens (6%)
5. gc/gemini-3-flash: 10M tokens (3%)
成本分解:
cc/claude-opus: $0(订阅)
glm/glm-4.7: $45.00
if/kimi-k2-thinking: $0(免费)
minimax/MiniMax-M2.1: $7.00
gc/gemini-3-flash: $0(免费)
```
### 按时间使用
```
仪表盘 → 分析 → 时间线
按小时使用(今日):
00:00 - 01:00: 0.5M tokens
01:00 - 02:00: 0.2M tokens
...
08:00 - 09:00: 3.2M tokens(峰值)
09:00 - 10:00: 2.8M tokens
...
23:00 - 00:00: 0.8M tokens
峰值时段: 08:00 - 12:00(早上编码)
低谷时段: 00:00 - 06:00(夜间)
```
### 按组合使用
```
仪表盘 → 分析 → 组合
premium-coding:
请求: 456
Tokens: 12M
成本: $2.40
分解:
cc/claude-opus: 8M tokens (67%, $0)
glm/glm-4.7: 3M tokens (25%, $1.80)
minimax/MiniMax-M2.1: 1M tokens (8%, $0.20)
budget-combo:
请求: 234
Tokens: 6M
成本: $1.20
分解:
glm/glm-4.7: 4M tokens (67%, $2.40)
if/kimi-k2-thinking: 2M tokens (33%, $0)
```
---
## 告警与通知
### 配额告警
```
仪表盘 → 设置 → 告警
配额预警:
✅ 配额使用 80% 时告警
✅ 配额使用 90% 时告警
✅ 配额耗尽时告警
✅ 配额重置时通知
发送方式:
✅ 仪表盘通知
✅ 邮件(可选)
✅ Webhook(可选)
```
**通知示例:**
```
⚠️ Claude Code 配额已用 80%
剩余 2.5h(1h 30m 后重置)
⚠️ GLM-4.7 配额已用 90%
剩余 1M tokens(5h 后重置)
✅ Gemini CLI 配额已重置
1,000 次请求可用(每日上限)
```
### 预算告警
```
仪表盘 → 设置 → 预算告警
每日预算: $5
✅ 80%($4)告警
✅ 100%($5)告警
✅ 超额时自动切换到免费层
每月预算: $150
✅ 50%($75)告警
✅ 80%($120)告警
✅ 100%($150)告警
```
**通知示例:**
```
⚠️ 每日预算已用 80%
今日花费 $4.00 / $5.00
⚠️ 每月预算达到 50%
本月花费 $75 / $150
预计: $135(预算内)
🚨 每日预算超额
今日花费 $5.20 / $5.00
已自动切换到免费层
```
### 成本异常检测
```
仪表盘 → 设置 → 异常检测
✅ 检测异常支出模式
✅ 成本峰值告警(>2× 日均)
✅ 配额耗尽模式警告
告警示例:
⚠️ 检测到成本峰值
今日: $12.50(2.5× 日均)
原因: GLM-4.7 高用量(20M tokens)
建议: 检查主模型是否配额耗尽
```
---
## 最佳实践
### 1. 每日监控配额
```
日常:
1. 查看仪表盘配额概览(30 秒)
2. 检查重置时间
3. 根据配额可用性规划使用
```
**示例:**
```
早晨检查:
✅ Claude Code: 5h 可用(刚重置)
✅ Gemini CLI: 1K 请求可用
⚠️ GLM-4.7: 剩 2M tokens(10AM 重置)
行动: 早上工作用 Claude Code
```
### 2. 设置预算上限
```
仪表盘 → 设置 → 预算:
每日: $5(防止超支)
每月: $150(与预算对齐)
```
**结果**:达到上限时自动切换到免费层。
### 3. 优化组合使用
```
仪表盘 → 分析 → 组合:
查看哪些模型用得最多
调整组合顺序以最小化成本
```
**示例:**
```
当前: cc/claude-opus → glm/glm-4.7
80% 通过 Claude(好)
20% 通过 GLM($12/月)
优化后: gc/gemini-3-flash → cc/claude-opus → glm/glm-4.7
50% 通过 Gemini(免费)
40% 通过 Claude(订阅)
10% 通过 GLM($6/月)
节省: $6/月
```
### 4. 跟踪重置时间
```
仪表盘 → 配额 → 重置日程:
Claude Code: 5h 滚动 + 每周一
Gemini CLI: 每日 00:00 UTC + 每月 1 日
GLM-4.7: 每日 10:00 AM 北京时间
MiniMax: 5h 滚动窗口
```
**策略**:配额刚刷新时使用对应提供商。
### 5. 查看月度报告
```
仪表盘 → 分析 → 月度报告:
总 tokens: 1.5B
总成本: $120
节省: 相比 ChatGPT API 节省 97%
洞察:
- 60% 用量来自订阅($0)
- 30% 通过 GLM($90)
- 10% 通过免费层($0)
优化:
- 增加 Gemini CLI 用量(免费)
- 减少 GLM 用量(更贵)
```
---
## API 访问
### 获取配额状态
```bash
GET http://localhost:20128/api/quota
Authorization: Bearer your-api-key
Response:
{
"providers": [
{
"id": "cc",
"name": "Claude Code",
"quota": {
"used": 2.5,
"limit": 5,
"unit": "hours",
"percentage": 50
},
"reset": {
"type": "rolling",
"window": "5h",
"nextReset": "2026-02-04T06:45:00Z"
},
"cost": {
"today": 0,
"month": 0,
"currency": "USD"
}
},
{
"id": "glm",
"name": "GLM-4.7",
"quota": {
"used": 7000000,
"limit": 10000000,
"unit": "tokens",
"percentage": 70
},
"reset": {
"type": "daily",
"time": "10:00 AM UTC+8",
"nextReset": "2026-02-04T10:00:00+08:00"
},
"cost": {
"today": 4.20,
"month": 52.00,
"currency": "USD"
}
}
]
}
```
### 获取使用统计
```bash
GET http://localhost:20128/api/usage?period=today
Authorization: Bearer your-api-key
Response:
{
"period": "today",
"date": "2026-02-04",
"summary": {
"requests": 1234,
"tokens": 26000000,
"cost": 4.80
},
"byModel": [
{
"model": "cc/claude-opus-4-5",
"requests": 456,
"tokens": 15000000,
"cost": 0
},
{
"model": "glm/glm-4.7",
"requests": 234,
"tokens": 8000000,
"cost": 4.80
}
]
}
```
---
## 故障排除
**问题:配额显示 0% 但请求失败**
**方案:**
1. 检查提供商连接(仪表盘 → 提供商)
2. 确认 API keys 有效
3. 检查提供商是否宕机(状态页)
4. 尝试重新连接 OAuth 提供商
**问题:成本估算不正确**
**方案:**
1. 仪表盘 → 设置 → 定价
2. 确认每个提供商的定价与当前一致
3. 若提供商调整费率,更新定价
4. 若差异持续,联系支持
**问题:重置时间没有更新**
**方案:**
1. 刷新仪表盘(F5)
2. 检查系统时间是否正确
3. 确认时区设置
4. 若问题持续,重启 9Router
**问题:未收到告警**
**方案:**
1. 仪表盘 → 设置 → 告警
2. 确认邮箱地址正确
3. 检查垃圾邮件夹
4. 测试通知(Send Test 按钮)
---
## 相关
- [智能路由](./smart-routing.md) - 基于配额自动回退
- [组合](./combos.md) - 创建自定义回退链

View File

@@ -0,0 +1,407 @@
# 智能路由 & 自动回退
9Router 通过 3 层回退系统,自动将你的请求路由到最佳可用提供商。绝不再因配额限制或速率限制而中断编码。
---
## 工作原理
9Router 使用智能路由,最大化已有订阅价值、最小化成本,并保障 24/7 可用:
```
请求 → 9Router → 检查第 1 层 (订阅)
↓ 配额耗尽
检查第 2 层 (低价)
↓ 预算上限
检查第 3 层 (免费)
↓
响应
```
### 3 层回退系统
**第 1 层:订阅(主力)**
- Claude Code(Pro/Max)
- OpenAI Codex(Plus/Pro)
- Gemini CLI(每月免费 180K)
- GitHub Copilot
- Antigravity(Google)
**目标**:充分挖掘你已付费订阅的价值。
**第 2 层:低价(备用)**
- GLM-4.7(输入每 1M $0.60)
- MiniMax M2.1(输入每 1M $0.20)
- Kimi K2($9/月固定)
**目标**:订阅配额用完后的超低价备用(比 ChatGPT API 便宜 ~90%)。
**第 3 层:免费(应急)**
- iFlow(8 个模型)
- Qwen(3 个模型)
- Kiro(Claude 免费)
**目标**:零成本回退,实现无限编码。
---
## 自动切换
9Router 实时监控配额,自动切换提供商:
### 场景 1:订阅配额耗尽
```
用户请求 → cc/claude-opus-4-5
↓ 配额耗尽(达到 5 小时限制)
自动切换 → glm/glm-4.7
↓ 每日配额耗尽
自动切换 → minimax/MiniMax-M2.1
↓ 5 小时配额耗尽
自动切换 → if/kimi-k2-thinking (免费)
↓
响应已送达 ✅
```
**结果**:零停机,无缝体验。
### 场景 2:速率限制
```
用户请求 → cx/gpt-5.2-codex
↓ 速率受限(请求过多)
自动切换 → glm/glm-4.7
↓
响应已送达 ✅
```
### 场景 3:提供商不可用
```
用户请求 → cc/claude-opus-4-5
↓ 提供商错误(503)
自动切换 → 下一个可用模型
↓
响应已送达 ✅
```
---
## 模型选择逻辑
9Router 基于以下因素选择最佳模型:
1. **配额可用性** - 检查提供商是否仍有剩余配额
2. **成本层级** - 优先订阅 → 低价 → 免费
3. **重置时间** - 考虑配额何时重置
4. **提供商健康度** - 跳过有错误的提供商
### 优先级示例
对 `cc/claude-opus-4-5` 的请求:
```
1. 检查 Claude Code 配额
✅ 可用 → 使用 cc/claude-opus-4-5
❌ 耗尽 → 继续步骤 2
2. 检查回退层(若已配置)
✅ GLM 配额可用 → 使用 glm/glm-4.7
❌ 耗尽 → 继续步骤 3
3. 检查免费层
✅ iFlow 可用 → 使用 if/kimi-k2-thinking
❌ 全部耗尽 → 返回配额错误
```
---
## 配置选项
### 仪表盘设置
**1. 启用/禁用自动回退**
```
仪表盘 → 设置 → 智能路由
→ 切换 "Auto Fallback" ON/OFF
```
- **ON**(默认):自动层级切换
- **OFF**:严格模式,主模型不可用时返回错误
**2. 设置预算上限**
```
仪表盘 → 设置 → 预算控制
→ 每日上限: $5
→ 每月上限: $50
```
预算耗尽时,9Router 自动切换到免费层。
**3. 配置回退顺序**
```
仪表盘 → 设置 → 回退优先级
→ 拖动以重新排序每层内的提供商
```
自定义顺序示例:
```
第 1 层: Gemini CLI → Claude Code → Codex
第 2 层: MiniMax → GLM → Kimi
第 3 层: iFlow → Kiro → Qwen
```
**4. 配额重置通知**
```
仪表盘 → 设置 → 通知
→ 配额重置时邮件提醒
→ 配额使用 80% 时告警
```
---
## 示例
### 示例 1:基础自动回退
**设置:**
```
Model: cc/claude-opus-4-5-20251101
Fallback: 自动(默认 3 层)
```
**行为:**
```
早上(全新配额):
请求 → cc/claude-opus-4-5 ✅
下午(配额耗尽):
请求 → glm/glm-4.7 ✅ (自动切换)
晚上(GLM 配额用完):
请求 → minimax/MiniMax-M2.1 ✅ (自动切换)
深夜(付费配额全部耗尽):
请求 → if/kimi-k2-thinking ✅ (免费层)
```
**成本**:额外约 $5-10/月(大部分由订阅覆盖)。
### 示例 2:预算优先路由
**设置:**
```
仪表盘 → 设置:
每日预算: $2
每月预算: $20
Fallback: 启用
```
**行为:**
```
1-15 日(预算内):
请求 → glm/glm-4.7 (低价层)
成本: $1.50/天
第 16 日(达到预算):
请求 → if/kimi-k2-thinking (免费层)
成本: $0
下月(预算重置):
请求 → 重新使用 glm/glm-4.7
```
**结果**:绝不超过 $20/月,始终可用。
### 示例 3:仅订阅模式
**设置:**
```
仪表盘 → 设置:
Auto Fallback: OFF
Strict mode: ON
```
**行为:**
```
请求 → cc/claude-opus-4-5
✅ 配额可用 → 成功
❌ 配额耗尽 → 返回错误(无回退)
```
**适用场景**:只想用付费订阅,绝不产生额外成本。
### 示例 4:仅免费模式
**设置:**
```
Model: if/kimi-k2-thinking
Fallback: qw/qwen3-coder-plus → kr/claude-sonnet-4.5
```
**行为:**
```
所有请求 → 仅免费层
成本: 永远 $0
```
**适用场景**:个人项目、学习、试验。
---
## 最佳实践
### 1. 最大化订阅价值
```
策略:
- 将订阅模型设为第 1 层
- 在仪表盘监控配额使用
- 仅在订阅耗尽时使用低价层
```
**示例组合:**
```
cc/claude-opus-4-5 → glm/glm-4.7 → if/kimi-k2-thinking
```
### 2. 成本优化
```
策略:
- 先用 Gemini CLI 免费层(每月 180K)
- 回退到 GLM/MiniMax(超低价)
- 应急: iFlow(免费)
```
**示例组合:**
```
gc/gemini-3-flash-preview → glm/glm-4.7 → if/kimi-k2-thinking
```
### 3. 质量优先
```
策略:
- 使用最佳模型(Claude Opus、GPT-5.2)
- 回退到优秀的低价模型(GLM-4.7)
- 最后手段: 免费层
```
**示例组合:**
```
cc/claude-opus-4-5 → cx/gpt-5.2-codex → glm/glm-4.7
```
### 4. 24/7 可用性
```
策略:
- 回退链中总是包含免费层
- 监控配额重置时间
- 在多个提供商间分散使用
```
**示例组合:**
```
cc/claude-opus-4-5 → glm/glm-4.7 → minimax/MiniMax-M2.1 → if/kimi-k2-thinking
```
**结果**:永不耗尽配额,随时编码。
---
## 配额重置策略
围绕配额重置时间规划使用:
| 提供商 | 配额重置 | 策略 |
|----------|-------------|----------|
| **Claude Code** | 5 小时 + 每周 | 早上使用,配额最新鲜 |
| **Codex** | 5 小时 + 每周 | Claude 配额用完后使用 |
| **Gemini CLI** | 每日(1K)+ 每月(180K) | 全天均匀使用 |
| **GLM-4.7** | 每日 10:00 AM | 晚上使用,次日上午重置 |
| **MiniMax M2.1** | 5 小时滚动 | 任意时间用,跟踪滚动窗口 |
| **iFlow/Qwen/Kiro** | 无限制 | 应急备用 |
**日常安排示例:**
```
08:00 - 13:00: Claude Code(全新 5h 配额)
13:00 - 18:00: Gemini CLI(每日 1K 配额)
18:00 - 22:00: GLM-4.7(便宜,10AM 重置)
22:00 - 08:00: MiniMax 或 iFlow(5h 滚动 或 免费)
```
---
## 监控与告警
### 仪表盘配额跟踪
```
仪表盘 → 配额概览:
Claude Code: 剩余 2.5h / 5h (50%)
Gemini CLI: 今日 450 / 1000 次请求
GLM-4.7: 5M / 10M tokens (8h 后重置)
MiniMax: 3M / 5M tokens (5h 滚动)
```
### 实时通知
```
仪表盘 → 通知:
⚠️ Claude Code 配额使用 80%(剩 1h)
✅ GLM-4.7 配额已重置(10M tokens 可用)
💰 每日预算使用 50%($2.50 / $5)
```
### 使用分析
```
仪表盘 → 分析:
今日: 50M tokens
- 30M 通过 Claude Code(订阅)
- 15M 通过 GLM-4.7($9)
- 5M 通过 iFlow(免费)
成本: $9(对比 ChatGPT API $1000)
节省: 99%
```
---
## 故障排除
**问题:"All providers quota exhausted"**
**方案:**
1. 查看仪表盘配额跟踪
2. 等待配额重置(查看倒计时)
3. 在回退链中加入免费层
4. 或提高预算上限
**问题:"Too many fallback switches"**
**方案:**
1. 检查主提供商是否宕机
2. 提高配额上限(升级订阅)
3. 使用更便宜的主模型(用 GLM 代替 Claude)
**问题:"Unexpected costs"**
**方案:**
1. 仪表盘 → 分析 → 查看使用情况
2. 设置每日/每月预算上限
3. 非关键任务切换到免费层
4. 使用带免费回退的组合
---
## 相关
- [组合](./combos.md) - 创建自定义回退链
- [配额跟踪](./quota-tracking.md) - 监控使用与成本

View File

@@ -0,0 +1,478 @@
# 安装
9Router 的详细安装指南,附故障排除技巧。
---
## 要求
### 系统要求
- **Node.js**:版本 20.0.0 或更高
- **npm**:版本 10.0.0 或更高(随 Node.js 安装)
- **OS**:macOS、Linux、Windows(推荐 WSL)
- **磁盘空间**:安装约需 200MB
### 查看版本
```bash
node --version
# 应显示 v20.x.x 或更高
npm --version
# 应显示 10.x.x 或更高
```
**没有 Node.js?** 从 [nodejs.org](https://nodejs.org/) 安装
---
## 安装方式
### 方式 1:全局安装(推荐)
全局安装,任何位置都能使用:
```bash
npm install -g 9router
```
**启动 9Router:**
```bash
9router
```
**优势:**
- ✅ 任意目录均可运行
- ✅ 命令简单:`9router`
- ✅ 通过 `npm update -g 9router` 自动更新
### 方式 2:本地安装
在特定项目中安装:
```bash
mkdir my-9router
cd my-9router
npm install 9router
```
**启动 9Router:**
```bash
npx 9router
```
**优势:**
- ✅ 项目隔离
- ✅ 项目级版本控制
- ✅ 不污染全局命名空间
### 方式 3:源码安装(开发用)
从 GitHub 克隆并构建:
```bash
git clone https://github.com/decolua/9router.git
cd 9router/app
npm install
npm run build
npm start
```
**优势:**
- ✅ 最新开发特性
- ✅ 可参与开发
- ✅ 可自定义修改
---
## 首次运行
### 启动服务器
```bash
9router
```
**发生了什么:**
1. 服务器启动在 `http://localhost:20128`
2. 仪表盘在浏览器中自动打开
3. 数据目录创建在 `~/.9router`
4. API key 自动生成
### 仪表盘登录
**默认凭据:**
- 密码:`123456`
**⚠️ 立即修改密码:**
1. 登录仪表盘
2. 设置 → 修改密码
3. 使用强密码
### 获取 API Key
```
仪表盘 → 设置 → API Keys
→ 复制你的 API key
→ 在 CLI 工具中使用
```
**API key 格式示例:**
```
9r_1234567890abcdef1234567890abcdef
```
---
## 验证安装
### 检查服务器状态
```bash
curl http://localhost:20128/health
```
**预期响应:**
```json
{
"status": "ok",
"version": "1.0.0"
}
```
### 列出可用模型
```bash
curl http://localhost:20128/v1/models \
-H "Authorization: Bearer your-api-key"
```
**预期响应:**
```json
{
"object": "list",
"data": [
{
"id": "cc/claude-opus-4-5-20251101",
"object": "model",
"created": 1234567890,
"owned_by": "claude-code"
}
]
}
```
### 测试 Chat Completion
```bash
curl http://localhost:20128/v1/chat/completions \
-H "Authorization: Bearer your-api-key" \
-H "Content-Type: application/json" \
-d '{
"model": "cc/claude-opus-4-5-20251101",
"messages": [
{"role": "user", "content": "Hello!"}
]
}'
```
---
## 配置
### 环境变量
创建 `.env` 文件或设置环境变量:
```bash
# Security (REQUIRED in production)
export JWT_SECRET="your-secure-secret-change-this"
export INITIAL_PASSWORD="your-password"
# Storage
export DATA_DIR="~/.9router"
# Server
export PORT="20128"
export NODE_ENV="production"
# Logging
export ENABLE_REQUEST_LOGS="false"
```
### 数据目录
**默认位置:** `~/.9router`
**内容:**
```
~/.9router/
├── db.json # 数据库(提供商、组合、使用)
├── api-keys.json # API keys
└── logs/ # 请求日志(若启用)
```
**修改位置:**
```bash
export DATA_DIR="/custom/path"
9router
```
### 端口配置
**默认端口:** `20128`
**修改端口:**
```bash
export PORT="3000"
9router
```
**或用命令行:**
```bash
9router --port 3000
```
---
## 故障排除
### 端口已被占用
**错误:**
```
Error: listen EADDRINUSE: address already in use :::20128
```
**方案 1:杀掉占用进程**
```bash
# 找到使用 20128 端口的进程
lsof -i :20128
# 杀掉进程
kill -9 <PID>
```
**方案 2:使用其他端口**
```bash
9router --port 3000
```
### 权限被拒绝
**错误:**
```
Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/9router'
```
**方案:使用 sudo(不推荐)或修复 npm 权限**
```bash
# 修复 npm 权限(推荐)
mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
# 然后重新安装
npm install -g 9router
```
### Node.js 版本过低
**错误:**
```
Error: The engine "node" is incompatible with this module
```
**方案:更新 Node.js**
```bash
# 使用 nvm(推荐)
nvm install 20
nvm use 20
# 或从 nodejs.org 下载
```
### 仪表盘无法打开
**问题:** 仪表盘没有自动打开
**方案 1:手动打开**
```
http://localhost:20128
```
**方案 2:检查防火墙**
```bash
# macOS: 在 System Preferences → Security 中允许 Node.js
# Linux: 检查 iptables
# Windows: 检查 Windows Firewall
```
### 无法连接提供商
**问题:** OAuth 登录失败或 API key 无效
**方案 1:检查网络连接**
```bash
ping google.com
```
**方案 2:检查提供商状态**
- Claude Code: [status.anthropic.com](https://status.anthropic.com)
- OpenAI: [status.openai.com](https://status.openai.com)
- Gemini: [status.cloud.google.com](https://status.cloud.google.com)
**方案 3:重新生成 API key**
```
仪表盘 → 提供商 → 断开 → 重新连接
```
### 内存占用过高
**问题:** 9Router 占用过多 RAM
**方案:重启服务器**
```bash
# 停止
pkill -f 9router
# 启动
9router
```
**或用 PM2 自动重启:**
```bash
npm install -g pm2
pm2 start 9router --name 9router
pm2 save
```
---
## 部署选项
### 本地开发
```bash
npm install -g 9router
9router
```
**适用场景:** 个人编码、测试
### VPS/云服务器
```bash
# 安装
npm install -g 9router
# 配置
export JWT_SECRET="your-secure-secret"
export INITIAL_PASSWORD="your-password"
export NODE_ENV="production"
# 用 PM2 启动
npm install -g pm2
pm2 start 9router --name 9router
pm2 save
pm2 startup
```
**适用场景:** 团队访问、远程编码
### Docker
```bash
docker pull 9router/9router:latest
docker run -d \
-p 20128:20128 \
-e JWT_SECRET="your-secure-secret" \
-e INITIAL_PASSWORD="your-password" \
-v 9router-data:/root/.9router \
--name 9router \
9router/9router:latest
```
**适用场景:** 容器化部署、Kubernetes
### 反向代理(Nginx)
```nginx
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://localhost:20128;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
# SSE support for streaming
proxy_buffering off;
proxy_read_timeout 86400;
}
}
```
**适用场景:** HTTPS、自定义域名、负载均衡
---
## 卸载
### 移除全局安装
```bash
npm uninstall -g 9router
```
### 移除数据目录
```bash
rm -rf ~/.9router
```
### 移除配置
```bash
# 从 shell 配置中移除环境变量
nano ~/.bashrc # 或 ~/.zshrc
# 删除 9router 相关的 export
```
---
## 下一步
- [入门指南](../getting-started.md) - 连接提供商并开始编码
- [功能特性](../features/) - 探索配额跟踪、组合、部署
- [故障排除](../troubleshooting.md) - 解决常见问题
---
## 需要帮助?
- **网站**: [9router.com](https://9router.com)
- **GitHub**: [github.com/decolua/9router](https://github.com/decolua/9router)
- **Issues**: [github.com/decolua/9router/issues](https://github.com/decolua/9router/issues)

View File

@@ -0,0 +1,247 @@
# 入门指南
5 分钟启动 9Router,开始智能路由 AI 请求。
---
## 快速开始
### 1. 安装
```bash
npm install -g 9router
```
**要求:** Node.js 20+([安装详情](getting-started/installation.md))
### 2. 启动
```bash
9router
```
🎉 **仪表盘自动打开** 地址为 `http://localhost:20128`
- 默认密码:`123456`(在仪表盘中修改)
- API key 自动生成
- 可立即连接提供商
### 3. 连接提供商
有 3 种方式连接提供商:
#### 方式 A:OAuth(订阅型提供商)
**适用于:** Claude Code、Codex、Gemini CLI、GitHub Copilot
```
仪表盘 → 提供商 → 连接 [提供商]
→ OAuth 登录 → 自动刷新 token
→ 启用配额跟踪
```
**示例:Claude Code**
1. 点击 "Connect Claude Code"
2. 用你的 Claude 账户登录
3. 授权 9Router
4. ✅ 完成!使用模型:`cc/claude-opus-4-5-20251101`
#### 方式 B:API Key(低价提供商)
**适用于:** GLM、MiniMax、Kimi、OpenRouter
```
仪表盘 → 提供商 → 添加 API Key
→ 选择提供商
→ 粘贴 API key
→ 保存
```
**示例:GLM-4.7**
1. 在 [Zhipu AI](https://open.bigmodel.cn/) 注册
2. 从 Coding Plan 获取 API key
3. 仪表盘 → 添加 API Key → 提供商:`glm` → 粘贴 key
4. ✅ 完成!使用模型:`glm/glm-4.7`
#### 方式 C:免费提供商(零成本)
**适用于:** iFlow、Qwen、Kiro
```
仪表盘 → 提供商 → 连接 [免费提供商]
→ 设备码或 OAuth
→ 无限使用
```
**示例:iFlow**
1. 点击 "Connect iFlow"
2. 用 iFlow 账户登录
3. 授权
4. ✅ 完成!使用 8 个模型:`if/kimi-k2-thinking`、`if/qwen3-coder-plus` 等
---
## 4. 在 CLI 工具中使用
将你的编码工具指向 9Router:
### Cursor IDE
```
Settings → Models → Advanced:
OpenAI API Base URL: http://localhost:20128/v1
OpenAI API Key: [从 9router 仪表盘获取]
Model: cc/claude-opus-4-5-20251101
```
### Claude Desktop
编辑 `~/.claude/config.json`:
```json
{
"anthropic_api_base": "http://localhost:20128/v1",
"anthropic_api_key": "your-9router-api-key"
}
```
### Cline / Continue / RooCode
```
Provider: OpenAI Compatible
Base URL: http://localhost:20128/v1
API Key: [从仪表盘获取]
Model: cc/claude-opus-4-5-20251101
```
### Codex CLI
```bash
export OPENAI_BASE_URL="http://localhost:20128"
export OPENAI_API_KEY="your-9router-api-key"
codex "your prompt"
```
---
## 5. 创建智能组合(可选)
组合(Combos)可在多个模型之间实现自动回退:
```
仪表盘 → 组合 → 新建
名称: premium-coding
模型:
1. cc/claude-opus-4-5-20251101 (订阅主力)
2. glm/glm-4.7 (低价备用, $0.6/1M)
3. if/kimi-k2-thinking (免费回退)
CLI 中使用: premium-coding
```
**工作原理:**
1. 先尝试 Claude Opus(你的订阅)
2. 配额耗尽 → GLM-4.7(超低价)
3. 预算上限 → iFlow(免费)
4. 零停机,自动切换!
---
## 可用模型
### 订阅型模型(优先使用)
**Claude Code (`cc/`)** - Pro/Max 订阅:
- `cc/claude-opus-4-5-20251101` - Claude 4.5 Opus
- `cc/claude-sonnet-4-5-20250929` - Claude 4.5 Sonnet
- `cc/claude-haiku-4-5-20251001` - Claude 4.5 Haiku
**Codex (`cx/`)** - Plus/Pro 订阅:
- `cx/gpt-5.2-codex` - GPT 5.2 Codex
- `cx/gpt-5.1-codex-max` - GPT 5.1 Codex Max
**Gemini CLI (`gc/`)** - 每月免费 180K:
- `gc/gemini-3-flash-preview` - Gemini 3 Flash Preview
- `gc/gemini-2.5-pro` - Gemini 2.5 Pro
**GitHub Copilot (`gh/`)** - 订阅:
- `gh/gpt-5` - GPT-5
- `gh/claude-4.5-sonnet` - Claude 4.5 Sonnet
### 低价模型(备用)
**GLM (`glm/`)** - 每 1M $0.6/$2.2:
- `glm/glm-4.7` - GLM 4.7(每日 10AM 重置)
**MiniMax (`minimax/`)** - 每 1M $0.20/$1.00:
- `minimax/MiniMax-M2.1` - MiniMax M2.1(5h 重置)
**Kimi (`kimi/`)** - $9/月(10M tokens):
- `kimi/kimi-latest` - Kimi Latest
### 免费模型(应急)
**iFlow (`if/`)** - 8 个免费模型:
- `if/kimi-k2-thinking` - Kimi K2 Thinking
- `if/qwen3-coder-plus` - Qwen3 Coder Plus
- `if/glm-4.7` - GLM 4.7
- `if/deepseek-r1` - DeepSeek R1
**Qwen (`qw/`)** - 3 个免费模型:
- `qw/qwen3-coder-plus` - Qwen3 Coder Plus
- `qw/qwen3-coder-flash` - Qwen3 Coder Flash
**Kiro (`kr/`)** - 2 个免费模型:
- `kr/claude-sonnet-4.5` - Claude Sonnet 4.5
- `kr/claude-haiku-4.5` - Claude Haiku 4.5
---
## 成本优化策略
### 月度预算:$10-20/月
```
1. 用 Gemini CLI 免费层(每月 180K)处理快速任务
2. 用足 Claude Code 订阅配额(你已经付费了)
3. 配额用完后回退到 GLM(每 1M $0.6)
4. 应急: MiniMax M2.1(每 1M $0.20)或 iFlow(免费)
真实案例(每月 100M tokens):
60M 通过 Gemini CLI: $0(免费层)
30M 通过 Claude Code: $0(你已有的订阅)
8M 通过 GLM: $4.80
2M 通过 MiniMax: $0.40
合计: $5.20/月 + 已有订阅
```
### 配额重置策略
```
日常安排:
1. 早上: 全新的 Claude Code 配额(5h 重置)
2. 下午: 切换到 Gemini CLI(每日 1K)
3. 晚上: GLM 每日配额(次日 10AM 重置)
4. 深夜: MiniMax(5h 滚动)或 iFlow(免费)
→ 24/7 编码,几乎零额外成本!
```
---
## 下一步
- [安装详情](getting-started/installation.md) - 要求与故障排除
- [功能特性](features/) - 探索配额跟踪、组合、部署
- [常见问题](faq.md) - 常见问题与解答
- [故障排除](troubleshooting.md) - 解决常见问题
---
## 需要帮助?
- **网站**: [9router.com](https://9router.com)
- **GitHub**: [github.com/decolua/9router](https://github.com/decolua/9router)
- **Issues**: [github.com/decolua/9router/issues](https://github.com/decolua/9router/issues)

View File

@@ -0,0 +1,164 @@
# 欢迎使用 9Router
**免费使用 Claude、Codex、Gemini • 超低价替代方案,每 1M token 仅需 $0.20**
9Router 是一款 AI 模型路由工具,通过智能路由和自动回退机制,最大化你的订阅价值并最小化成本。
---
## 什么是 9Router?
9Router 是一款智能代理,位于你的编码工具(Cursor、Cline、Claude Desktop)与 AI 提供商之间。它会根据配额、成本和可用性,自动将请求路由到最合适的模型。
**告别浪费:**
- ❌ 订阅配额每月未用完就过期
- ❌ 速率限制让你写代码写到一半被卡住
- ❌ 昂贵的 API(每个提供商每月 $20-50)
- ❌ 在不同提供商之间手动切换
**开始最大化价值:**
- ✅ **充分利用订阅** - 跟踪并用完 Claude Code、Codex、Gemini 的每一点配额
- ✅ **免费可用** - 通过 CLI 访问 iFlow、Qwen、Kiro 模型
- ✅ **超低价备用** - GLM(每 1M $0.6)、MiniMax M2.1(每 1M $0.20)
- ✅ **智能回退** - 订阅 → 低价 → 免费,自动切换
---
## 核心特性
### 🔄 智能三层回退
```
一次配置,永不停码:
第 1 层(订阅): Claude Code → Codex → Gemini
↓ 配额耗尽
第 2 层(低价): GLM-4.7 → MiniMax M2.1 → Kimi
↓ 预算上限
第 3 层(免费): iFlow → Qwen → Kiro
→ 自动切换,零停机!
```
### 📊 配额跟踪
- 每个提供商的实时 token 消耗
- 重置倒计时(5 小时、每日、每周、每月)
- 付费层级的成本估算
- 每月支出报告
### 🎯 通用 CLI 支持
适用于所有支持自定义 OpenAI endpoint 的工具:
✅ **Cursor** • **Cline** • **Claude Desktop** • **Codex** • **RooCode** • **Continue** • **任何 OpenAI 兼容工具**
### 💰 成本优化
**真实案例(每月 100M tokens):**
```
60M 通过 Gemini CLI: $0(免费层)
30M 通过 Claude Code: $0(你已有的订阅)
8M 通过 GLM: $4.80
2M 通过 MiniMax: $0.40
合计: $5.20/月,而 ChatGPT API 需要 $2000!
```
---
## 为什么选择 9Router?
### 最大化订阅价值
已经在为 Claude Code(每月 $20-100)或 Codex(每月 $20-200)付费?那就用足它:
- 实时跟踪配额使用
- 配额重置时(5 小时、每周)自动切换
- 在过期前用掉每一个 token
- Gemini CLI:每月 180K 次补全 **免费**
### 超低价备用
订阅配额用完时,只需花几分钱:
| 提供商 | 每 1M tokens 成本 | 重置时间 |
|----------|-------------------|-------|
| **GLM-4.7** | 输入 $0.60 / 输出 $2.20 | 每日 10:00 AM |
| **MiniMax M2.1** | 输入 $0.20 / 输出 $1.00 | 5 小时滚动 |
| **Kimi K2** | $9/月(10M tokens) | 每月 |
**比 ChatGPT API(每 1M $20)便宜约 90%!**
### 永久免费回退
当其他一切都受配额限制时的应急备用:
- **iFlow**:8 个模型(Kimi K2、Qwen3 Coder Plus、GLM 4.7、MiniMax M2)
- **Qwen**:3 个模型(Qwen3 Coder Plus/Flash、Vision)
- **Kiro**:Claude Sonnet 4.5、Haiku 4.5(AWS Builder ID)
---
## 快速开始
2 分钟即可上手:
```bash
# 全局安装
npm install -g 9router
# 启动(仪表盘自动打开)
9router
```
🎉 **仪表盘自动打开** → 连接提供商 → 开始编码!
**在你的 CLI 工具中使用:**
```
Endpoint: http://localhost:20128/v1
API Key: [从仪表盘获取]
Model: cc/claude-opus-4-5-20251101
```
[→ 完整入门指南](getting-started.md)
---
## 使用场景
### 个人开发者
- 最大化你的 Claude Code/Codex 订阅
- 使用 Gemini CLI 免费层(每月 180K)
- 回退到超低价模型(每 1M $0.20)
- 24/7 编码不受速率限制
### 团队
- 部署在 VPS/云服务器上共享访问
- 实时跟踪团队支出
- 为每层设置预算上限
- 集中管理提供商
### 移动/远程编码
- 使用云端部署(https://9router.com)
- 从 iPad、手机、任何地方访问
- 没有 localhost 限制
- Cloudflare 边缘网络(300+ 节点)
---
## 接下来做什么?
- [入门指南](getting-started.md) - 5 分钟内完成安装和配置
- [安装指南](getting-started/installation.md) - 详细的设置说明
- [功能特性](features/) - 探索所有能力
- [常见问题](faq.md) - 常见问题解答
---
<div align="center">
<sub>用 ❤️ 为最大化 AI 价值的开发者打造</sub>
</div>

View File

@@ -0,0 +1,109 @@
# Claude Code 集成
将 9Router 与 Claude Code CLI 集成,通过 9Router 的智能路由系统转发你的 Anthropic API 请求。
## 前置要求
- 已安装 Claude Code CLI
- 9Router 本地运行或已配置云端 endpoint
- 来自 9Router 仪表盘的 API key
## 设置
### 1. 配置环境变量
在 shell 配置文件(`~/.bashrc`、`~/.zshrc` 或 `~/.bash_profile`)中设置以下环境变量:
```bash
# 9Router 的 Base URL
export ANTHROPIC_BASE_URL="http://localhost:20128/v1"
# 可选: 为别名设置默认模型
export ANTHROPIC_DEFAULT_OPUS_MODEL="cc/claude-opus-4-5-20251101"
export ANTHROPIC_DEFAULT_SONNET_MODEL="cc/claude-sonnet-4-5-20250929"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="cc/claude-haiku-4-5-20251001"
```
### 2. 重新加载 Shell 配置
```bash
source ~/.zshrc # 或 ~/.bashrc
```
### 3. 验证配置
检查环境变量是否设置正确:
```bash
echo $ANTHROPIC_BASE_URL
```
## 模型别名
Claude Code 支持以下模型别名,映射到 9Router 模型:
| 别名 | 模型 | 环境变量 |
|-------|-------|---------------------|
| `opus` | Claude Opus 4.5 | `ANTHROPIC_DEFAULT_OPUS_MODEL` |
| `sonnet` | Claude Sonnet 4.5 | `ANTHROPIC_DEFAULT_SONNET_MODEL` |
| `haiku` | Claude Haiku 4.5 | `ANTHROPIC_DEFAULT_HAIKU_MODEL` |
## 使用示例
### 使用模型别名
```bash
# 使用 Opus 模型
claude --model opus "Explain quantum computing"
# 使用 Sonnet 模型
claude --model sonnet "Write a Python function"
# 使用 Haiku 模型
claude --model haiku "Quick code review"
```
### 使用完整模型名
```bash
claude --model cc/claude-opus-4-5-20251101 "Your prompt here"
```
## 配置文件
Claude Code 将配置存储在 `~/.claude/settings.json`。如有需要可手动编辑:
```json
{
"baseUrl": "http://localhost:20128/v1",
"defaultModel": "sonnet"
}
```
## 故障排除
### 连接问题
遇到连接错误时:
1. 确认 9Router 正在运行:`curl http://localhost:20128/health`
2. 检查环境变量设置是否正确
3. 确保防火墙没有阻止 20128 端口
### 模型未找到
出现 "model not found" 错误时:
1. 确认模型名与 9Router 配置一致
2. 检查 9Router 仪表盘中提供商连接是否激活
3. 确认所连接的提供商中包含该模型
## 云端 Endpoint
使用 9Router 云端 endpoint 而非 localhost:
```bash
export ANTHROPIC_BASE_URL="https://9router.com"
```
确保已在 9Router 云端仪表盘中配置 API key。

View File

@@ -0,0 +1,201 @@
# Cline 集成
将 9Router 与 Cline VSCode 扩展集成,通过 9Router 的智能路由系统转发你的 AI 请求。
## 前置要求
- 已安装 Visual Studio Code
- 从 VSCode 市场安装了 Cline 扩展
- 9Router 本地运行或已配置云端 endpoint
- 来自 9Router 仪表盘的 API key
## 设置
### 1. 打开 Cline 设置
1. 打开 Visual Studio Code
2. 打开 Cline 扩展面板(点击侧边栏的 Cline 图标)
3. 点击 Cline 面板中的 **Settings**(齿轮图标)
### 2. 选择 API Provider
1. 在 Cline 设置中找到 **API Provider** 下拉菜单
2. 从列表中选择 **Ollama**
- 注意:我们使用 Ollama provider 类型,因为它与 OpenAI 风格 API 兼容
### 3. 配置 Base URL
将 base URL 设为你的 9Router endpoint:
**本地 9Router:**
```
http://localhost:20128/v1
```
**云端 9Router:**
```
https://9router.com
```
**步骤:**
1. 在 **Base URL** 字段中输入你的 9Router endpoint
2. 末尾必须包含 `/v1`
### 4. 添加 API Key
1. 在 **API Key** 字段中输入你的 9Router API key
2. 可在 9Router 仪表盘 **Settings → API Keys** 中找到 API key
3. key 应以 `sk-9router-` 开头
### 5. 选择模型
1. 在 **Model** 下拉菜单中,可以:
- 从可用模型中选择(若 Cline 自动检测)
- 或手动输入 9Router 配置中的模型名
2. 常见模型名:
- `gpt-4`
- `gpt-4o`
- `claude-opus-4-5`
- `claude-sonnet-4-5`
- `gemini-2.0-flash`
### 6. 保存配置
点击 **Save** 或关闭设置面板。Cline 会自动保存你的配置。
## 配置示例
你的 Cline 设置应如下所示:
```
API Provider: Ollama
Base URL: http://localhost:20128/v1
API Key: sk-9router-xxxxxxxxxxxxx
Model: gpt-4
```
## 可用模型
你可以使用 9Router 仪表盘中配置的任意模型。常见示例:
| 模型名 | 提供商 | 描述 |
|------------|----------|-------------|
| `gpt-4` | OpenAI | GPT-4 Turbo |
| `gpt-4o` | OpenAI | GPT-4 Optimized |
| `claude-opus-4-5` | Anthropic | Claude Opus 4.5 |
| `claude-sonnet-4-5` | Anthropic | Claude Sonnet 4.5 |
| `gemini-2.0-flash` | Google | Gemini 2.0 Flash |
## 使用
### 与 AI 对话
1. 在 VSCode 中打开 Cline 面板
2. 在聊天输入框中输入消息
3. 按 Enter 发送
4. Cline 会通过 9Router 处理你的请求
### 生成代码
1. 让 Cline 生成代码:"创建一个登录表单的 React 组件"
2. Cline 会通过 9Router 生成代码
3. 检查并接受生成的代码
### 代码解释
1. 在编辑器中选中代码
2. 让 Cline:"解释这段代码"
3. 通过 9Router 获得 AI 驱动的解释
### 文件操作
1. 让 Cline 创建、修改或删除文件
2. Cline 会通过 9Router 理解上下文并进行修改
3. 在接受前检查变更
## 故障排除
### "Connection Failed" 错误
1. 确认 9Router 正在运行:`curl http://localhost:20128/health`
2. 确认 base URL 正确且包含 `/v1`
3. 确保防火墙没有阻止 20128 端口
4. 尝试重启 VSCode
### "Invalid API Key" 错误
1. 在 9Router 仪表盘中确认 API key
2. 确保复制了包含 `sk-9router-` 前缀在内的完整 key
3. 检查 API key 是否过期
4. 尝试重新生成 API key
### "Model Not Found" 错误
1. 确认模型名与 9Router 配置完全一致
2. 检查 9Router 仪表盘中提供商连接是否激活
3. 确认连接的提供商中包含该模型
4. 尝试使用完整模型名(例如用 `openai/gpt-4` 代替 `gpt-4`)
### Cline 无响应
1. 查看 Cline 输出面板中的错误信息
2. 确认 9Router 实例正在运行且健康
3. 重新加载 VSCode 窗口(Cmd/Ctrl + Shift + P → "Reload Window")
4. 检查 9Router 日志是否有错误
## 高级配置
### 使用云端 Endpoint
使用 9Router 云端 endpoint 而非 localhost:
1. 在 Cline 设置中将 Base URL 设为:`https://9router.com`
2. 确保已在 9Router 云端仪表盘中配置 API key
3. 确保云端 endpoint 已激活且可访问
### 多个模型
可以快速切换模型:
1. 打开 Cline 设置
2. 将 **Model** 字段改为另一个模型
3. 保存并继续使用新模型对话
### 自定义超时
如果大请求出现超时:
1. 打开 VSCode 设置(Cmd/Ctrl + ,)
2. 搜索 "Cline timeout"
3. 提高超时值(默认通常为 30 秒)
## 最佳实践
1. **使用合适的模型**:简单任务用更快的模型(如 Haiku 或 Flash),复杂任务用更强的模型(如 Opus 或 GPT-4)
2. **监控使用**:在 9Router 仪表盘查看用量统计和成本
3. **管理上下文**:保持对话聚焦以减少 token 用量
4. **切换模型**:根据任务复杂度切换模型,优化成本和性能
5. **API Key 安全**:绝不将 API key 提交到版本控制
## 与 9Router 功能的集成
### 模型路由
9Router 会根据以下因素自动将请求路由到最佳提供商:
- 模型可用性
- 提供商健康状态
- 成本优化
- 负载均衡
### 回退支持
某个提供商失败时,9Router 会自动回退到仪表盘中配置的备用提供商。
### 使用跟踪
通过 9Router 仪表盘监控你的 Cline 使用:
- 请求总数
- Token 使用
- 每个模型的成本
- 提供商分布

View File

@@ -0,0 +1,136 @@
# OpenAI Codex CLI 集成
将 9Router 与 OpenAI Codex CLI 集成,通过 9Router 的智能路由系统转发你的 OpenAI API 请求。
## 前置要求
- 已安装 OpenAI Codex CLI
- 9Router 本地运行或已配置云端 endpoint
- 来自 9Router 仪表盘的 API key
## 设置
### 1. 配置环境变量
在 shell 配置文件(`~/.bashrc`、`~/.zshrc` 或 `~/.bash_profile`)中设置以下环境变量:
```bash
# 9Router 的 Base URL
export OPENAI_BASE_URL="http://localhost:20128/v1"
# 来自 9Router 仪表盘的 API Key
export OPENAI_API_KEY="your-9router-api-key"
```
### 2. 重新加载 Shell 配置
```bash
source ~/.zshrc # 或 ~/.bashrc
```
### 3. 验证配置
检查环境变量是否设置正确:
```bash
echo $OPENAI_BASE_URL
echo $OPENAI_API_KEY
```
## 可用模型
9Router 提供以下 Codex 模型:
| 模型 ID | 描述 |
|----------|-------------|
| `cx/gpt-5.2-codex` | GPT-5.2 Codex - 最新版本 |
| `cx/gpt-5.1-codex-max` | GPT-5.1 Codex Max - 扩展上下文 |
## 使用示例
### 基础用法
```bash
# 使用 GPT-5.2 Codex
codex --model cx/gpt-5.2-codex "Write a function to sort an array"
# 使用 GPT-5.1 Codex Max
codex --model cx/gpt-5.1-codex-max "Explain this complex algorithm"
```
### 代码生成
```bash
codex --model cx/gpt-5.2-codex "Create a REST API endpoint for user authentication"
```
### 代码解释
```bash
codex --model cx/gpt-5.1-codex-max "Explain what this code does: $(cat myfile.js)"
```
## 配置文件
也可以通过配置文件配置 Codex CLI。创建或编辑 `~/.codex/config.json`:
```json
{
"baseUrl": "http://localhost:20128/v1",
"apiKey": "your-9router-api-key",
"defaultModel": "cx/gpt-5.2-codex"
}
```
## 故障排除
### 认证错误
遇到认证错误时:
1. 在 9Router 仪表盘中确认 API key 正确
2. 检查 `OPENAI_API_KEY` 环境变量已设置
3. 确认 API key 未过期
### 连接问题
遇到连接错误时:
1. 确认 9Router 正在运行:`curl http://localhost:20128/health`
2. 检查环境变量设置是否正确
3. 确保防火墙没有阻止 20128 端口
### 模型不可用
出现 "model not available" 错误时:
1. 确认模型名与 9Router 配置一致
2. 检查 9Router 仪表盘中 OpenAI 提供商连接是否激活
3. 确认连接的提供商中包含该模型
## 云端 Endpoint
使用 9Router 云端 endpoint 而非 localhost:
```bash
export OPENAI_BASE_URL="https://9router.com"
```
确保已在 9Router 云端仪表盘中配置 API key。
## 高级配置
### 自定义超时
```bash
export OPENAI_TIMEOUT=60 # 秒
```
### Debug 模式
启用 debug 模式查看详细请求/响应日志:
```bash
export CODEX_DEBUG=true
codex --model cx/gpt-5.2-codex "Your prompt"
```

View File

@@ -0,0 +1,249 @@
# Continue VSCode 扩展集成
将 9Router 与 Continue 扩展集成,直接在 Visual Studio Code 中获得 AI 协助。
## 前置要求
- 已安装 Visual Studio Code
- 从 VSCode 市场安装了 Continue 扩展
- 来自 [仪表盘](https://9router.com/dashboard) 的 9Router API key
- 9Router 正在运行(本地或云端)
## 配置步骤
### 1. 打开 Continue 配置
1. 打开 VSCode
2. 按 `Cmd+Shift+P` (Mac) 或 `Ctrl+Shift+P` (Windows/Linux)
3. 输入 "Continue: Open Config" 并选择
4. 这会打开 `~/.continue/config.json`
### 2. 添加 9Router 模型配置
将以下配置添加到 `config.json`:
**单模型设置:**
```json
{
"models": [
{
"title": "9Router - Claude Opus",
"provider": "openai",
"model": "cc/claude-opus-4-5-20251101",
"apiKey": "your-api-key-from-dashboard",
"apiBase": "http://localhost:20128/v1"
}
]
}
```
**多模型设置:**
```json
{
"models": [
{
"title": "9Router - Claude Opus (Best)",
"provider": "openai",
"model": "cc/claude-opus-4-5-20251101",
"apiKey": "your-api-key-from-dashboard",
"apiBase": "http://localhost:20128/v1"
},
{
"title": "9Router - Claude Sonnet (Balanced)",
"provider": "openai",
"model": "cc/claude-sonnet-4-20250514",
"apiKey": "your-api-key-from-dashboard",
"apiBase": "http://localhost:20128/v1"
},
{
"title": "9Router - DeepSeek Chat (Code)",
"provider": "openai",
"model": "cx/deepseek-chat",
"apiKey": "your-api-key-from-dashboard",
"apiBase": "http://localhost:20128/v1"
},
{
"title": "9Router - Claude Haiku (Fast)",
"provider": "openai",
"model": "cc/claude-haiku-4-20250514",
"apiKey": "your-api-key-from-dashboard",
"apiBase": "http://localhost:20128/v1"
}
]
}
```
**云端 9Router:**
将 `apiBase` 替换为:
```json
"apiBase": "https://9router.com/v1"
```
### 3. 保存并重新加载
1. 保存配置文件
2. 重新加载 VSCode 窗口:`Cmd+Shift+P` → "Developer: Reload Window"
3. Continue 扩展会加载新配置
### 4. 选择模型
1. 打开 Continue 侧边栏(点击左侧 Continue 图标)
2. 点击顶部模型选择下拉菜单
3. 选择你偏好的 9Router 模型
## 可用模型
### Claude 模型(Anthropic)
- `cc/claude-opus-4-5-20251101` - 最强,适合复杂任务
- `cc/claude-sonnet-4-20250514` - 性能与速度平衡
- `cc/claude-haiku-4-20250514` - 最快,适合简单任务
### DeepSeek 模型
- `cx/deepseek-chat` - 出色的代码生成
- `cx/deepseek-reasoner` - 复杂问题求解
### GLM 模型(Zhipu AI)
- `glm/glm-4-plus` - 高级中文与英文
- `glm/glm-4-flash` - 快速响应
## 使用示例
### 代码解释
1. 在编辑器中选中代码
2. 打开 Continue 侧边栏
3. 输入:"Explain this code"
4. 模型:`cc/claude-sonnet-4-20250514`
### 代码生成
1. 打开 Continue 侧边栏
2. 输入:"Create a React component for user profile card"
3. 模型:`cx/deepseek-chat`
### 重构
1. 选中要重构的代码
2. 输入:"Refactor this to use async/await"
3. 模型:`cc/claude-sonnet-4-20250514`
### Bug 修复
1. 选中有问题的代码
2. 输入:"Find and fix the bug in this code"
3. 模型:`cx/deepseek-reasoner`
## 高级配置
### 自定义系统 Prompt
为特定行为添加自定义系统 prompt:
```json
{
"models": [
{
"title": "9Router - Code Expert",
"provider": "openai",
"model": "cx/deepseek-chat",
"apiKey": "your-api-key",
"apiBase": "http://localhost:20128/v1",
"systemMessage": "You are an expert programmer. Always provide clean, well-documented code with best practices."
}
]
}
```
### Temperature 与参数
通过参数调整模型行为:
```json
{
"models": [
{
"title": "9Router - Creative Writer",
"provider": "openai",
"model": "cc/claude-opus-4-5-20251101",
"apiKey": "your-api-key",
"apiBase": "http://localhost:20128/v1",
"temperature": 0.9,
"topP": 0.95
}
]
}
```
### Context Provider
配置 Continue 发送给模型的上下文:
```json
{
"contextProviders": [
{
"name": "code",
"params": {
"maxLines": 100
}
},
{
"name": "diff",
"params": {}
},
{
"name": "terminal",
"params": {}
}
]
}
```
## 键盘快捷键
- `Cmd+L` (Mac) / `Ctrl+L` (Windows/Linux) - 打开 Continue 聊天
- `Cmd+I` (Mac) / `Ctrl+I` (Windows/Linux) - 内联编辑
- `Cmd+Shift+R` (Mac) / `Ctrl+Shift+R` (Windows/Linux) - 重新生成响应
## 故障排除
### 模型无响应
- 确认 9Router 正在运行:`curl http://localhost:20128/health`
- 检查 config.json 中的 API key
- 查看 VSCode 开发者控制台错误:`Help` → `Toggle Developer Tools`
### 选错模型
- 点击 Continue 侧边栏的模型下拉菜单
- 选择正确的 9Router 模型
- 模型名必须完全匹配(大小写敏感)
### 配置未加载
- 确认 JSON 语法有效(使用 JSON 验证工具)
- 检查文件位置:`~/.continue/config.json`
- 修改后重新加载 VSCode 窗口
### 性能缓慢
- 切换到更快的模型(haiku、flash)
- 在 contextProviders 中减少上下文大小
- 检查到 9Router 的网络延迟
## 最佳实践
### 模型选择策略
- **快速编辑**:使用 `cc/claude-haiku-4-20250514`
- **代码生成**:使用 `cx/deepseek-chat`
- **复杂重构**:使用 `cc/claude-opus-4-5-20251101`
- **问题求解**:使用 `cx/deepseek-reasoner`
### 上下文管理
- 提问前只选中相关代码
- 使用具体、清晰的 prompt
- 将复杂任务拆分为小步骤
### 成本优化
- 简单任务使用更快/更便宜的模型
- 尽可能限制上下文大小
- 缓存常用响应
## 下一步
- [配置 Cursor](cursor.md) 以增强 IDE 集成
- [设置 Roo](roo.md) AI 助手
- [探索 CLI 用法](../cli/basic-usage.md)
- [了解模型选择](../models/overview.md)

View File

@@ -0,0 +1,149 @@
# Cursor 集成
将 9Router 与 Cursor IDE 集成,通过 9Router 的智能路由系统转发你的 AI 请求。
## 前置要求
- 已安装 Cursor IDE
- Cursor Pro 账户(使用自定义 API endpoint 必需)
- 已配置 9Router 云端 endpoint
- 来自 9Router 仪表盘的 API key
## ⚠️ 重要说明
> **必须使用云端 Endpoint**:Cursor 会通过自己的服务器转发请求,不支持 localhost endpoint。你必须使用 9Router 云端 endpoint:`https://9router.com`
> **必须有 Cursor Pro**:此功能需要 Cursor Pro 账户才能使用自定义 API endpoint。
## 设置
### 1. 打开 Cursor 设置
1. 打开 Cursor IDE
2. 进入 **Settings**(Cmd/Ctrl + ,)
3. 导航到 **Models** 部分
### 2. 启用 OpenAI API
1. 找到 **OpenAI API key** 选项
2. 启用开关以激活自定义 API 配置
### 3. 配置 Base URL
将 base URL 设为 9Router 云端 endpoint:
```
https://9router.com
```
**步骤:**
1. 在 Models 设置中找到 **Base URL** 字段
2. 输入:`https://9router.com`
3. 点击 **Save**
### 4. 添加 API Key
1. 在 **API Key** 字段中输入你的 9Router API key
2. 可在 9Router 仪表盘 **Settings → API Keys** 中找到 API key
3. 点击 **Save**
### 5. 添加自定义模型
1. 点击 **View All Models** 按钮
2. 点击 **Add Custom Model**
3. 输入 9Router 配置中的模型名(例如 `gpt-4`、`claude-opus-4-5` 等)
4. 点击 **Add**
### 6. 选择模型
1. 在 Cursor 聊天界面,点击模型选择下拉菜单
2. 从列表中选择你的自定义模型
3. 开始在 Cursor 中使用 9Router!
## 配置示例
你的 Cursor 设置应如下所示:
```
OpenAI API: ✓ 已启用
Base URL: https://9router.com
API Key: sk-9router-xxxxxxxxxxxxx
Custom Models: gpt-4, claude-opus-4-5, gemini-2.0-flash
```
## 可用模型
你可以使用 9Router 仪表盘中配置的任意模型。常见示例:
| 模型名 | 提供商 | 描述 |
|------------|----------|-------------|
| `gpt-4` | OpenAI | GPT-4 Turbo |
| `gpt-4o` | OpenAI | GPT-4 Optimized |
| `claude-opus-4-5` | Anthropic | Claude Opus 4.5 |
| `claude-sonnet-4-5` | Anthropic | Claude Sonnet 4.5 |
| `gemini-2.0-flash` | Google | Gemini 2.0 Flash |
## 使用
### 聊天界面
1. 打开 Cursor 聊天(Cmd/Ctrl + L)
2. 从下拉菜单中选择模型
3. 通过 9Router 与 AI 对话
### 内联代码生成
1. 在编辑器中选中代码
2. 按 Cmd/Ctrl + K
3. 输入 prompt
4. Cursor 会通过 9Router 生成代码
### 代码解释
1. 在编辑器中选中代码
2. 按 Cmd/Ctrl + L
3. 询问 "Explain this code"
4. 通过 9Router 获得 AI 驱动的解释
## 故障排除
### "Invalid API Key" 错误
1. 在 9Router 仪表盘中确认 API key
2. 确保复制了包含 `sk-9router-` 前缀在内的完整 key
3. 检查 API key 是否过期
4. 尝试重新生成 API key
### "Model Not Found" 错误
1. 确认模型名与 9Router 配置完全一致
2. 检查 9Router 仪表盘中提供商连接是否激活
3. 确认连接的提供商中包含该模型
4. 尝试使用完整模型名(例如用 `openai/gpt-4` 代替 `gpt-4`)
### 连接问题
1. 确认使用的是云端 endpoint:`https://9router.com`
2. 检查网络连接
3. 确认 9Router 云端服务运行正常
4. 若启用了 VPN 或代理,尝试关闭
### Localhost 无法使用
> **请记住**:Cursor 不支持 localhost endpoint。你必须使用云端 endpoint `https://9router.com`。如果需要使用本地 9Router 实例,可以考虑使用 ngrok 之类的隧道服务把本地 endpoint 暴露到公网。
## 云端 Endpoint 设置
如果你在本地运行 9Router 并希望搭配 Cursor 使用:
1. 在 9Router 设置中启用云端 endpoint
2. 在 9Router 仪表盘中配置云端 endpoint URL
3. 在 Cursor 设置中使用该云端 URL
4. 确保本地 9Router 实例可从互联网访问
## 最佳实践
1. **使用模型别名**:为常用模型在 9Router 中创建简短别名
2. **监控使用**:在 9Router 仪表盘查看用量统计和成本
3. **轮换 API Keys**:为安全起见定期轮换 API key
4. **测试模型**:尝试不同模型,找到最适合你场景的那个

View File

@@ -0,0 +1,416 @@
# 其他工具集成
9Router 兼容任何支持 OpenAI API 格式的工具。本指南介绍各种工具和自定义应用的通用集成模式。
## 概览
9Router 提供 OpenAI 兼容的 API endpoint,可与以下场景配合使用:
- 自定义脚本与应用
- API 客户端与测试工具
- CLI 工具与实用程序
- 第三方集成
- 开发框架
## 通用设置模式
任何 OpenAI 兼容的工具都可以通过以下设置连接到 9Router:
**本地 9Router:**
```
Base URL: http://localhost:20128/v1
API Key: your-api-key-from-dashboard
Model: 任意 9Router 模型(cc/*, cx/*, glm/*, 等)
```
**云端 9Router:**
```
Base URL: https://9router.com/v1
API Key: your-api-key-from-dashboard
Model: 任意 9Router 模型(cc/*, cx/*, glm/*, 等)
```
## 可用模型
### Claude 模型(Anthropic)
- `cc/claude-opus-4-5-20251101`
- `cc/claude-sonnet-4-20250514`
- `cc/claude-haiku-4-20250514`
### DeepSeek 模型
- `cx/deepseek-chat`
- `cx/deepseek-reasoner`
### GLM 模型(Zhipu AI)
- `glm/glm-4-plus`
- `glm/glm-4-flash`
## 集成示例
### Python 使用 OpenAI SDK
```python
from openai import OpenAI
client = OpenAI(
api_key="your-api-key-from-dashboard",
base_url="http://localhost:20128/v1"
)
response = client.chat.completions.create(
model="cc/claude-sonnet-4-20250514",
messages=[
{"role": "user", "content": "Hello, how are you?"}
]
)
print(response.choices[0].message.content)
```
### Node.js 使用 OpenAI SDK
```javascript
import OpenAI from "openai";
const client = new OpenAI({
apiKey: "your-api-key-from-dashboard",
baseURL: "http://localhost:20128/v1"
});
const response = await client.chat.completions.create({
model: "cc/claude-sonnet-4-20250514",
messages: [
{ role: "user", content: "Hello, how are you?" }
]
});
console.log(response.choices[0].message.content);
```
### cURL 命令
```bash
curl http://localhost:20128/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-api-key-from-dashboard" \
-d '{
"model": "cc/claude-sonnet-4-20250514",
"messages": [
{"role": "user", "content": "Hello, how are you?"}
]
}'
```
### HTTP 客户端(Postman、Insomnia)
**Request:**
```
POST http://localhost:20128/v1/chat/completions
```
**Headers:**
```
Content-Type: application/json
Authorization: Bearer your-api-key-from-dashboard
```
**Body:**
```json
{
"model": "cc/claude-sonnet-4-20250514",
"messages": [
{"role": "user", "content": "Hello, how are you?"}
],
"temperature": 0.7,
"max_tokens": 1000
}
```
### LangChain 集成
```python
from langchain.chat_models import ChatOpenAI
from langchain.schema import HumanMessage
llm = ChatOpenAI(
model_name="cc/claude-sonnet-4-20250514",
openai_api_key="your-api-key-from-dashboard",
openai_api_base="http://localhost:20128/v1",
temperature=0.7
)
messages = [HumanMessage(content="Explain quantum computing")]
response = llm(messages)
print(response.content)
```
### LlamaIndex 集成
```python
from llama_index.llms import OpenAI
llm = OpenAI(
model="cc/claude-sonnet-4-20250514",
api_key="your-api-key-from-dashboard",
api_base="http://localhost:20128/v1"
)
response = llm.complete("What is machine learning?")
print(response.text)
```
## 自定义脚本示例
### 批处理脚本
```python
import openai
import json
openai.api_key = "your-api-key-from-dashboard"
openai.api_base = "http://localhost:20128/v1"
def process_batch(prompts, model="cx/deepseek-chat"):
results = []
for prompt in prompts:
response = openai.ChatCompletion.create(
model=model,
messages=[{"role": "user", "content": prompt}]
)
results.append({
"prompt": prompt,
"response": response.choices[0].message.content
})
return results
prompts = [
"Explain AI in one sentence",
"What is machine learning?",
"Define neural networks"
]
results = process_batch(prompts)
print(json.dumps(results, indent=2))
```
### 流式响应处理
```javascript
import OpenAI from "openai";
const client = new OpenAI({
apiKey: "your-api-key-from-dashboard",
baseURL: "http://localhost:20128/v1"
});
async function streamResponse(prompt) {
const stream = await client.chat.completions.create({
model: "cc/claude-sonnet-4-20250514",
messages: [{ role: "user", content: prompt }],
stream: true
});
for await (const chunk of stream) {
const content = chunk.choices[0]?.delta?.content || "";
process.stdout.write(content);
}
}
streamResponse("Write a short story about AI");
```
### 多模型对比
```python
from openai import OpenAI
client = OpenAI(
api_key="your-api-key-from-dashboard",
base_url="http://localhost:20128/v1"
)
models = [
"cc/claude-sonnet-4-20250514",
"cx/deepseek-chat",
"glm/glm-4-plus"
]
prompt = "Explain quantum computing in simple terms"
for model in models:
response = client.chat.completions.create(
model=model,
messages=[{"role": "user", "content": prompt}]
)
print(f"\n=== {model} ===")
print(response.choices[0].message.content)
```
## 常见集成模式
### 环境变量
安全地存储凭据:
```bash
# .env file
ROUTER_API_KEY=your-api-key-from-dashboard
ROUTER_BASE_URL=http://localhost:20128/v1
ROUTER_MODEL=cc/claude-sonnet-4-20250514
```
```python
import os
from openai import OpenAI
client = OpenAI(
api_key=os.getenv("ROUTER_API_KEY"),
base_url=os.getenv("ROUTER_BASE_URL")
)
```
### 错误处理
```python
from openai import OpenAI, OpenAIError
client = OpenAI(
api_key="your-api-key",
base_url="http://localhost:20128/v1"
)
try:
response = client.chat.completions.create(
model="cc/claude-sonnet-4-20250514",
messages=[{"role": "user", "content": "Hello"}]
)
print(response.choices[0].message.content)
except OpenAIError as e:
print(f"Error: {e}")
```
### 重试逻辑
```python
import time
from openai import OpenAI, RateLimitError
client = OpenAI(
api_key="your-api-key",
base_url="http://localhost:20128/v1"
)
def chat_with_retry(prompt, max_retries=3):
for attempt in range(max_retries):
try:
response = client.chat.completions.create(
model="cc/claude-sonnet-4-20250514",
messages=[{"role": "user", "content": prompt}]
)
return response.choices[0].message.content
except RateLimitError:
if attempt < max_retries - 1:
time.sleep(2 ** attempt) # Exponential backoff
else:
raise
```
## 故障排除
### 连接问题
**问题:** 无法连接到 9Router
```bash
# 检查 9Router 是否运行
curl http://localhost:20128/health
# 预期响应:
{"status": "ok"}
```
**方案:**
- 确认 9Router 正在运行
- 检查 20128 端口未被阻止
- 确保 base URL 正确(包含 `/v1`)
### 认证错误
**问题:** 401 Unauthorized
```
Error: Invalid API key
```
**方案:**
- 在仪表盘中确认 API key
- 检查 Authorization 头格式:`Bearer your-api-key`
- 确保 API key 中没有多余的空格或换行
### 模型未找到
**问题:** 404 Model not found
```
Error: Model 'cc/claude-opus' not found
```
**方案:**
- 使用精确的模型名(大小写敏感)
- 查看可用模型:`curl http://localhost:20128/v1/models`
- 确认套餐中已启用该模型
### 超时问题
**问题:** 请求超时
```
Error: Request timed out after 30s
```
**方案:**
- 在客户端配置中增大超时
- 时间敏感任务使用更快的模型
- 检查到 9Router 的网络连接
### 速率限制
**问题:** 429 Too Many Requests
```
Error: Rate limit exceeded
```
**方案:**
- 实现指数退避
- 降低请求频率
- 在仪表盘中查看速率限制
- 考虑升级套餐
## 最佳实践
### 安全
- 将 API key 存储在环境变量中
- 绝不将 API key 提交到版本控制
- 云端部署使用 HTTPS
- 定期轮换 API keys
### 性能
- 根据任务复杂度选择合适的模型
- 对重复查询实现缓存
- 长响应使用流式输出
- 尽可能批量请求
### 错误处理
- 始终用 try-catch 块包裹
- 添加带指数退避的重试逻辑
- 记录错误以便调试
- 提供回退机制
### 成本优化
- 简单任务选择高性价比的模型
- 适当时缓存响应
- 在仪表盘监控使用
- 在代码中设置请求上限
## 下一步
- [配置 Cursor](cursor.md) 进行 IDE 集成
- [设置 Continue](continue.md) 用于 VSCode
- [探索 CLI 用法](../cli/basic-usage.md)
- [了解模型选择](../models/overview.md)
- [API 参考](../api/reference.md)

View File

@@ -0,0 +1,127 @@
# Roo AI 助手集成
将 9Router 与 Roo AI 助手集成,通过统一界面访问多个 AI 模型。
## 前置要求
- 已安装 Roo AI 助手
- 来自 [仪表盘](https://9router.com/dashboard) 的 9Router API key
- 9Router 正在运行(本地或云端)
## 配置步骤
### 1. 打开 Roo 设置
启动 Roo AI 助手并打开设置面板。
### 2. 配置 API Provider
1. 进入 **API Provider** 设置
2. 选择 **Ollama** 作为 provider 类型
3. 配置以下设置:
**本地 9Router:**
```
Base URL: http://localhost:20128/v1
API Key: your-api-key-from-dashboard
```
**云端 9Router:**
```
Base URL: https://9router.com/v1
API Key: your-api-key-from-dashboard
```
### 3. 选择模型
从可用的 9Router 模型中选择:
**Claude 模型:**
- `cc/claude-opus-4-5-20251101` - 最强
- `cc/claude-sonnet-4-20250514` - 平衡
- `cc/claude-haiku-4-20250514` - 快速
**DeepSeek 模型:**
- `cx/deepseek-chat` - 通用
- `cx/deepseek-reasoner` - 复杂推理
**GLM 模型:**
- `glm/glm-4-plus` - 高级
- `glm/glm-4-flash` - 快速响应
### 4. 测试连接
发送测试消息验证集成:
```
Hello! Can you confirm you're connected through 9Router?
```
## 使用示例
### 基础聊天
```
向 Roo 提问: "Explain quantum computing in simple terms"
模型: cc/claude-sonnet-4-20250514
```
### 代码生成
```
向 Roo 提问: "Write a Python function to calculate Fibonacci numbers"
模型: cx/deepseek-chat
```
### 复杂推理
```
向 Roo 提问: "Analyze the trade-offs between microservices and monolithic architecture"
模型: cx/deepseek-reasoner
```
## 模型选择建议
- **快速任务**:使用 `cc/claude-haiku-4-20250514` 或 `glm/glm-4-flash`
- **均衡性能**:使用 `cc/claude-sonnet-4-20250514` 或 `cx/deepseek-chat`
- **复杂推理**:使用 `cc/claude-opus-4-5-20251101` 或 `cx/deepseek-reasoner`
- **成本优化**:使用 DeepSeek 或 GLM 模型
## 故障排除
### 连接失败
- 确认 9Router 正在运行:`curl http://localhost:20128/health`
- 检查 API key 是否正确
- 确保 Base URL 末尾包含 `/v1`
### 模型不可用
- 检查模型名是否完全匹配(大小写敏感)
- 确认 9Router 套餐中已启用该模型
- 尝试列表中的其他模型
### 响应缓慢
- 切换到更快的模型(haiku、flash)
- 检查网络连接
- 查看 9Router 日志排查问题
## 高级配置
### 自定义模型别名
可在 Roo 设置中为常用模型创建快捷别名:
```
别名: "fast" → cc/claude-haiku-4-20250514
别名: "smart" → cc/claude-opus-4-5-20251101
别名: "code" → cx/deepseek-chat
```
### 多个配置文件
为不同场景设置不同配置:
- **开发**:DeepSeek 模型用于编码
- **写作**:Claude 模型用于内容创作
- **研究**:Reasoner 模型用于分析
## 下一步
- [配置 Cursor](cursor.md) 进行 IDE 集成
- [设置 Continue](continue.md) 用于 VSCode
- [探索 CLI 用法](../cli/basic-usage.md)

View File

@@ -0,0 +1,462 @@
# 低价提供商 - 超低价备用
订阅配额耗尽时,只花几分钱而不是几美元。比 ChatGPT API 便宜 ~90%!
---
## 概览
低价层提供商是订阅配额耗尽时的 **备用**:
- 💰 **GLM-4.7** - 每 1M tokens $0.6/$2.2(每日重置)
- 💰 **MiniMax M2.1** - 每 1M tokens $0.2/$1.0(5h 重置)
- 💰 **Kimi K2** - $9/月固定(10M tokens)
**策略:** 在订阅配额用完后、免费层之前使用。相比 ChatGPT API(每 1M $20),省钱巨大。
---
## GLM-4.7(每日重置)
### 价格
| 套餐 | 输入 | 输出 | 重置 |
|------|-------|--------|-------|
| 标准 | $0.60/1M | $2.20/1M | 每日 10:00 AM |
| Coding Plan | $0.60/1M | $2.20/1M | 每日 10:00 AM(3× 配额) |
**成本示例(10M tokens):**
- 输入: 10M × $0.60 = $6
- 输出: 10M × $2.20 = $22
- **合计: $6-22**,而 ChatGPT API 需 $200!
### 设置
**步骤 1:注册**
1. 访问 [Zhipu AI](https://open.bigmodel.cn/)
2. 创建账户(手机验证)
3. 选择 **Coding Plan**,相同价格下 3× 配额
**步骤 2:获取 API Key**
```bash
仪表盘 → API Keys → 创建新 Key
→ 复制 API key(以 "zhipu-" 开头)
```
**步骤 3:添加到 9Router**
```bash
9router
# 仪表盘 → 提供商 → 添加 API Key
Provider: glm
API Key: zhipu-your-api-key-here
```
**步骤 4:在 CLI 中使用**
```
Model: glm/glm-4.7
glm/glm-4.6v (vision)
```
### 可用模型
| 模型 ID | 描述 | 上下文 | 最佳场景 |
|----------|-------------|---------|----------|
| `glm/glm-4.7` | GLM 4.7 | 128K | 编码、通用任务 |
| `glm/glm-4.6v` | GLM 4.6V Vision | 128K | 图像分析 |
### 专业建议
- **Coding Plan** - 相同价格下 3× 配额($0.6/$2.2)
- **每日重置** - 每天北京时间 10:00 AM 重置
- **编码首选** - 针对代码生成优化
- **128K 上下文** - 可处理大文件
### 配额重置
```
每日重置: 北京时间 10:00 AM(UTC+8)
→ UTC 02:00
→ PST 前一天 18:00
→ EST 前一天 21:00
围绕重置时间规划重任务!
```
---
## MiniMax M2.1(5 小时重置)
### 价格
| 套餐 | 输入 | 输出 | 重置 |
|------|-------|--------|-------|
| 标准 | $0.20/1M | $1.00/1M | 5 小时滚动 |
**成本示例(10M tokens):**
- 输入: 10M × $0.20 = $2
- 输出: 10M × $1.00 = $10
- **合计: $2-10** - 最便宜的选择!
### 设置
**步骤 1:注册**
1. 访问 [MiniMax](https://www.minimax.io/)
2. 创建账户
3. 验证邮箱/手机
**步骤 2:获取 API Key**
```bash
仪表盘 → API Management → Create Key
→ 复制 API key
```
**步骤 3:添加到 9Router**
```bash
9router
# 仪表盘 → 提供商 → 添加 API Key
Provider: minimax
API Key: your-minimax-api-key
```
**步骤 4:在 CLI 中使用**
```
Model: minimax/MiniMax-M2.1
```
### 可用模型
| 模型 ID | 描述 | 上下文 | 最佳场景 |
|----------|-------------|---------|----------|
| `minimax/MiniMax-M2.1` | MiniMax M2.1 | 1M tokens | 长上下文、编码 |
### 专业建议
- **最便宜的选择** - 输入每 1M $0.20(比 ChatGPT 便宜 90%)
- **5 小时滚动** - 每 5 小时配额重置
- **1M 上下文** - 超大上下文窗口
- **处理整个代码库** - 适合大文件
### 配额重置
```
5 小时滚动窗口:
→ 使用配额 → 等待 5 小时 → 配额刷新
示例:
10:00 AM - 使用 5M tokens
3:00 PM - 配额刷新
8:00 PM - 配额刷新
24/7 编码,成本极低!
```
---
## Kimi K2(固定 $9/月)
### 价格
| 套餐 | 月费 | 包含 Tokens | 折合成本 |
|------|--------------|-----------------|----------------|
| 订阅 | $9 | 10M tokens | $0.90/1M |
**成本示例:**
- $9/月固定
- 包含 10M tokens
- **折合: $0.90/1M** - 持续使用的最佳性价比!
### 设置
**步骤 1:订阅**
1. 访问 [Moonshot AI](https://platform.moonshot.ai/)
2. 创建账户
3. 订阅 $9/月套餐
**步骤 2:获取 API Key**
```bash
仪表盘 → API Keys → 创建新 Key
→ 复制 API key
```
**步骤 3:添加到 9Router**
```bash
9router
# 仪表盘 → 提供商 → 添加 API Key
Provider: kimi
API Key: your-kimi-api-key
```
**步骤 4:在 CLI 中使用**
```
Model: kimi/kimi-latest
```
### 可用模型
| 模型 ID | 描述 | 上下文 | 最佳场景 |
|----------|-------------|---------|----------|
| `kimi/kimi-latest` | Kimi Latest | 200K | 通用编码 |
### 专业建议
- **固定成本** - $9/月,不限用量(最多 10M)
- **稳定使用最佳** - 若每月用 10M,折合 $0.90/1M
- **每月重置** - 10M tokens 每月重置
- **可预测账单** - 无意外费用
### 配额重置
```
每月重置: 每月 1 日
→ 10M tokens 刷新
每月用量示例:
第 1 周: 3M tokens
第 2 周: 2M tokens
第 3 周: 3M tokens
第 4 周: 2M tokens
合计: 10M tokens = $9 固定
```
---
## 价格对比
| 提供商 | 输入/1M | 输出/1M | 重置 | 10M 成本 | 最佳场景 |
|----------|----------|-----------|-------|----------|----------|
| **GLM-4.7** | $0.60 | $2.20 | 每日 10AM | $6-22 | 每日配额用户 |
| **MiniMax M2.1** | $0.20 | $1.00 | 5 小时 | $2-10 | **最便宜!** |
| **Kimi K2** | $0.90 | $0.90 | 每月 | **$9 固定** | 稳定使用 |
| ChatGPT API | $20.00 | $20.00 | 无 | $200 | ❌ 昂贵 |
**节省:** 比 ChatGPT API 便宜 90-95%!
---
## 使用示例
### Cursor IDE 设置
```
Settings → Models → Advanced:
OpenAI API Base URL: http://localhost:20128/v1
OpenAI API Key: [从 9router 仪表盘获取]
Model: glm/glm-4.7
```
### 创建组合(推荐)
```
仪表盘 → 组合 → 新建
名称: cheap-backup
模型:
1. cc/claude-opus-4-5 (订阅主力)
2. glm/glm-4.7 (低价备用, 每日重置)
3. minimax/MiniMax-M2.1 (最便宜的回退)
4. if/kimi-k2-thinking (免费应急)
CLI 中使用: cheap-backup
```
**结果:** 订阅 → 低价 → 最便宜 → 免费
---
## 成本优化
### 策略 1:每日重置例程
```
早上(10AM): 全新 GLM 配额
→ 用 GLM 处理重任务
→ 节省订阅配额
下午: 订阅配额
→ 用 Claude/Codex 处理复杂任务
晚上: MiniMax(5h 重置)
→ 深夜的低价备用
夜里: 免费层(iFlow)
→ 零成本应急备用
```
### 策略 2:预算优先
```
设置月预算: $20
分配:
- $9 Kimi K2(10M tokens 固定)
- $6 GLM 每日配额(10M tokens)
- $5 MiniMax 溢出(25M tokens)
合计: $20 拿到 45M tokens
而 ChatGPT API 同样的钱只能拿 1M tokens!
```
### 策略 3:订阅优先最大化
```
优先级:
1. Gemini CLI(每月免费 180K)
2. Claude Code(已付费订阅)
3. GLM-4.7(低价备用,每 1M $0.6)
4. MiniMax M2.1(最便宜,每 1M $0.2)
5. iFlow(免费应急)
月成本示例(100M tokens):
- 60M 通过 Gemini CLI: $0(免费)
- 30M 通过 Claude Code: $0(订阅)
- 8M 通过 GLM: $4.80
- 2M 通过 MiniMax: $0.40
合计: $5.20/月!
```
---
## 真实案例
### 案例 1:重度编码月(100M tokens)
```
分解:
- 60M 通过订阅(Claude/Codex): 无额外费用
- 30M 通过 GLM-4.7: $18
- 10M 通过 MiniMax M2.1: $2
合计: $20/月
而 ChatGPT API 需 $2000!
节省: 便宜 99%!
```
### 案例 2:预算编码者($10/月)
```
策略:
- $9 Kimi K2(10M tokens)
- $1 MiniMax 溢出(5M tokens)
合计: $10 拿到 15M tokens
而 ChatGPT API 同样的钱只能拿 0.5M tokens!
多 30 倍 tokens!
```
### 案例 3:自由职业(用量浮动)
```
清淡月(20M tokens):
- 15M 通过订阅: $0
- 5M 通过 GLM: $3
合计: $3
繁忙月(150M tokens):
- 60M 通过订阅: $0
- 60M 通过 GLM: $36
- 30M 通过 MiniMax: $6
合计: $42
平均: $22.50/月
而 ChatGPT API 需 $3400!
```
---
## 最佳实践
### 1. 跟踪每日配额
```
仪表盘显示:
- GLM 配额: 已用 75%(6h 后重置)
- MiniMax 配额: 已用 50%(2h 后重置)
- Kimi 配额: 已用 8M/10M(15 天后重置)
围绕重置时间规划重任务!
```
### 2. 使用 Coding Plan(GLM)
```
标准: 1× 配额
Coding Plan: 3× 配额(同价!)
→ 永远选 Coding Plan
```
### 3. 结合免费层
```
组合:
1. gc/gemini-3-flash(免费主力)
2. glm/glm-4.7(低价备用)
3. minimax/MiniMax-M2.1(最便宜)
4. if/kimi-k2-thinking(免费应急)
结果: 最小化成本,最大化在线
```
### 4. 设置预算告警
```
仪表盘 → 设置 → 预算告警
每日: $2 上限
每周: $10 上限
每月: $30 上限
→ 达到上限时自动切换到免费层
```
---
## 故障排除
### "Quota exhausted"
**方案:**
- GLM: 等到北京时间 10:00 AM
- MiniMax: 从首次使用起等 5 小时
- Kimi: 等到下月 1 日
- 使用组合回退到免费层
### "API key invalid"
**方案:**
- 检查 API key 是否复制正确
- 确认账户有余额
- 必要时重新生成 API key
### "High costs"
**方案:**
- 在仪表盘查看使用统计
- 设置预算告警
- 切换到 MiniMax(每 1M $0.2 最便宜)
- 非关键任务用免费层
---
## 下一步
- **添加免费回退:** [免费提供商](./free.md)
- **设置订阅:** [订阅型提供商](./subscription.md)
- **创建组合:** 仪表盘 → 组合 → 新建

View File

@@ -0,0 +1,442 @@
# 免费提供商 - 零成本回退
当其他一切都受配额限制时的应急备用。零成本 24/7 编码!
---
## 概览
免费层提供商是订阅和低价配额都耗尽时的 **回退**:
- 🆓 **iFlow** - 8 个免费模型(Kimi K2、Qwen3、GLM 4.7、MiniMax M2...)
- 🆓 **Qwen** - 3 个免费模型(Qwen3 Coder Plus/Flash、Vision)
- 🆓 **Kiro** - 2 个免费模型(Claude Sonnet 4.5、Haiku 4.5)
**策略:** 作为应急备用使用。无限用量,永久零成本!
---
## iFlow(8 个免费模型)
### 价格
| 套餐 | 月费 | 模型 | 配额 |
|------|--------------|--------|-------|
| 免费 | $0 | 8 个模型 | 无限 |
**最佳价值:** 免费层中模型最多!Kimi K2、Qwen3、GLM、MiniMax、DeepSeek。
### 设置
**步骤 1:通过仪表盘连接**
```bash
9router
# 仪表盘 → 提供商 → 连接 iFlow
```
**步骤 2:iFlow OAuth 登录**
- 点击 "Connect iFlow"
- 浏览器打开 → iFlow 登录页
- 创建账户或登录
- 授予权限
- 启用自动 token 刷新
**步骤 3:在 CLI 中使用**
```
Model: if/kimi-k2-thinking
if/kimi-k2
if/qwen3-coder-plus
if/glm-4.7
if/minimax-m2
if/deepseek-r1
if/deepseek-v3.2-chat
if/deepseek-v3.2-reasoner
```
### 可用模型
| 模型 ID | 描述 | 最佳场景 |
|----------|-------------|----------|
| `if/kimi-k2-thinking` | Kimi K2 Thinking | 复杂推理 |
| `if/kimi-k2` | Kimi K2 | 通用编码 |
| `if/qwen3-coder-plus` | Qwen3 Coder Plus | 代码生成 |
| `if/glm-4.7` | GLM 4.7 | 中文 + 英文 |
| `if/minimax-m2` | MiniMax M2 | 长上下文 |
| `if/deepseek-r1` | DeepSeek R1 | 推理任务 |
| `if/deepseek-v3.2-chat` | DeepSeek V3.2 Chat | 对话型 |
| `if/deepseek-v3.2-reasoner` | DeepSeek V3.2 Reasoner | 复杂逻辑 |
### 专业建议
- **8 个免费模型** - 免费层中最丰富
- **无限用量** - 无配额限制
- **Kimi K2 Thinking** - 复杂推理最佳
- **DeepSeek R1** - 强大的推理能力
---
## Qwen(3 个免费模型)
### 价格
| 套餐 | 月费 | 模型 | 配额 |
|------|--------------|--------|-------|
| 免费 | $0 | 3 个模型 | 无限 |
### 设置
**步骤 1:通过仪表盘连接**
```bash
9router
# 仪表盘 → 提供商 → 连接 Qwen
```
**步骤 2:设备码授权**
- 点击 "Connect Qwen"
- 仪表盘显示设备码
- 访问授权 URL
- 输入设备码
- 登录 Qwen 账户
- 启用自动 token 刷新
**步骤 3:在 CLI 中使用**
```
Model: qw/qwen3-coder-plus
qw/qwen3-coder-flash
qw/vision-model
```
### 可用模型
| 模型 ID | 描述 | 最佳场景 |
|----------|-------------|----------|
| `qw/qwen3-coder-plus` | Qwen3 Coder Plus | 高级编码 |
| `qw/qwen3-coder-flash` | Qwen3 Coder Flash | 快速响应 |
| `qw/vision-model` | Qwen3 Vision | 图像分析 |
### 专业建议
- **Qwen3 Coder Plus** - 编码能力强
- **Qwen3 Coder Flash** - 快速任务首选
- **Vision 模型** - 免费图像分析
- **无限用量** - 无配额限制
---
## Kiro(免费 Claude)
### 价格
| 套餐 | 月费 | 模型 | 配额 |
|------|--------------|--------|-------|
| 免费 | $0 | Claude Sonnet 4.5、Haiku 4.5 | 无限 |
**最佳价值:** 免费 Claude!与付费 Claude Code 同质量。
### 设置
**步骤 1:通过仪表盘连接**
```bash
9router
# 仪表盘 → 提供商 → 连接 Kiro
```
**步骤 2:AWS Builder ID 或 OAuth**
- 点击 "Connect Kiro"
- 选择登录方式:
- AWS Builder ID(推荐)
- Google 账户
- GitHub 账户
- 授予权限
- 启用自动 token 刷新
**步骤 3:在 CLI 中使用**
```
Model: kr/claude-sonnet-4.5
kr/claude-haiku-4.5
```
### 可用模型
| 模型 ID | 描述 | 最佳场景 |
|----------|-------------|----------|
| `kr/claude-sonnet-4.5` | Claude Sonnet 4.5 | 质量/速度平衡 |
| `kr/claude-haiku-4.5` | Claude Haiku 4.5 | 快速响应 |
### 专业建议
- **免费 Claude** - 与付费层同质量
- **AWS Builder ID** - 用 AWS 账户轻松设置
- **无限用量** - 无配额限制
- **顶级质量** - 免费的 Claude 4.5!
---
## 特性对比
| 提供商 | 模型 | 最佳模型 | 设置方式 | 配额 |
|----------|--------|------------|-------|-------|
| **iFlow** | 8 | Kimi K2 Thinking | OAuth | 无限 |
| **Qwen** | 3 | Qwen3 Coder Plus | 设备码 | 无限 |
| **Kiro** | 2 | Claude Sonnet 4.5 | AWS Builder ID | 无限 |
**赢家:** 多样性看 iFlow,质量看 Kiro!
---
## 使用示例
### Cursor IDE 设置
```
Settings → Models → Advanced:
OpenAI API Base URL: http://localhost:20128/v1
OpenAI API Key: [从 9router 仪表盘获取]
Model: if/kimi-k2-thinking
```
### 创建组合(推荐)
```
仪表盘 → 组合 → 新建
名称: free-combo
模型:
1. if/kimi-k2-thinking (iFlow 主力)
2. qw/qwen3-coder-plus (Qwen 备用)
3. kr/claude-sonnet-4.5 (Kiro 质量)
CLI 中使用: free-combo
```
**结果:** 零成本,最大在线!
---
## 完整回退策略
### 完整 3 层组合
```
仪表盘 → 组合 → 新建
名称: complete-fallback
模型:
1. gc/gemini-3-flash-preview (免费订阅)
2. cc/claude-opus-4-5 (付费订阅)
3. glm/glm-4.7 (低价备用, 每 1M $0.6)
4. minimax/MiniMax-M2.1 (最便宜, 每 1M $0.2)
5. if/kimi-k2-thinking (免费回退)
6. kr/claude-sonnet-4.5 (免费质量)
CLI 中使用: complete-fallback
```
**结果:**
- 第 1 层: 免费订阅(Gemini CLI)
- 第 2 层: 付费订阅(Claude Code)
- 第 3 层: 低价备用(GLM、MiniMax)
- 第 4 层: 免费回退(iFlow、Kiro)
**永不停码!**
---
## 最佳实践
### 1. 作为应急备用
```
优先级:
1. 订阅层(最大化付费配额)
2. 低价层(每 1M tokens 几分钱)
3. 免费层(无限,零成本)
仅在以下情况使用免费层:
- 订阅配额耗尽
- 预算上限达到
- 测试/非关键任务
```
### 2. 选择合适的模型
```
复杂推理: if/kimi-k2-thinking
快速编码: qw/qwen3-coder-flash
最佳质量: kr/claude-sonnet-4.5
长上下文: if/minimax-m2
视觉任务: qw/vision-model
```
### 3. 创建仅免费组合
```
零成本编码:
名称: zero-cost
模型:
1. kr/claude-sonnet-4.5 (最佳质量)
2. if/kimi-k2-thinking (复杂任务)
3. qw/qwen3-coder-plus (快速编码)
成本: 永远 $0!
```
### 4. 上生产前先测试
```
用免费层来:
- 测试 prompt
- 原型功能
- 学习新框架
- 非关键任务
把付费配额留给:
- 生产代码
- 复杂重构
- 关键功能
```
---
## 真实案例
### 案例 1:学生/学习者(零预算)
```
设置:
1. kr/claude-sonnet-4.5 (最佳质量)
2. if/kimi-k2-thinking (复杂推理)
3. qw/qwen3-coder-plus (快速编码)
月成本: $0
用量: 无限
适合:
- 学习编程
- 个人项目
- 作业/任务
```
### 案例 2:自由职业(预算敏感)
```
设置:
1. gc/gemini-3-flash-preview (每月免费 180K)
2. glm/glm-4.7 (低价备用, 每 1M $0.6)
3. if/kimi-k2-thinking (免费回退)
月成本: $5-10
用量: 100M+ tokens
适合:
- 客户项目(付费层)
- 测试(免费层)
- 应急备用
```
### 案例 3:重度用户(全部最大化)
```
设置:
1. gc/gemini-3-flash-preview (每月免费 180K)
2. cc/claude-opus-4-5 (订阅 $20-100)
3. cx/gpt-5.2-codex (订阅 $20-200)
4. glm/glm-4.7 (低价 每 1M $0.6)
5. minimax/MiniMax-M2.1 (最便宜 每 1M $0.2)
6. if/kimi-k2-thinking (免费无限)
7. kr/claude-sonnet-4.5 (免费质量)
月成本: $40-320(订阅)+ $10-20(低价层)
用量: 500M+ tokens
适合:
- 专业开发
- 团队项目
- 24/7 编码
```
---
## 成本对比
### 场景:每月 100M tokens
**方案 1:仅 ChatGPT API**
```
100M × $20/1M = $2,000/月
```
**方案 2:仅 9Router 免费层**
```
100M 通过免费层 = $0/月
节省: $2,000/月 (100%)
```
**方案 3:9Router 完整策略**
```
60M 通过 Gemini CLI(免费): $0
30M 通过 Claude Code(订阅): 无额外费用
8M 通过 GLM(低价): $4.80
2M 通过 iFlow(免费): $0
合计: $4.80/月 + 你已有的订阅
节省: $1,995/月 (99.76%)
```
---
## 故障排除
### "OAuth failed"
**方案:**
- 检查网络连接
- 尝试其他浏览器
- 清除浏览器缓存
- 在仪表盘重新连接
### "Model not available"
**方案:**
- 检查仪表盘中提供商已连接
- 确认 OAuth token 有效
- 必要时重新连接提供商
### "Slow responses"
**方案:**
- 免费层优先级较低
- 在非高峰时段使用
- 切换到其他免费提供商
- 升级到低价层以提速
---
## 限制
### 免费层注意事项
- **速度** - 可能慢于付费层
- **优先级** - 高峰期优先级较低
- **速率限制** - 可能限速(但配额无限)
- **可用性** - 偶尔可能宕机
**方案:** 使用 3 层回退策略保障可靠性!
---
## 下一步
- **设置订阅:** [订阅型提供商](./subscription.md)
- **添加低价备用:** [低价提供商](./cheap.md)
- **创建组合:** 仪表盘 → 组合 → 新建
- **开始编码:** 使用 `complete-fallback` 组合最大化可靠性

View File

@@ -0,0 +1,404 @@
# 订阅型提供商 - 最大化你的价值
通过智能配额跟踪和自动回退,最大化你已有的 AI 订阅价值。在重置前用完每一点订阅配额!
---
## 概览
订阅型提供商是你的 **首选** - 既然已经付费了,就要用足:
- ✅ **Claude Code**(Pro/Max)- Claude 4.5 Opus/Sonnet/Haiku
- ✅ **OpenAI Codex**(Plus/Pro)- GPT 5.2 Codex、GPT 5.1 Codex Max
- ✅ **Gemini CLI**(免费层!)- 每月 180K 次补全
- ✅ **GitHub Copilot** - GPT-5、Claude 4.5、Gemini 3
- ✅ **Antigravity**(Google)- Gemini 3 Pro、Claude Sonnet 4.5
**策略:** 优先使用这些,实时跟踪配额,耗尽时回退到低价/免费层。
---
## Claude Code(Pro/Max)
### 价格
| 套餐 | 月费 | 配额重置 | 模型 |
|------|--------------|-------------|--------|
| Pro | $20 | 5 小时 + 每周 | Opus、Sonnet、Haiku |
| Max | $100 | 5 小时 + 每周 | Opus、Sonnet、Haiku |
### 设置
**步骤 1:通过仪表盘连接**
```bash
9router
# 仪表盘打开 → 提供商 → 连接 Claude Code
```
**步骤 2:OAuth 登录**
- 点击 "Connect Claude Code"
- 浏览器打开 → 登录 Claude.ai
- 启用自动 token 刷新
- 开始配额跟踪
**步骤 3:在 CLI 中使用**
```
Model: cc/claude-opus-4-5-20251101
cc/claude-sonnet-4-5-20250929
cc/claude-haiku-4-5-20251001
```
### 可用模型
| 模型 ID | 描述 | 最佳场景 |
|----------|-------------|----------|
| `cc/claude-opus-4-5-20251101` | Claude 4.5 Opus | 复杂任务、架构 |
| `cc/claude-sonnet-4-5-20250929` | Claude 4.5 Sonnet | 平衡速度/质量 |
| `cc/claude-haiku-4-5-20251001` | Claude 4.5 Haiku | 快速响应 |
### 专业建议
- **Opus 用于复杂任务** - 架构决策、重构
- **Sonnet 用于速度** - 快速编辑、代码生成
- **按模型跟踪配额** - 仪表盘按模型显示使用情况
- **5 小时重置** - 每 5 小时刷新配额,加每周重置
---
## OpenAI Codex(Plus/Pro)
### 价格
| 套餐 | 月费 | 配额重置 | 模型 |
|------|--------------|-------------|--------|
| Plus | $20 | 5 小时 + 每周 | GPT 5.2、GPT 5.1 |
| Pro | $200 | 5 小时 + 每周 | GPT 5.2 Codex、GPT 5.1 Max |
### 设置
**步骤 1:通过仪表盘连接**
```bash
9router
# 仪表盘 → 提供商 → 连接 Codex
```
**步骤 2:OAuth 登录**
- 点击 "Connect Codex"
- 浏览器打开 `http://localhost:1455`
- 登录 OpenAI 账户
- 启用自动 token 刷新
**步骤 3:在 CLI 中使用**
```
Model: cx/gpt-5.2-codex
cx/gpt-5.1-codex-max
cx/gpt-5.2
cx/gpt-5.1-codex
```
### 可用模型
| 模型 ID | 描述 | 最佳场景 |
|----------|-------------|----------|
| `cx/gpt-5.2-codex` | GPT 5.2 Codex | 最新编码模型 |
| `cx/gpt-5.1-codex-max` | GPT 5.1 Codex Max | 最大上下文 |
| `cx/gpt-5.2` | GPT 5.2 | 通用任务 |
| `cx/gpt-5.1-codex` | GPT 5.1 Codex | 稳定编码 |
### 专业建议
- **5 小时滚动配额** - 每 5 小时刷新配额
- **每周重置** - 每周配额完全重置
- **Pro 层** - 配额是 Plus 的 10 倍
---
## Gemini CLI(每月免费 180K!)
### 价格
| 套餐 | 月费 | 配额 | 重置 |
|------|--------------|-------|-------|
| 免费 | $0 | 180K 次补全/月 + 每日 1K | 每日 + 每月 |
**最佳性价比:** 巨大的免费层!请在付费层之前使用。
### 设置
**步骤 1:通过仪表盘连接**
```bash
9router
# 仪表盘 → 提供商 → 连接 Gemini CLI
```
**步骤 2:Google OAuth**
- 点击 "Connect Gemini CLI"
- 浏览器打开 → 登录 Google 账户
- 授予权限
- 启用自动 token 刷新
**步骤 3:在 CLI 中使用**
```
Model: gc/gemini-3-flash-preview
gc/gemini-3-pro-preview
gc/gemini-2.5-pro
gc/gemini-2.5-flash
```
### 可用模型
| 模型 ID | 描述 | 最佳场景 |
|----------|-------------|----------|
| `gc/gemini-3-flash-preview` | Gemini 3 Flash Preview | 快速响应 |
| `gc/gemini-3-pro-preview` | Gemini 3 Pro Preview | 复杂任务 |
| `gc/gemini-2.5-pro` | Gemini 2.5 Pro | 稳定生产 |
| `gc/gemini-2.5-flash` | Gemini 2.5 Flash | 快速任务 |
### 专业建议
- **每月 180K 次补全** - 大量免费层
- **每日 1K 限制** - 每天午夜重置
- **优先使用** - 免费层,先于付费订阅
- **无需信用卡** - Google 账户完全免费
---
## GitHub Copilot
### 价格
| 套餐 | 月费 | 配额重置 | 模型 |
|------|--------------|-------------|--------|
| 个人 | $10 | 每月(1 日) | GPT-5、Claude 4.5、Gemini 3 |
| 商业 | $19 | 每月(1 日) | GPT-5、Claude 4.5、Gemini 3 |
### 设置
**步骤 1:通过仪表盘连接**
```bash
9router
# 仪表盘 → 提供商 → 连接 GitHub
```
**步骤 2:通过 GitHub 进行 OAuth**
- 点击 "Connect GitHub"
- 浏览器打开 → 登录 GitHub
- 授权 GitHub Copilot
- 启用自动 token 刷新
**步骤 3:在 CLI 中使用**
```
Model: gh/gpt-5
gh/gpt-5.1-codex-max
gh/claude-4.5-sonnet
gh/gemini-3-pro
```
### 可用模型
| 模型 ID | 描述 | 最佳场景 |
|----------|-------------|----------|
| `gh/gpt-5` | GPT-5 | 最新 OpenAI 模型 |
| `gh/gpt-5.1-codex-max` | GPT-5.1 Codex Max | 最大上下文 |
| `gh/claude-4.5-sonnet` | Claude 4.5 Sonnet | Anthropic 质量 |
| `gh/gemini-3-pro` | Gemini 3 Pro | Google 质量 |
### 专业建议
- **每月重置** - 每月 1 日完全重置
- **多模型** - 一个订阅访问 GPT、Claude、Gemini
- **商业层** - 团队更高配额
---
## Antigravity(Google 账户)
### 价格
| 套餐 | 月费 | 配额 | 模型 |
|------|--------------|-------|--------|
| 免费 | $0 | 类似 Gemini CLI | Gemini 3 Pro、Claude Sonnet 4.5 |
### 设置
**步骤 1:通过仪表盘连接**
```bash
9router
# 仪表盘 → 提供商 → 连接 Antigravity
```
**步骤 2:Google OAuth**
- 点击 "Connect Antigravity"
- 浏览器打开 → 登录 Google 账户
- 授予权限
- 启用自动 token 刷新
**步骤 3:在 CLI 中使用**
```
Model: ag/gemini-3-pro-high
ag/claude-sonnet-4-5
ag/claude-opus-4-5-thinking
```
### 可用模型
| 模型 ID | 描述 | 最佳场景 |
|----------|-------------|----------|
| `ag/gemini-3-pro-high` | Gemini 3 Pro High | 高质量响应 |
| `ag/claude-sonnet-4-5` | Claude Sonnet 4.5 | Anthropic 质量 |
| `ag/claude-opus-4-5-thinking` | Claude Opus 4.5 Thinking | 复杂推理 |
### 专业建议
- **免费层** - Google 账户零成本
- **可访问 Claude** - 免费的 Claude Sonnet/Opus
- **配额类似 Gemini CLI** - 每日/每月上限
---
## 价格对比
| 提供商 | 月费 | 配额重置 | 价值 |
|----------|--------------|-------------|-------|
| **Claude Code Pro** | $20 | 5 小时 + 每周 | ⭐⭐⭐⭐⭐ 最佳质量 |
| **Claude Code Max** | $100 | 5 小时 + 每周 | ⭐⭐⭐⭐⭐ 最高配额 |
| **Codex Plus** | $20 | 5 小时 + 每周 | ⭐⭐⭐⭐ 良好性价比 |
| **Codex Pro** | $200 | 5 小时 + 每周 | ⭐⭐⭐⭐⭐ 10× 配额 |
| **Gemini CLI** | **$0** | 每日 + 每月 | ⭐⭐⭐⭐⭐ 免费 180K/月! |
| **GitHub Copilot** | $10-19 | 每月(1 日) | ⭐⭐⭐⭐ 多模型 |
| **Antigravity** | **$0** | 每日 + 每月 | ⭐⭐⭐⭐ 免费 Claude! |
---
## 使用示例
### Cursor IDE 设置
```
Settings → Models → Advanced:
OpenAI API Base URL: http://localhost:20128/v1
OpenAI API Key: [从 9router 仪表盘获取]
Model: cc/claude-opus-4-5-20251101
```
### 创建组合(推荐)
```
仪表盘 → 组合 → 新建
名称: premium-coding
模型:
1. gc/gemini-3-flash-preview (免费, 优先使用)
2. cc/claude-opus-4-5-20251101 (订阅)
3. cx/gpt-5.2-codex (订阅备用)
CLI 中使用: premium-coding
```
**结果:** 最大化免费层 → 使用订阅 → 自动回退
---
## 配额跟踪
9Router 实时跟踪配额:
- **Token 消耗** - 每次请求的输入/输出 tokens
- **重置倒计时** - 下次配额重置剩余时间
- **使用百分比** - 配额已用比例
- **自动回退** - 耗尽时切换到下一层
**仪表盘视图:**
```
Claude Code Pro
├─ 配额: 已用 75%
├─ 重置: 2h 15m(5 小时)
├─ 每周重置: 3 天
└─ 回退: glm/glm-4.7(低价层)
```
---
## 最佳实践
### 1. 优先使用免费层
```
优先级:
1. Gemini CLI(每月免费 180K)
2. Antigravity(免费 Claude)
3. Claude Code/Codex(付费订阅)
```
### 2. 每日跟踪配额
- 每天早上查看仪表盘
- 围绕配额重置规划重任务
- 非关键任务用低价/免费层
### 3. 创建智能组合
```
示例组合:
1. gc/gemini-3-flash-preview(免费主力)
2. cc/claude-opus-4-5(复杂任务)
3. glm/glm-4.7(低价备用)
4. if/kimi-k2-thinking(免费回退)
```
### 4. 按时间优化
```
早上: 全新 5 小时配额(Claude/Codex)
下午: Gemini CLI(每日 1K)
晚上: 订阅配额
深夜: 低价/免费层
```
---
## 故障排除
### "Quota exhausted"
**方案:**
- 查看仪表盘配额跟踪
- 等待重置(5 小时或每日)
- 使用组合回退到低价/免费层
### "OAuth token expired"
**方案:**
- 9Router 会自动刷新
- 若仍有问题: 仪表盘 → 提供商 → 重新连接
### "Rate limiting"
**方案:**
- 订阅配额已用尽
- 添加回退:`cc/claude-opus → glm/glm-4.7`
- 使用免费层:`if/kimi-k2-thinking`
---
## 下一步
- **设置低价备用:** [低价提供商](./cheap.md)
- **添加免费回退:** [免费提供商](./free.md)
- **创建组合:** 仪表盘 → 组合 → 新建

View File

@@ -0,0 +1,351 @@
# 故障排除
使用 9Router 时常见的问题与解决方案。
---
## "Language model did not provide messages"
**问题:** 请求失败,响应为空或返回错误。
**原因:**
- 提供商配额耗尽
- API key 无效或过期
- 模型不可用
**解决方案:**
1. **查看配额状态:**
```
仪表盘 → 提供商 → 查看配额跟踪
```
若配额耗尽,等待重置或切换提供商。
2. **使用组合回退:**
```
仪表盘 → 组合 → 创建回退链
示例: cc/claude-opus → glm/glm-4.7 → if/kimi-k2
```
3. **验证提供商连接:**
```
仪表盘 → 提供商 → 必要时重新连接
```
---
## 速率限制
**问题:** 出现 "Rate limit exceeded" 或 "Too many requests" 错误。
**原因:**
- 订阅配额用完(5 小时/每日/每周限制)
- 触发了 API 速率限制
- 并发请求过多
**解决方案:**
1. **查看重置时间:**
```
仪表盘 → 配额跟踪 → 查看重置倒计时
```
2. **切换到低价层:**
```
使用: glm/glm-4.7 (每 1M tokens $0.6)
minimax/MiniMax-M2.1 (每 1M tokens $0.20)
```
3. **添加回退组合:**
```
仪表盘 → 组合 → 添加备用模型
主力: cc/claude-opus (订阅)
备用: glm/glm-4.7 (低价)
应急: if/kimi-k2 (免费)
```
---
## OAuth Token 过期
**问题:** 出现 "Unauthorized" 或 "Token expired" 错误。
**原因:**
- OAuth token 过期(自动刷新失败)
- 提供商会话失效
- 刷新过程中出现网络问题
**解决方案:**
1. **自动刷新(默认):**
9Router 会自动刷新 token。等待 30 秒后重试。
2. **手动重连:**
```
仪表盘 → 提供商 → [提供商名称] → 重新连接
→ 再次完成 OAuth 流程
```
3. **检查提供商状态:**
确认提供商服务在线(Claude Code、Codex 等)。
---
## 成本过高
**问题:** 出现意外的高用量或高成本。
**原因:**
- 不必要地使用了昂贵模型
- 没有回退到便宜层级
- 上下文窗口过大
**解决方案:**
1. **查看使用统计:**
```
仪表盘 → 使用统计 → 查看 token 消耗
→ 找出高成本模型
```
2. **切换到更便宜的模型:**
```
替换: cc/claude-opus ($20-100/月 订阅)
为: glm/glm-4.7 (每 1M tokens $0.6)
minimax/MiniMax-M2.1 (每 1M tokens $0.20)
```
3. **使用免费层:**
```
if/kimi-k2-thinking (免费)
qw/qwen3-coder-plus (免费)
kr/claude-sonnet-4.5 (免费)
gc/gemini-3-flash-preview (每月免费 180K)
```
4. **优化 prompt:**
- 减少上下文大小
- 长响应使用流式输出
- 缓存常用 prompt
---
## 连接被拒绝
**问题:** 出现 "ECONNREFUSED" 或 "Cannot connect to localhost:20128"。
**原因:**
- 9Router 未运行
- 端口 20128 被阻止
- 防火墙拦截连接
**解决方案:**
1. **启动 9Router:**
```bash
9router
```
仪表盘应该在 http://localhost:3000 打开。
2. **检查端口 20128:**
```bash
# 检查端口是否监听
lsof -i :20128
# Windows
netstat -ano | findstr :20128
```
3. **检查防火墙:**
- macOS: 系统设置 → 网络 → 防火墙
- Windows: Windows Defender 防火墙 → 允许应用
- Linux: `sudo ufw allow 20128`
4. **使用云端 endpoint:**
如果 localhost 不行(例如 Cursor IDE):
```
Endpoint: https://9router.com/v1
```
---
## 仪表盘无法打开
**问题:** 仪表盘无法在 http://localhost:3000 加载。
**原因:**
- 端口 3000 被占用
- 9Router 崩溃
- 浏览器缓存问题
**解决方案:**
1. **确认 9Router 是否运行:**
```bash
# 检查进程
ps aux | grep 9router
# 检查端口 3000
lsof -i :3000
```
2. **杀掉冲突进程:**
```bash
# macOS/Linux
lsof -ti:3000 | xargs kill -9
# Windows
netstat -ano | findstr :3000
taskkill /PID <PID> /F
```
3. **重启 9Router:**
```bash
# 停止
pkill -f 9router
# 启动
9router
```
4. **清除浏览器缓存:**
- Chrome: Ctrl+Shift+Delete → 清除缓存
- 尝试无痕模式
5. **检查防火墙设置:**
确认端口 3000 未被阻止。
---
## 模型未找到
**问题:** 出现 "Model not found" 或 "Invalid model" 错误。
**原因:**
- 提供商未连接
- 模型 ID 拼写错误
- 提供商未激活
**解决方案:**
1. **验证提供商连接:**
```
仪表盘 → 提供商 → 检查状态(绿色 = 已激活)
```
2. **检查模型 ID 格式:**
```
正确: cc/claude-opus-4-5-20251101
错误: claude-opus-4-5-20251101
格式: [provider-prefix]/[model-name]
```
3. **列出可用模型:**
```bash
curl http://localhost:20128/v1/models \
-H "Authorization: Bearer your-api-key"
```
4. **重新连接提供商:**
```
仪表盘 → 提供商 → [提供商] → 重新连接
```
---
## 响应缓慢
**问题:** 请求耗时过长或超时。
**原因:**
- 提供商延迟
- 网络问题
- 上下文/响应过大
- 提供商速率限制
**解决方案:**
1. **查看提供商状态:**
```
仪表盘 → 提供商 → 查看延迟统计
```
2. **切换到更快的模型:**
```
快速: cc/claude-haiku-4-5 (Haiku 比 Opus 快)
gc/gemini-3-flash-preview
qw/qwen3-coder-flash
```
3. **使用流式响应:**
```json
{
"model": "cc/claude-opus-4-5",
"messages": [...],
"stream": true
}
```
4. **检查网络:**
```bash
# 测试延迟
ping api.anthropic.com
ping api.openai.com
```
5. **减小上下文:**
- 精简消息历史
- 使用更短的 prompt
- 在 CLI 工具中启用上下文裁剪
---
## API Key 无效
**问题:** 出现 "Invalid API key" 或 "Authentication failed" 错误。
**原因:**
- 复制了错误的 API key
- API key 已过期
- 未生成 API key
**解决方案:**
1. **重新生成 API key:**
```
仪表盘 → 设置 → API Keys → 生成新 Key
→ 复制并使用新 key
```
2. **检查 key 格式:**
```
正确: 9r_xxxxxxxxxxxxxxxxxxxxxxxx
错误: 缺少 9r_ 前缀
```
3. **检查 CLI 配置中的 key:**
```bash
# Cursor
Settings → Models → OpenAI API Key
# Cline
Settings → API Key
# 环境变量
export OPENAI_API_KEY="9r_your_key"
```
4. **测试 API key:**
```bash
curl http://localhost:20128/v1/models \
-H "Authorization: Bearer 9r_your_key"
```
---
## 需要更多帮助?
- **GitHub Issues:** [github.com/decolua/9router/issues](https://github.com/decolua/9router/issues)
- **文档:** [9router.com/docs](https://9router.com/docs)
- **常见问题:** [faq.md](faq.md)