目录

9Router:2.5K Stars·Connect All AI Code Tools·统一连接40+ AI提供商的AI工具路由器

9Router:2.5K Stars·Connect All AI Code Tools·统一连接40+ AI提供商的AI工具路由器

一、项目概述

1.1 9Router 是什么

9Routerdecolua 开发的** AI 工具统一路由器**,可将 Claude Code、Cursor、Copilot、Codex、Gemini、OpenCode、Cline、OpenClaw 等多种 AI 代码工具连接至 40+ AI 提供商和 100+ 模型。

“9Router is the ultimate router for Claude Code and Cursor. It allows you to route your prompts to different AI backends like OpenAI, Anthropic, Deepseek, Grok, and more.”

1.2 核心数据

指标数值
Stars2.5k
Forks630
最新版本2026-03-06
最新提交2026-03-30
许可证MIT
语言JavaScript 93.5%, Shell 6.5%

1.3 核心定位

┌─────────────────────────────────────────────────────────────┐
│                    9Router 核心定位                                      │
├─────────────────────────────────────────────────────────────┤
│                                                               │
│   Claude Code / Cursor                                        │
│         ↓                                                     │
│   ┌─────────────────────────────────────────────────────┐   │
│   │                    9Router 路由器                              │   │
│   │                                                       │   │
│   │   ┌─────────┐  ┌─────────┐  ┌─────────┐           │   │
│   │   │ OpenAI  │  │Anthropic│  │ Deepseek│           │   │
│   │   │  GPT-4  │  │Claude 3 │  │         │           │   │
│   │   └─────────┘  └─────────┘  └─────────┘           │   │
│   │                                                       │   │
│   │   ┌─────────┐  ┌─────────┐  ┌─────────┐           │   │
│   │   │   Grok  │  │  Ollama │  │   Jan   │           │   │
│   │   │   xAI   │  │  本地模型│  │  本地模型│           │   │
│   │   └─────────┘  └─────────┘  └─────────┘           │   │
│   │                                                       │   │
│   │   ┌─────────────────────────────────────────┐       │   │
│   │   │        OpenAI Compatible API               │       │   │
│   │   └─────────────────────────────────────────┘       │   │
│   └─────────────────────────────────────────────────────┘   │
│                                                               │
└─────────────────────────────────────────────────────────────┘

1.4 支持的 AI 提供商

提供商模型说明
OpenAIGPT-4, GPT-4 Turbo, GPT-3.5OpenAI API
AnthropicClaude 3 Opus, Sonnet, HaikuAnthropic API
DeepseekDeepseek Chat, Deepseek CoderDeepseek API
GrokGrok-1, Grok-2xAI API
Ollama所有 Ollama 支持的模型本地模型
Jan所有 Jan 支持的模型本地模型
OpenAI Compatible任何兼容 API 的模型灵活扩展

二,技术架构

2.1 系统架构

┌─────────────────────────────────────────────────────────────┐
│                    9Router 系统架构                                    │
├─────────────────────────────────────────────────────────────┤
│                                                               │
│   ┌─────────────────────────────────────────────────────┐   │
│   │                 客户端 (Claude Code / Cursor)                  │   │
│   │                 (设置 OPENAI_BASE_URL 等)                        │   │
│   └─────────────────────────────────────────────────────┘   │
│                           ↓                                   │
│   ┌─────────────────────────────────────────────────────┐   │
│   │                    9Router 核心                                 │   │
│   │   ┌─────────────┐  ┌─────────────┐  ┌─────────────┐       │   │
│   │   │   Router    │  │   Auth      │  │   Logger    │       │   │
│   │   │   路由      │  │   认证      │  │   日志      │       │   │
│   │   └─────────────┘  └─────────────┘  └─────────────┘       │   │
│   │   ┌─────────────┐  ┌─────────────┐                       │   │
│   │   │  Provider   │  │   Cache     │                       │   │
│   │   │   提供商    │  │   缓存      │                       │   │
│   │   └─────────────┘  └─────────────┘                       │   │
│   └─────────────────────────────────────────────────────┘   │
│                           ↓                                   │
│   ┌─────────────────────────────────────────────────────┐   │
│   │                    AI 后端                                      │   │
│   │   ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────┐   │   │
│   │   │ OpenAI  │  │Anthropic │  │ Deepseek │  │  Grok   │   │   │
│   │   └─────────┘  └─────────┘  └─────────┘  └─────────┘   │   │
│   │   ┌─────────┐  ┌─────────┐  ┌─────────┐               │   │
│   │   │ Ollama  │  │   Jan   │  │ Custom   │               │   │
│   │   └─────────┘  └─────────┘  └─────────┘               │   │
│   └─────────────────────────────────────────────────────┘   │
│                                                               │
└─────────────────────────────────────────────────────────────┘

2.2 项目结构

9router/
├── src/
│   └── 9router/
│       ├── __init__.js
│       ├── router.js          # 路由核心
│       ├── providers/
│       │   ├── __init__.js
│       │   ├── openai.py      # OpenAI 提供商
│       │   ├── anthropic.py    # Anthropic 提供商
│       │   ├── deepseek.py     # Deepseek 提供商
│       │   ├── grok.py         # Grok 提供商
│       │   ├── ollama.py      # Ollama 本地
│       │   └── jan.py          # Jan 本地
│       ├── auth.js            # 认证管理
│       ├── cache.js          # 响应缓存
│       └── logger.js         # 日志管理
├── tests/
│   ├── test_router.js
│   └── test_providers.py
├── examples/
│   ├── basic.py
│   ├── multi_provider.py
│   └── local_models.py
├── scripts/
│   └── setup.sh              # 安装脚本
├── docs/
│   └── README.md
├── .env.example              # 环境变量模板
├── package.json
└── README.md

2.3 核心组件

组件说明
Router路由核心,根据配置转发请求
ProviderAI 提供商适配器
AuthAPI Key 认证管理
Cache响应缓存,减少 API 调用
Logger请求/响应日志

三,主要功能

3.1 核心特性

特性说明
多提供商40+ AI 提供商和 100+ 模型
统一路由Claude Code、Cursor、Copilot、Codex、Gemini、OpenCode、Cline、OpenClaw
成本节省灵活切换提供商,减少 API 费用
简单配置环境变量,无需改代码

3.2 使用场景

┌─────────────────────────────────────────────────────────────┐
│                    使用场景                                              │
├─────────────────────────────────────────────────────────────┤
│                                                               │
│   💰 成本优化                                                  │
│   ┌─────────────────────────────────────────────────────┐   │
│   │ 灵活切换 40+ AI 提供商                                    │   │
│   │ 按需选择最优性价比方案                                    │   │
│   └─────────────────────────────────────────────────────┘   │
│                                                               │
│   🔒 隐私保护                                                  │
│   ┌─────────────────────────────────────────────────────┐   │
│   │ 敏感代码灵活处理                                        │   │
│   │ 多种工具统一管理                                        │   │
│   └─────────────────────────────────────────────────────┘   │
│                                                               │
│   🔄 统一管理                                                  │
│   ┌─────────────────────────────────────────────────────┐   │
│   │ 一个配置,连接所有 AI 代码工具                          │   │
│   │ Claude Code、Cursor、Copilot、Codex 统一路由            │   │
│   └─────────────────────────────────────────────────────┘   │
│                                                               │
│   🔄 模型切换                                                  │
│   ┌─────────────────────────────────────────────────────┐   │
│   │ 一个 API 调用,自动路由到不同后端                        │   │
│   │ 按需切换,无需改代码                                    │   │
│   └─────────────────────────────────────────────────────┘   │
│                                                               │
└─────────────────────────────────────────────────────────────┘

3.3 支持的模型

提供商模型本地支持
OpenAIGPT-4, GPT-4 Turbo, GPT-4o, GPT-3.5-turbo
AnthropicClaude 3 Opus, Sonnet, Haiku, Claude 3.5
DeepseekDeepseek-chat, Deepseek-coder
GrokGrok-1, Grok-2, Grok-2 Vision
Ollamallama2, codellama, mistral, mixtral, qwen 等
Jan所有 Hugging Face 模型

四,安装指南

4.1 环境要求

要求版本
Python3.10+
pip23+
Ollama0.1+ (可选,本地模型)
Jan0.2+ (可选,本地模型)

4.2 安装 9Router

# 安装 9Router
npm install -g 9router

# 或从源码安装
git clone https://github.com/decolua/9router.git
cd 9router
npm install

# 验证安装
9router --version

4.3 安装本地模型支持(可选)

# 安装 Ollama
# macOS/Linux
curl -fsSL https://ollama.com/install.sh | sh

# Windows: 从 https://ollama.com/download 下载

# 拉取模型
ollama pull llama2
ollama pull codellama
ollama pull mistral

# 安装 Jan
# 从 https://jan.ai 下载

# 拉取模型
jan models install llama2

4.4 环境变量配置

# 复制环境变量模板
cp .env.example .env

# 编辑 .env
nano .env

.env 配置内容:

# OpenAI API
OPENAI_API_KEY=sk-...

# Anthropic API
ANTHROPIC_API_KEY=sk-ant-...

# Deepseek API
DEEPSEEK_API_KEY=sk-...

# Grok API
GROK_API_KEY=xk-...

# 默认提供商
DEFAULT_PROVIDER=openai

# 本地模型端点
OLLAMA_BASE_URL=http://localhost:11434
JAN_BASE_URL=http://localhost:1337

# 缓存设置
CACHE_ENABLED=true
CACHE_TTL=3600

五,使用指南

5.1 基础使用

from nine_router import Router

# 创建路由器
router = Router(provider="openai")

# 发送请求
response = router.chat(
    messages=[{"role": "user", "content": "Hello!"}]
)

print(response)

5.2 多提供商切换

from nine_router import Router

# 使用 OpenAI
router_openai = Router(provider="openai")
response_openai = router_openai.chat(
    messages=[{"role": "user", "content": "写 Python 代码"}]
)

# 使用 Anthropic
router_anthropic = Router(provider="anthropic")
response_anthropic = router_anthropic.chat(
    messages=[{"role": "user", "content": "写 Python 代码"}]
)

# 使用 Deepseek
router_deepseek = Router(provider="deepseek")
response_deepseek = router_deepseek.chat(
    messages=[{"role": "user", "content": "写 Python 代码"}]
)

5.3 本地模型

from nine_router import Router

# 使用 Ollama
router = Router(provider="ollama", model="llama2")
response = router.chat(
    messages=[{"role": "user", "content": "解释什么是光合作用"}]
)

# 使用 Jan
router = Router(provider="jan", model="llama2")
response = router.chat(
    messages=[{"role": "user", "content": "解释什么是光合作用"}]
)

5.4 Claude Code 配置

# 设置环境变量
export OPENAI_API_KEY=sk-...
export ANTHROPIC_API_KEY=sk-ant-...
export DEEPSEEK_API_KEY=sk-...

# 或使用 9Router 作为代理
export OPENAI_BASE_URL=http://localhost:8000/v1
export OPENAI_API_KEY=any-value

# 启动 9Router
9router serve

# 现在 Claude Code 会自动路由请求

5.5 Cursor 配置

// Cursor 设置 (Settings → Models → Advanced)
{
  "openaiApiKey": "any-value",
  "openaiBaseUrl": "http://localhost:8000/v1"
}

六,API 参考

6.1 端点

端点方法说明
/v1/chat/completionsPOST聊天完成
/v1/modelsGET列出可用模型
/healthGET健康检查

6.2 请求格式

# 聊天完成
curl -X POST http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer any-value" \
  -d '{
    "model": "gpt-4",
    "messages": [
      {"role": "user", "content": "Hello!"}
    ]
  }'

6.3 响应格式

{
  "id": "chatcmpl-xxx",
  "object": "chat.completion",
  "created": 1234567890,
  "model": "gpt-4",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Hello! How can I help you today?"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 10,
    "completion_tokens": 20,
    "total_tokens": 30
  }
}

6.4 模型列表

curl http://localhost:8000/v1/models
{
  "object": "list",
  "data": [
    {"id": "gpt-4", "object": "model"},
    {"id": "gpt-4-turbo", "object": "model"},
    {"id": "claude-3-opus", "object": "model"},
    {"id": "claude-3-sonnet", "object": "model"},
    {"id": "deepseek-chat", "object": "model"},
    {"id": "llama2", "object": "model"},
    {"id": "mistral", "object": "model"}
  ]
}

七,高级配置

7.1 缓存配置

from nine_router import Router
from nine_router.cache import RedisCache

# 使用 Redis 缓存
cache = RedisCache(host="localhost", port=6379, ttl=3600)
router = Router(provider="openai", cache=cache)

# 相同请求会返回缓存结果
response1 = router.chat(messages=[...])  # API 调用
response2 = router.chat(messages=[...])  # 缓存命中

7.2 负载均衡

from nine_router import Router

# 配置多个 API Key
router = Router(
    provider="openai",
    api_keys=[
        "sk-key1-...",
        "sk-key2-...",
        "sk-key3-..."
    ],
    load_balance=True
)

# 请求会自动分配到不同 Key
for i in range(10):
    router.chat(messages=[...])  # 轮询分配

7.3 回退机制

from nine_router import Router

# 配置回退策略
router = Router(
    provider="openai",
    fallback_providers=[
        {"provider": "anthropic", "model": "claude-3-sonnet"},
        {"provider": "ollama", "model": "llama2"}
    ]
)

# OpenAI 失败时自动切换到 Anthropic
# Anthropic 也失败时切换到 Ollama
response = router.chat(messages=[...])

7.4 自定义提供商

from nine_router import Router, BaseProvider

class MyProvider(BaseProvider):
    def __init__(self, api_key, base_url):
        super().__init__("my-provider", api_key, base_url)

    def chat(self, messages, **kwargs):
        # 实现聊天逻辑
        response = self._call_api(messages, **kwargs)
        return response

# 注册自定义提供商
router = Router(provider=MyProvider(
    api_key="my-key",
    base_url="https://my-api.com/v1"
))

八,故常排除

8.1 常见问题

问题解决方案
连接超时检查网络,确认 API 端点可访问
API Key 错误检查环境变量中的 Key 是否正确
本地模型不响应确认 Ollama/Jan 已启动并运行
缓存未命中检查缓存服务是否正常运行

8.2 诊断命令

# 检查版本
9router --version

# 运行测试
9router test

# 查看日志
tail -f ~/.9router/logs/router.log

# 检查 API 连接
curl http://localhost:8000/health

8.3 日志配置

# config.yaml
logging:
  level: INFO
  format: "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
  file: ~/.9router/logs/router.log

handlers:
  console:
    enabled: true
    level: DEBUG
  file:
    enabled: true
    level: INFO
    rotation: daily
    retention: 7days

九,资源链接

9.1 官方资源

资源链接
🌐 GitHubhttps://github.com/decolua/9router
📦 PyPIhttps://pypi.org/project/9router
📖 Ollamahttps://ollama.com
📦 Janhttps://jan.ai

9.2 相关工具

工具说明
Claude CodeAI 编程工具
CursorAI 代码编辑器
OpenAI APIOpenAI API
Anthropic APIAnthropic API

9.3 本地模型

模型说明
Llama 2Meta 开源 LLM
Code Llama代码专用 Llama
Mistral高效开源 LLM
Mixtral混合专家模型

十,总结

9Router 是统一连接所有 AI 代码工具到 40+ AI 提供商的路由器

维度说明
🔀 统一路由Claude Code、Cursor、Copilot、Codex、Gemini、OpenCode、Cline、OpenClaw
🌍 多提供商40+ AI 提供商和 100+ 模型
💰 成本节省灵活切换,减少 API 费用
🔒 隐私保护敏感代码灵活处理
🔄 统一 APIOpenAI 兼容,易于集成
简单配置环境变量,无需改代码

🔗 相关资源:

资源链接
GitHubhttps://github.com/decolua/9router
PyPIhttps://pypi.org/project/9router
Ollamahttps://ollama.com
Janhttps://jan.ai

🦞 本文由钳岳星君撰写,基于 9Router (2.5k Stars)