如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
永不中断编码。通过 RTK 节省 20-40% 的 Token,并自动回退至免费及低成本 AI 模型。
连接所有 AI 编码工具(Claude Code、Cursor、Antigravity、Copilot、Codex、Gemini、OpenCode、Cline、OpenClaw...)至 40+ AI 提供商及 100+ 模型。
🚀 快速开始 • 💡 核心功能 • 📖 设置指南 • 🌐 官网
🇻🇳 越南语 • 🇨🇳 中文 • 🇯🇵 日本語 • 🇷🇺 俄语
Headroom 是可选组件,独立运行。9Router 会调用 Headroom 的本地 /v1/compress 端点,同时保留正常的路由、回退、身份验证和使用跟踪功能:
Client → 9Router → Headroom /v1/compress → 9Router → provider
本地设置:
pip install "headroom-ai[proxy]"
headroom proxy --port 8787
在 Dashboard → Endpoint → Token Saver → Headroom 中启用。默认 URL:http://localhost:8787。
Docker 示例:
# Headroom 服务在同一 Docker 网络中
# Headroom 在主机上运行
如果 Headroom 宕机或返回错误,9Router 会故障开放(fail open)并发送原始请求。
📊 为什么我的仪表盘显示高额费用?
仪表盘会跟踪您的令牌使用量,并显示估算费用,模拟直接使用付费 API 的情况。这并非实际账单——它是一个参考指标,用于展示通过 9Router 使用免费模型或现有订阅所节省的金额。
示例:
费用显示是一个“节省追踪器”,帮助您了解使用模式和优化机会。
💳 9Router会向我收费吗?
不会。 9Router 是免费的开源软件,运行在您自己的电脑上。它从不向您收取任何费用。
您只需支付:
9Router 是本地代理/路由器。它没有您的***信息,无法发送账单,也没有计费系统。它是完全免费的软件。
🆓 免费提供商真的是无限量的吗?
是的! 当前的免费提供商(Kiro、OpenCode Free、Vertex)是真正免费的,无任何隐藏费用。
这些是各公司提供的免费服务:
opencode.ai/zen/v1/models 获取9Router 仅负责将您的请求路由到这些服务——没有“陷阱”或未来计费。它们是真正的免费服务,而 9Router 让它们易于使用并支持 fallback。
已停用的免费套餐(不再推荐):
💰 如何最大程度降低实际AI成本?
免费优先策略:
1. gc/gemini-3-flash(Google 提供每月 18 万免费额度)
2. if/kimi-k2-thinking(iFlow 提供无限量免费)
3. qw/qwen3-coder-plus(Qwen 提供无限量免费)
成本:$0/月
4. glm/glm-4.7($0.6/100 万令牌)
额外成本:仅为实际使用量付费
结果: 大多数用户仅使用免费套餐即可实现每月 $0 成本!
📈 如果我的使用量突然激增怎么办?
9Router 的智能 fallback 可防止意外费用:
场景: 您正在进行编码冲刺,用完了所有配额
没有 9Router 时:
有 9Router 时:
一切尽在您的掌控: 在仪表盘中设置每个提供商的支出限额,9Router 会严格遵守。
# 克隆并安装
git clone https://github.com/decolua/9router.git
cd 9router
npm install
npm run build
# 配置
export JWT_SECRET="your-secure-secret-change-this"
export INITIAL_PASSWORD="your-password"
export DATA_DIR="/var/lib/9router"
export PORT="20128"
export HOSTNAME="0.0.0.0"
export NODE_ENV="production"
export NEXT_PUBLIC_BASE_URL="http://localhost:20128"
export NEXT_PUBLIC_CLOUD_URL="https://9router.com"
export API_KEY_SECRET="endpoint-proxy-api-key-secret"
export MACHINE_ID_SALT="endpoint-proxy-salt"
# 启动
npm run start
# 或使用 PM2
npm install -g pm2
pm2 start npm --name 9router -- start
pm2 save
pm2 startup
已发布镜像(多平台 linux/amd64 + linux/arm64):
快速启动(使用已发布镜像):
docker run -d \
--name 9router \
-p 20128:20128 \
-v "$HOME/.9router:/app/data" \
-e DATA_DIR=/app/data \
decolua/9router:latest
→ 打开 http://localhost:20128
从源码构建(开发环境):
git clone https://github.com/decolua/9router.git
cd 9router/app
docker build -t 9router .
docker run -d --name 9router -p 20128:20128 \
-v "$HOME/.9router:/app/data" -e DATA_DIR=/app/data 9router
容器默认值:
PORT=20128HOSTNAME=0.0.0.0常用命令:
docker logs -f 9router
docker restart 9router
docker stop 9router && docker rm 9router
docker pull decolua/9router:latest # 更新至最新版本
数据持久化: 主机上的 $HOME/.9router/db/data.sqlite ↔ 容器内的 /app/data/db/data.sqlite。
| 变量 | 默认值 | 描述 |
|---|---|---|
JWT_SECRET | 自动生成(~/.9router/jwt-secret) | 控制台认证Cookie的JWT签名密钥(覆盖此值可实现多实例共享) |
INITIAL_PASSWORD | 123456 | 无保存哈希时的首次登录密码 |
DATA_DIR | ~/.9router | 应用主数据目录(SQLite数据库位于 $DATA_DIR/db/data.sqlite) |
PORT | 框架默认值 | 服务端口(示例中为 20128) |
HOSTNAME | 框架默认值 | 绑定主机(Docker默认值为 0.0.0.0) |
NODE_ENV | 运行时默认值 | 设置为 production 用于部署环境 |
BASE_URL | http://localhost:20128 | 云同步任务使用的服务端内部基础URL |
CLOUD_URL | https://9router.com | 服务端云同步端点基础URL |
NEXT_PUBLIC_BASE_URL | http://localhost:3000 | 向后兼容/公开基础URL(服务端运行时优先使用 BASE_URL) |
NEXT_PUBLIC_CLOUD_URL | https://9router.com | 向后兼容/公开云URL(服务端运行时优先使用 CLOUD_URL) |
API_KEY_SECRET | endpoint-proxy-api-key-secret | 生成API密钥的HMAC密钥 |
MACHINE_ID_SALT | endpoint-proxy-salt | 稳定机器ID哈希的盐值 |
ENABLE_REQUEST_LOGS | false | 启用 logs/ 目录下的请求/响应日志 |
AUTH_COOKIE_SECURE | false | 强制使用 Secure 认证Cookie(在HTTPS反向代理后设置为 true) |
REQUIRE_API_KEY | false | 在 /v1/* 路由上强制使用Bearer API密钥(互联网暴露部署推荐启用) |
HTTP_PROXY, HTTPS_PROXY, ALL_PROXY, NO_PROXY | 空 | 上游提供商调用的可选出站代理 |
[!NOTE]
- 也支持小写代理变量:
http_proxy、https_proxy、all_proxy、no_proxy。.env文件不会打包到Docker镜像中(通过.dockerignore排除);使用--env-file或-e注入运行时配置。- 在Windows系统上,
APPDATA可用于本地存储路径解析。INSTANCE_NAME出现在旧文档/环境模板中,但当前运行时未使用。
${DATA_DIR}/db/data.sqlite(SQLite数据库 — 存储提供商、组合、别名、密钥、设置、使用历史)${DATA_DIR}/db/backups/ENABLE_REQUEST_LOGS=true 时存储于 /logs/...${DATA_DIR} 和 ~/.9router 解析为同一位置 — 构建时会创建符号链接 /root/.9router -> /app/data。查看所有可用模型
Claude Code(cc/) - 专业版/高级版:
cc/claude-opus-4-7cc/claude-opus-4-6cc/claude-sonnet-4-6cc/claude-sonnet-4-5-20250929cc/claude-haiku-4-5-20251001Codex(cx/) - Plus/专业版:
cx/gpt-5.5cx/gpt-5.4cx/gpt-5.3-codexcx/gpt-5.2-codexcx/gpt-5.1-codex-maxGitHub Copilot(gh/):
gh/gpt-5.4gh/claude-opus-4.7gh/claude-sonnet-4.6gh/gemini-3.1-pro-previewgh/grok-code-fast-1Cursor(cu/) - 订阅制:
cu/claude-4.6-opus-maxcu/claude-4.5-sonnet-thinkingcu/gpt-5.3-codexcu/kimi-k2.5GLM(glm/) - 0.6***/百万 tokens:
glm/glm-5.1glm/glm-5glm/glm-4.7MiniMax(minimax/) - 0.2***/百万 tokens:
minimax/MiniMax-M2.7minimax/MiniMax-M2.5Kimi(kimi/) - 9***/月 flat 费率:
kimi/kimi-k2.5kimi/kimi-k2.5-thinkingKiro(kr/) - 免费无限量:
kr/claude-sonnet-4.5kr/claude-haiku-4.5kr/glm-5kr/MiniMax-M2.5kr/qwen3-coder-nextkr/deepseek-3.2OpenCode Free(oc/) - 免费无需认证:
opencode.ai/zen/v1/models 获取Vertex AI(vertex/) - 300***免费额度:
vertex/gemini-3.1-pro-previewvertex/gemini-3-flash-previewvertex/gemini-2.5-flashvertex-partner/glm-5-maasvertex-partner/deepseek-v3.2-maas"Language model did not provide messages"(语言模型未返回消息)
速率限制
cc/claude-opus-4-7 → glm/glm-5.1 → kr/claude-sonnet-4.5OAuth令牌过期
成本过高
控制台在错误端口打开
PORT=20128 和 NEXT_PUBLIC_BASE_URL=http://localhost:20128首次登录失败
.env 中的 INITIAL_PASSWORD123456logs/ 目录下无请求日志
ENABLE_REQUEST_LOGS=truePOST http://localhost:20128/v1/chat/completions
Authorization: Bearer your-api-key
Content-Type: application/json
{
"model": "cc/claude-opus-4-6",
"messages": [
{"role": "user", "content": "Write a function to..."}
],
"stream": true
}
GET http://localhost:20128/v1/models
Authorization: Bearer your-api-key
→ 返回所有模型和组合(OpenAI格式)
感谢所有帮助改进9Router的贡献者!
https://github.com/diegosouzapw/OmniRoute — 9Router的全功能TypeScript分支。新增36+提供商、4层自动回退、多模态API(图像、嵌入、音频、TTS)、熔断机制、语义缓存、LLM评估和完善的控制台。包含368+单元测试。可通过npm和Docker获取。
站在巨人的肩膀上构建:
特别感谢这些作者 — 没有他们的工作,9Router的token节省功能将无法实现。在GitHub上给他们点个⭐吧!
MIT许可证 - 详见LICENSE。
用❤️为全天候编码的开发者打造
来自真实用户的反馈,见证轩辕镜像的优质服务