Claude Code Router:一键接入多种AI模型的智能路由器

Claude Code Router

什么是Claude Code Router?

Claude Code Router是一款革命性的开源代理工具,专为解决AI模型平台锁定问题而生。它作为Claude Code CLI与各大AI模型供应商之间的智能中介,让开发者无需Anthropic官方API即可享受Claude Code的优秀体验。支持Gemini、Ollama、Deepseek、OpenRouter等多种模型,提供智能路由、成本优化和高度可定制化功能,真正实现AI模型的自由切换与灵活部署。

核心优势:

  • 模型自由: 打破平台锁定,无缝接入Gemini, Ollama, Deepseek, OpenRouter等多种模型。
  • 成本效益: 可根据任务需求选择不同成本的模型,例如使用本地免费的Ollama模型或性价比高的 API服务。
  • 功能强大: 支持基于任务类型的智能路由,为不同操作(如代码生成、后台索引)分配最合适的模型。
  • 高度可定制: 通过自定义转换器(Transformers),可以适配任意遵循OpenAI API格式的提供商。

GitHub:https://github.com/musistudio/claude-code-router

安装

安装Node.js 18+版本

进入Node.JS 官网,选择对应的操作系统和版本下载

安装claude code

bash 复制代码
npm install -g @anthropic-ai/claude-code

安装Claude Code Router:

装完成后,系统中将拥有 ccr 命令。

bash 复制代码
npm install -g @musistudio/claude-code-router

使用

启动CCR

bash 复制代码
ccr code

首次运行时,CCR会引导完成交互式配置,让你设置第一个AI提供商和模型。只需按照提示输入提供商名称、API Base URL、API 密钥、模型命令即可。

bash 复制代码
C:\Users\Administrator>ccr code
Enter Provider Name: Gemini
Enter Provider API KEY: 123456
Enter Provider URL: https://xxx.com
Enter MODEL Name: gemini-2.5-pro

授权信任Claude在当前目录中进行操作,建议在新建且安全的目录下启动Claude Code 授权同意后,就可以像使用官方 claude-code 一样与CCR互动了。

ccr命令参考

以下是 ccr CLI 的主要命令:

命令 (Command) 描述 (Description)
ccr code 启动CCR代理会话。这是最常用的命令
ccr start 启动CCR服务
ccr stop 停止CCR服务
ccr restart 重启CCR服务
ccr status 显示CCR服务状态
ccr ui 在浏览器中打开Web UI管理界面
ccr help 显示所有可用命令和选项的帮助信息
ccr version 显示当前安装的 Claude Code Router 的版本号

动态切换模型

如果在config.json配置有多个模型供应商,此时可以在使用过程中动态切换模型

  • 使用/model命令,动态切换模型命令格式: /model provider_name,model_name

示例:

bash 复制代码
/model openrouter,anthropic/claude-3.5-sonnet

配置示例说明

CCR的所有配置都存储在 ~/.claude-code-router/config.json 文件中。可以直接编辑此文件以进行高级设置。
除开CCR引导的交互式配置自动生成外,还可以手动创建config.json配置文件进行手动配置,不同操作系统创建方式不同

Linux、Mac:

bash 复制代码
 ~/.claude-code-router/config.json

Wondows:

bash 复制代码
C:\Users\用户名\.claude-code-router/config.json

config.json文件如何配置可以参考开源项目的config.example.json文件。关键部分如下:

vbnet 复制代码
PROXY_URL (可选): 为 API 请求设置代理,例如:"PROXY_URL": "http://127.0.0.1:7890"

LOG (可选): 通过将其设置为true来启用日志记录。日志文件将位于$HOME/.claude-code-router.log

APIKEY (可选): 设置一个密钥来进行身份验证。设置后,客户端请求必须在Authorization 请求头 (例如, Bearer your-secret-key) 或 x-api-key 请求头中提供此密钥。例如:"APIKEY": "your-secret-key"

HOST (可选): 设置服务的主机地址。如果未设置APIKEY,出于安全考虑,主机地址将强制设置为 127.0.0.1,以防止未经授权的访问。例如:"HOST": "0.0.0.0"

NON_INTERACTIVE_MODE (可选): 当设置为 true 时,启用与非交互式环境(如GitHub Actions、Docker容器或其他CI/CD系统)的兼容性。这会设置适当的环境变量(CI=true、FORCE_COLOR=0 等)并配置stdin 处理,以防止进程在自动化环境中挂起。例如:"NON_INTERACTIVE_MODE": true

Providers: 用于配置不同的模型提供商

Router: 用于设置路由规则。default 指定默认模型,如果未配置其他路由,则该模型将用于所有请求

API_TIMEOUT_MS: API 请求超时时间,单位为毫秒

配置示例说明:

bash 复制代码
{
  // 全局 API 密钥,用于访问此应用程序自身的主要服务。
  "APIKEY": "your-secret-key",

  // 配置代理服务器的 URL,所有的网络请求都将通过这个代理发出。
  // "http://127.0.0.1:5555" 指向本地运行的代理服务。
  "PROXY_URL": "http://127.0.0.1:5555", 

  // 日志记录开关。如果设置为 true,应用程序将生成并记录运行日志。
  "LOG": true,

  // API 请求的超时时间,单位为毫秒。
  // 这里的 600000 毫秒等于 600 秒(10分钟)。
  "API_TIMEOUT_MS": 600000,

  // 非交互模式开关。如果设置为 false,应用程序可以与用户进行交互(例如,请求输入)。
  // 设置为 true 时,它将在没有用户干预的情况下运行。
  "NON_INTERACTIVE_MODE": false,

  // "提供者"列表,定义了可以使用的不同 AI 模型服务。
  "Providers": [
    {
      // 提供商的唯一名称
      "name": "gemini",
      // 该提供者 API 的基础 URL 地址
      "api_base_url": "https://generativelanguage.googleapis.com/v1beta/models/",
      // 提供商的 API 密钥
      "api_key": "AIzaSyxxxxxxEfZDzBs1lC0Ac08",
      // 提供商可用的模型名称列表
      "models": ["gemini-2.5-flash", "gemini-2.5-pro"],
      // 指定用于处理请求和响应的转换器
      "transformer": {
        // 指定要使用的转换器名称
        "use": ["gemini"]
      }
    }
  ],

  // "路由器"配置,用于根据不同的任务类型,智能地选择使用哪个"提供者"和"模型"。
  "Router": {
    // 默认模型提供商 默认使用模型
    "default": "gemini,gemini-2.5-pro",
    // 用于处理后台任务的模型。可以是一个较小的本地模型以节省成本。
    "background": "gemini,gemini-2.5-flash",
    // 用于需要深度思考或推理任务的模型。
    "think": "gemini,gemini-2.5-flash",
    // 用于处理长文本上下文任务的模型。
    "longContext": "gemini,gemini-2.5-flash",
    // 定义长文本的阈值(可能是字符数或 token 数)。当输入超过此阈值时,将启用 "longContext" 路由。
    "longContextThreshold": 60000,
    // 用于处理网络搜索任务,需要模型本身支持
    "webSearch": "gemini,gemini-2.5-flash"
  }
}

核心配置说明

providers - 定义AI提供商

此部分是一个数组,用于定义要使用的所有AI模型提供商。

  • name: 提供商的唯一标识符(例如 "gemini", "ollama")
  • api_base: API 的基础 URL
  • api_key: API 密钥
  • models:提供商可用的模型名称列表
  • transformer:(可选): 指定用于处理请求和响应的转换器

示例配置:

bash 复制代码
  "Providers": [
    {
      "name": "gemini1",
      "api_base_url": "https://generativelanguage.googleapis.com/v1beta/models/",
      "api_key": "AIzaSyCvmL0_gwkJOH9d8jFlDFe3_9rZA1GO8OQ",
      "models": ["gemini-2.5-flash", "gemini-2.5-pro"],
      "transformer": {
        "use": ["gemini"]
      }
    }
   ]

routing - 智能路由规则

这是CCR的核心功能之一。可以为Claude Code的不同内部操作指定不同的模型,以实现性能和成本的最佳平衡。

  • default: 默认模型,用于常规任务的默认模型。
  • background: 后台模型,用于后台任务的模型。这可以是一个较小的本地模型以节省成本。
  • think: 思考模型,用于在执行任务前进行规划和推理。
  • longContext: 长上下文模型,用于处理和分析大型文件或长篇对话。
  • longContextThreshold : 触发长上下文模型的令牌数阈值。如果未指定,默认为 60000。
  • webSearch: 用于处理网络搜索任务,需要模型本身支持。如果使用openrouter需要在模型后面加上:online后缀。

示例配置:

bash 复制代码
  // "路由器"配置,用于根据不同的任务类型,智能地选择使用哪个"提供者"和"模型"。
  "Router": {
    // 默认模型提供商 默认使用模型
    "default": "gemini,gemini-2.5-pro",
    // 用于处理后台任务的模型。可以是一个较小的本地模型以节省成本。
    "background": "gemini,gemini-2.5-flash",
    // 用于需要深度思考或推理任务的模型。
    "think": "gemini,gemini-2.5-flash",
    // 用于处理长文本上下文任务的模型。
    "longContext": "gemini,gemini-2.5-flash",
    // 定义长文本的阈值(可能是字符数或 token 数)。当输入超过此阈值时,将启用 "longContext" 路由。
    "longContextThreshold": 60000,
    // 用于处理网络搜索任务,需要模型本身支持
    "webSearch": "gemini,gemini-2.5-flash"
  }

transformers - 高级自定义

Transformers允许修改请求和响应负载,以确保与不同提供商API的兼容性。

内置Transformer:

makefile 复制代码
Anthropic: 如果只使用这一个转换器,则会直接透传请求和响应(可以用它来接入其他支持Anthropic端点的服务商)

deepseek: 适配 DeepSeek API 的请求/响应

gemini: 适配 Gemini API 的请求/响应

openrouter: 适配OpenRouter API 的请求/响应。它还可以接受一个provider路由参数,以指定OpenRouter应使用哪些底层提供商

全局Transformer: 将转换器应用于提供商的所有模型。

openrouter转换器将应用于openrouter提供商下的所有模型。

bash 复制代码
 {
   "name": "openrouter",
   "api_base_url": "https://openrouter.ai/api/v1/chat/completions",
   "api_key": "sk-xxx",
   "models": [
     "google/gemini-2.5-pro-preview",
     "anthropic/claude-sonnet-4",
     "anthropic/claude-3.5-sonnet"
   ],
   "transformer": { "use": ["openrouter"] }
 }

特定于模型的Transformer: 将转换器应用于特定模型。

deepseek转换器应用于所有模型,而额外的openrouter转换器仅应用于deepseek-chat模型。

bash 复制代码
 {
   "name": "deepseek",
   "api_base_url": "https://api.deepseek.com/chat/completions",
   "api_key": "sk-xxx",
   "models": ["deepseek-chat", "deepseek-reasoner"],
   "transformer": {
     "use": ["deepseek"],
     "deepseek-chat": { "use": ["openrouter"] }
   }
 }

向Transformer 传递选项: 某些转换器(如 maxtoken)接受选项。

要传递选项,使用嵌套数组,其中第一个元素是转换器名称,第二个元素是选项对象。

bash 复制代码
{
  "name": "siliconflow",
  "api_base_url": "https://api.siliconflow.cn/v1/chat/completions",
  "api_key": "sk-xxx",
  "models": ["moonshotai/Kimi-K2-Instruct"],
  "transformer": {
    "use": [
      [
        "maxtoken",
        {
          "max_tokens": 16384
        }
      ]
    ]
  }
}

UI模式

为了获得更直观的体验,可以使用UI模式来管理配置,在终端输入以下命令

bash 复制代码
ccr ui

将打开一个基于Web的界面,输入配置文件中的APIKEY进行认证登录 然后可以在其中轻松查看和编辑config.json文件

异常

异常1:

执行ccr code命令后可能会像执行claude命令一样出现登录界面的提示操作,此时可以尝试删除.claude.json

Linux、Mac:

bash 复制代码
~/.claude.json

Windows:

bash 复制代码
C:\Users\用户名\.claude.json

异常2:

如果使用Gemini,有可能出现400错误,可以查看C:\Users\用户名\.claude-code-router\claude-code-router.log日志文件进行异常排除,例如这里遇到:User location is not supported for the API use.,此时意味着你所处国家不支持访问

bash 复制代码
 "error": {
    "code": 400,
    "message": "User location is not supported for the API use.",
    "status": "FAILED_PRECONDITION"
  }
相关推荐
zabr24 分钟前
AI黑箱解密:开发者必须了解的AI内部机制真相,原来我们一直被忽悠了
前端·aigc·ai编程
AI大模型35 分钟前
万字长文!从 0 到 1 搭建基于 LangGraph 的 AI Agent
langchain·llm·agent
Baihai_IDP1 小时前
OpenAI 开源模型 gpt-oss 是在合成数据上训练的吗?一些合理推测
开源·llm·openai
智泊AI2 小时前
手撕LLM | 从0开始讲解AI大模型底层技术原理
llm
大熊猫侯佩2 小时前
拒绝羡慕 Cursor!Xcode 自己也能利用 AI 大模型让撸码如虎添翼【超详细配置】
macos·ai编程·xcode
聚客AI2 小时前
🧠深度解析模型压缩革命:减枝、量化、知识蒸馏
人工智能·深度学习·llm
量子位3 小时前
DeepSeek删豆包冲上热搜,大模型世子之争演都不演了
ai编程·deepseek
AmsWait3 小时前
玩转GitHub Copilot新技能:用MCP服务打造你的智能编程助手
ai编程·github copilot·mcp
302AI4 小时前
编程能力超越 Claude Opus 4?DeepSeek V3.1最新版本实测
llm·ai编程·deepseek