使用Claude Code Router轻松切换各种高性价比模型

作者:小溪彼岸日期:2025/10/3

前言

前段时间随着Claude Code CLI的爆火也随之火了一款Claude Code CLI扩展Claude Code Router,该扩展工具可以很方便的将各大主流模型接入到Claude Code CLI中使用(那段时间国内各大模型还没有支持Claude Code CLI,Claude Code CLI只能使用Claude Code模型),今天我们也来了解一下这款神奇的工具。对往期内容感兴趣的小伙伴也可以看往期内容:

当前版本

claude-code-router version: 1.0.49

优势

  • 开源免费
  • 支持配置文件和Web UI交互配置方式
  • 灵活配置,可为不同场景指定不同供应商,为不同模型设置请求和响应转换器,一键切换模型配置

限制

  • 每个用户的并发限制为 1,这意味着我们需要将后台请求路由到其他模型

简介

Claude Code Router 是一个开源工具,是 Claude Code 的扩展,旨在增强 AI 编码工作流程。它能将编码请求路由到不同的 AI 模型,为用户提供更灵活的模型交互方式。

Github地址:github.com/musistudio/…

随着Claude Code的爆火,Claude Code Router也受到越来越多小伙伴的喜爱,在Github上目前已坐拥18.3K Star。

对Claude Code Router开源项目原理感兴趣的小伙伴可以看这里:github.com/musistudio/…

功能特性

  • 模型路由:根据您的需求(例如,后台任务、思维、长上下文)将请求路由到不同的模型。
  • 多提供商支持:支持各种模型提供商,如 OpenRouter、DeepSeek、Ollama、Gemini、Volcengine 和 SiliconFlow。
  • 请求/响应转换:使用转换器为不同的提供商自定义请求和响应。
  • 动态模型切换:使用 /model 命令在 Claude Code 中动态切换模型。
  • GitHub Actions集成:在 GitHub 工作流程中触发 Claude Code 任务。
  • 插件系统:使用自定义转换器扩展功能

工作原理示意图

Claude Code Router工作原理大致如下:

环境安装

前提条件

  • NodeJS18及以上版本
  • 安装Claude Code CLI

为什么需要依赖Claude Code CLI呢?通过Claude Code Router开源项目原理部分我们知道,Claude Code Router是对Claude Code CLI的逆向拦截,因此Claude Code CLI还是应用主体。对Claude Code CLI还不了解的小伙伴可以看往期内容:Claude Code CLI初体验

1$ npm install -g @anthropic-ai/claude-code
2

安装Claude Code Router

安装Claude Code Router只需要在命令行终端输入如下指令:

1$ npm install -g @musistudio/claude-code-router
2

在命令行终端执行 ccr -v 输出如下信息表示安装成功

基本使用

命令行参数

在命令行终端输入 ccr --help 查看命令行文档

命令后参数:

  • start:启动服务器,默认使用 ccr code 时会自行启动
  • stop:停止服务器
  • restart:重启服务器,修改配置时需要重启
  • status:显示服务器状态
  • statusline:集成状态栏
  • code:执行 claude CLI 命令
  • ui:在浏览器中打开网页界面

Claude Code Router包含 后台服务 和 CLI 两部分,CLI的终止不影响后台服务的状态。使用【Ctrl+C】终止 ccr code 后,在命令行终端输入 ccr status 仍然可以查看Claude Code Router服务的状态

修改配置文件时需要在命令行终端输入 ccr restart 重启后台服务

不需要使用Claude Code Router时在命令行终端输入 ccr stop 终止后台服务

使用 ccr ui 可用于启动网页版配置

配置文件

这是Claude Code Router原始的配置形式,为Claude Code Router提供供应商、模型等相关配置,这里先提供一份Claude Code Router完整配置文件参考:

1{
2  "APIKEY": "your-secret-key",
3  "PROXY_URL": "http://127.0.0.1:7890",
4  "LOG": true,
5  "API_TIMEOUT_MS": 600000,
6  "NON_INTERACTIVE_MODE": false,
7  "Providers": [
8    {
9      "name": "openrouter",
10      "api_base_url": "https://openrouter.ai/api/v1/chat/completions",
11      "api_key": "sk-xxx",
12      "models": [
13        "google/gemini-2.5-pro-preview",
14        "anthropic/claude-sonnet-4",
15        "anthropic/claude-3.5-sonnet",
16        "anthropic/claude-3.7-sonnet:thinking"
17      ],
18      "transformer": {
19        "use": ["openrouter"]
20      }
21    },
22    {
23      "name": "deepseek",
24      "api_base_url": "https://api.deepseek.com/chat/completions",
25      "api_key": "sk-xxx",
26      "models": ["deepseek-chat", "deepseek-reasoner"],
27      "transformer": {
28        "use": ["deepseek"],
29        "deepseek-chat": {
30          "use": ["tooluse"]
31        }
32      }
33    },
34    {
35      "name": "ollama",
36      "api_base_url": "http://localhost:11434/v1/chat/completions",
37      "api_key": "ollama",
38      "models": ["qwen2.5-coder:latest"]
39    },
40    {
41      "name": "gemini",
42      "api_base_url": "https://generativelanguage.googleapis.com/v1beta/models/",
43      "api_key": "sk-xxx",
44      "models": ["gemini-2.5-flash", "gemini-2.5-pro"],
45      "transformer": {
46        "use": ["gemini"]
47      }
48    },
49    {
50      "name": "volcengine",
51      "api_base_url": "https://ark.cn-beijing.volces.com/api/v3/chat/completions",
52      "api_key": "sk-xxx",
53      "models": ["deepseek-v3-250324", "deepseek-r1-250528"],
54      "transformer": {
55        "use": ["deepseek"]
56      }
57    },
58    {
59      "name": "modelscope",
60      "api_base_url": "https://api-inference.modelscope.cn/v1/chat/completions",
61      "api_key": "",
62      "models": ["Qwen/Qwen3-Coder-480B-A35B-Instruct", "Qwen/Qwen3-235B-A22B-Thinking-2507"],
63      "transformer": {
64        "use": [
65          [
66            "maxtoken",
67            {
68              "max_tokens": 65536
69            }
70          ],
71          "enhancetool"
72        ],
73        "Qwen/Qwen3-235B-A22B-Thinking-2507": {
74          "use": ["reasoning"]
75        }
76      }
77    },
78    {
79      "name": "dashscope",
80      "api_base_url": "https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions",
81      "api_key": "",
82      "models": ["qwen3-coder-plus"],
83      "transformer": {
84        "use": [
85          [
86            "maxtoken",
87            {
88              "max_tokens": 65536
89            }
90          ],
91          "enhancetool"
92        ]
93      }
94    },
95    {
96      "name": "aihubmix",
97      "api_base_url": "https://aihubmix.com/v1/chat/completions",
98      "api_key": "sk-",
99      "models": [
100        "Z/glm-4.5",
101        "claude-opus-4-20250514",
102        "gemini-2.5-pro"
103      ]
104    },
105    {
106      "name": "siliconflow",
107      "api_base_url": "https://api.siliconflow.cn/v1/chat/completions",
108      "api_key": "sk-xxx",
109      "models": ["moonshotai/Kimi-K2-Instruct"],
110      "transformer": {
111        "use": [
112          [
113            "maxtoken",
114            {
115              "max_tokens": 16384
116            }
117          ]
118        ]
119      }
120    }
121  ],
122  "Router": {
123    "default": "deepseek,deepseek-chat",
124    "background": "ollama,qwen2.5-coder:latest",
125    "think": "deepseek,deepseek-reasoner",
126    "longContext": "openrouter,google/gemini-2.5-pro-preview",
127    "longContextThreshold": 60000,
128    "webSearch": "gemini,gemini-2.5-flash"
129  }
130}
131

首次使用需要创建 ~/.claude-code-router/config.json 文件,以魔搭社区Qwen3和OpenRouter为例,配置如下内容,对魔搭社区API Key申请还不了解的小伙伴可以看往期内容:Claude Code CLI平台与中转站接入汇总及避坑

1{
2  "Providers": [
3    {
4      "name": "modelscope",
5      "api_base_url": "https://api-inference.modelscope.cn/v1/chat/completions",
6      "api_key": "魔搭API Key",
7      "models": ["Qwen/Qwen3-Coder-480B-A35B-Instruct", "Qwen/Qwen3-235B-A22B-Thinking-2507"],
8      "transformer": {
9        "use": [
10          [
11            "maxtoken",
12            {
13              "max_tokens": 65536
14            }
15          ],
16          "enhancetool"
17        ],
18        "Qwen/Qwen3-235B-A22B-Thinking-2507": {
19          "use": ["reasoning"]
20        }
21      }
22    },
23    {
24      "name": "openrouter",
25      "api_base_url": "https://openrouter.ai/api/v1/chat/completions",
26      "api_key": "OpenRouter API Key",
27      "models": [
28        "deepseek/deepseek-chat-v3.1:free",
29        "deepseek/deepseek-r1-0528:free"
30      ],
31      "transformer": {
32        "use": ["openrouter"]
33      }
34    }
35  ],
36  "Router": {
37    "default": "modelscope,Qwen/Qwen3-Coder-480B-A35B-Instruct"
38  }
39}
40

config.json 文件有几个关键部分:

  • PROXY_URL:可以为 API 请求设置代理,例如: "PROXY_URL": "http://127.0.0.1:7890" 。
  • LOG:可以通过将其设置为 true 来启用日志记录。设置为 false 时,不会创建任何日志文件。默认值为 true。
  • LOG_LEVEL:设置日志记录级别。可用选项包括:fatal、error、warn、info、debug、trace。默认值为 debug。
  • 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 等)并配置标准处理以防止进程在自动化环境中挂起。示例:"NON_INTERACTIVE_MODE": true。
  • Providers:用于配置不同的模型提供者
    • name:提供程序的唯一名称
    • api_base_url:用于聊天的完整 API endpoint
    • api_key:提供商的 API 密钥
    • models:此提供程序提供的型号名称列表
    • transformer:指定用于处理请求和响应的转换器,可以指定将转换器应用于特定模型
  • Router:用于设置路由规则,default 指定默认模型,如果未配置其他路由,则该模型将用于所有请求
    • default:常规任务的默认模型
    • background:后台任务的模型。这可以是一个较小的本地模型,以节省成本
    • think:推理繁重的任务的模型,例如计划模式
    • longContext:用于处理长上下文(例如,> 60K 令牌)的模型
    • longContextThreshold:触发长上下文模型的令牌计数阈值。如果未指定,则默认为 60000
    • webSearch:用于处理 Web 搜索任务,这需要模型本身支持该功
    • image:用于处理与图像相关的任务(由 CCR 的内置代理支持)。如果模型不支持工具调用,则需要将config.forceUseImageAgent 属性设置为 true
  • API_TIMEOUT_MS:指定 API 调用的超时时间(以毫秒为单位)

UI配置

Claude Code Router提供了可视化UI配置方式来配置 ~/.claude-code-router/config.json 文件,对配置文件形式不习惯的小伙伴也可以使用可视化交互配置形式。

在命令行终端输入 ccr ui 即可在浏览器打开Web配置界面

可以看到这里也正确展示了我们使用配置文件添加的供应商及模型配置

点击【设置】可以进行通用设置配置

点击【状态栏配置】可以设置状态栏展示效果(本人尝试没有看到效果)

点击【JOSN】可以以编辑器形式对config.json进行配置

点击【日志】可以查看日志信息

点击【添加供应商】,选择【deepseek】模版,输入【API密钥】,点击【保存】

保存成功后,即可在供应商列表查看刚刚添加的供应商信息,切换默认路由配置为【deepseek,deepseek-chat】,点击【保存并重启】保存配置文件重启Claude Code Router服务

使用 ccr code 重启Claude Code Router即可使用

启动Claude Code Router

在命令行终端输入 ccr code 即可启动 Claude Code Router 和 Claude Code CLI,并通过 Router 拦截并路由所有请求。

1$ ccr code
2

启动成功后,效果如下,对Claude Code CLI还不了解的小伙伴可以看往期内容:Claude Code CLI初体验

可以看到【API Base URL】地址为本机地址:http://127.0.0.1:3456,输入提示词测试一下,看到正常回复即为配置成功

自定义转换器

Claude Code Router提供自定义转换器功能为非官方供应商提供模型支持,这里以Gemini CLI为例对Gemini提供非官方支持, gemini-cli插件地址:gist.github.com/musistudio/…

下载文件保存到 ~/.claude-code-router/plugins/gemini-cli.js,点击【添加自定义转换器】输入转换器插件文件路径和project参数

保存成功后完整配置如下:

1{
2  "LOG": false,
3  "LOG_LEVEL": "debug",
4  "CLAUDE_PATH": "",
5  "HOST": "127.0.0.1",
6  "PORT": 3456,
7  "APIKEY": "",
8  "API_TIMEOUT_MS": "600000",
9  "PROXY_URL": "",
10  "transformers": [
11    {
12      "name": "",
13      "path": "$HOME/.claude-code-router/plugins/gemini-cli.js",
14      "options": {
15        "project": "your-google-cloud-project-id"
16      }
17    }
18  ],
19  "Providers": [
20    {
21      "name": "gemini",
22      "api_base_url": "https://cloudcode-pa.googleapis.com/v1internal",
23      "api_key": "gemini api key",
24      "models": [
25        "gemini-2.5-flash",
26        "gemini-2.5-pro"
27      ],
28      "transformer": {
29        "use": [
30          "gemini-cli"
31        ]
32      }
33    }
34  ],
35  "Router": {
36    "default": "gemini,gemini-2.5-flash",
37    "background": "",
38    "think": "",
39    "longContext": "",
40    "longContextThreshold": 60000,
41    "webSearch": "",
42    "image": ""
43  },
44  "CUSTOM_ROUTER_PATH": ""
45}
46

本人这里配置失败了,有需求的小伙伴可以再深入研究研究

常见问题

修改配置文件不生效

有时通过配置文件修改了配置,配置确认无误,但是不管如何使用 ccr code 重启Claude Code CLI就是无法正常使用,遇到这种问题,我们可以尝试在命令行终端输入以下命令重启 Claude Code Router 服务

1$ ccr restart
2

重启完成后,再次使用 ccr code 重启Claude Code Router。

总结

Claude Code Router提供了整合多模型共同高效完成任务的能力,同时提供灵活的配置方式,告别单一模型的局限性和高昂的成本,但是与此同时也带来了一定的问题,多模型整合意味着无法详细计算tokens消耗,无法知晓都使用了哪些模型,再加上目前工具尚有一些bug,我们还是需要根据自己的情况酌情使用。随着目前各大供应商陆续支持Claude Code CLI,在Claude Code CLI中使用不同模型也不再是限制问题,只需在在命令行终端配置Base URL和API Key即可,甚至比Claude Code Router配置更简单,所以对于使用单模型的小伙伴来说使用Claude Code Router就显得没有必要了。

友情提示

见原文:使用Claude Code Router轻松切换各种高性价比模型

本文同步自微信公众号 "程序员小溪" ,这里只是同步,想看及时消息请移步我的公众号,不定时更新我的学习经验。友情提示友情提示


使用Claude Code Router轻松切换各种高性价比模型》 是转载文章,点击查看原文


相关推荐


Scrapy 重构新选择:scrapy_cffi 快速上手教程
两只好2025/10/2

随着爬虫场景的不断升级,Scrapy 虽然成熟稳定,但在异步支持、WebSocket 和现代请求库等方面有一些局限。 scrapy_cffi 是在 Scrapy 风格基础上重构的异步爬虫框架,支持更现代的请求库、扩展机制和异步 DB/MQ 管理。 通过这篇教程,你可以快速创建自己的异步爬虫项目,并体验框架的核心特性。 1.为什么要重构 Scrapy Scrapy 本身虽然功能强大,但存在一些痛点: IDE 提示有限:代码提示和补全不够友好 异步支持弱:asyncio 协程能力有限,WebSo


云原生周刊:K8s 故障排查秘籍
KubeSphere 云原生2025/10/2

云原生热点 Perses v0.52.0 发布 Perses 是一个面向可观测性(observability)的开源仪表盘 / 可视化工具,作为 CNCF 的 Sandbox 级别项目。 近日,Perses 宣布了其 0.52.0 版本的发布,带来了多个重大特性与增强,其中包括:对持续性能剖析(continuous profiling)的支持(新增 Pyroscope 数据源插件与 Flame Chart 可视化面板)、日志探索能力(Loki 数据源插件 + 日志面板)、Prometheu


分布式计数器系统完整解决方案
nlog3n10/2/2025

多级缓存架构:本地缓存 + Redis集群 + 数据库,实现性能与可靠性平衡智能分片策略:根据热度动态调整分片数量,解决热点key问题异步数据同步:通过消息队列实现最终一致性,提升写入性能完善的限流防刷:多维度限流 + 用户行为校验,防止恶意攻击强大的容灾能力:自动故障检测、优雅降级、数据恢复机制系统可支持百万级并发,响应时间控制在10ms以内,可用性达到99.99%以上,完全满足大型互联网产品的需求。关键创新点基于访问频率的智能分片算法多级缓存的优雅降级机制操作日志的数据恢复方案。


iOS 26 能耗检测实战指南,升级后电池掉速是否正常 + KeyMob + Instruments 实时监控 + 优化策略
程序员不说人话10/1/2025

本文聚焦 iOS 26 能耗检测,分析系统升级初期耗电风险、Liquid Glass 视觉效果对电池的额外负荷、Adaptive Power 模式机制,介绍如何用 KeyMob + Instruments 记录电量曲线 /功率峰值 /负载指标,定位高耗电模块并优化方案。


Redisson和Zookeeper实现的分布式锁
getdu9/30/2025

可以使用红锁来解决不一致问题,建立多个主节点当获取锁成功的数量n/2+1及以上才算获取锁成功。我觉得就是一个排队,创建节点后看自己是不是最小,不是最小就监听前一个节点,是最小就获取锁成功,锁释放以后,zookeeper会通过Watcher通知当前客户端。客户端获取 /locks/my_lock 目录下所有的子节点,并按节点序号排序。客户端被唤醒后,回到第 2 步,重新检查自己是否变成了最小节点。如果自己不是最小节点,客户端就找到比自己序号小的前一个节点。如果自己创建的节点是序号最小的那个,则成功获取锁。


重新定义创意边界:Seedream 4.0深度测评——从个人创作到企业级生产的AI图像革命
一个天蝎座白勺程序猿2025/10/4

一、引言:AI图像创作的“奇点时刻”” 2025年的AI赛道,图像生成领域正经历一场“效率革命”。从Midjourney的写实风格到DALL·E 3的语义理解,技术迭代速度远超行业预期。然而,用户痛点始终存在: 创作流程割裂:生成、编辑、排版需切换多个工具,设计师日均耗时超3小时在“导出-导入”的重复操作中;一致性失控:多图合成时,人物比例、光影逻辑、风格统一性常需手动修正,电商海报批量生产效率低下;企业部署门槛高:私有化部署成本高昂,API调用缺乏行业适配方案,中小团队难以规模化应用。


Vue2 动态添加属性导致页面不更新的原因与解决方案
excel2025/10/6

在 Vue2 开发中,经常会遇到这样一个问题:对象新增属性后,数据虽然更新了,但页面并没有随之更新。本文将通过一个例子来说明原因,并给出解决方案。 一、问题示例 我们先来看一个简单的例子: <div id="app"> <p v-for="(value, key) in item" :key="key"> {{ value }} </p> <button @click="addProperty">动态添加新属性</button> </div> Vue 实例代码如下: co


【Node】单线程的Node.js为什么可以实现多线程?
你的人类朋友2025/10/7

前言 很多刚接触 Node.js 的开发者都会有一个疑问:既然 Node.js 是单线程的,为什么又能使用 Worker Threads 这样的多线程模块呢? 今天我们就来解开这个看似矛盾的技术谜题。 👀 脑海里先有个印象:【Node.js 主线程】是单线程的,但【可以通过其他方式】实现并行处理 什么是 Node.js 的"单线程"? 事件循环(Event Loop)机制 // 这是一个简单的 Node.js 程序 console.log('开始执行') setTimeout(() =>


第8章:定时任务与触发器——让 Bot 主动服务
芝麻开门-新起点2025/10/8

8.1 什么是定时任务? 在之前的章节中,我们的 Bot 都是被动响应用户的输入。用户提问,Bot 回答。但很多时候,我们希望 Bot 能够主动在特定时间执行任务,例如每天早上发送天气预报、定时提醒用户喝水、或者定期从网站抓取数据并汇报。这就是定时任务 (Scheduled Task) 的用武之地。 Coze 中的定时任务功能,允许你设置一个触发器 (Trigger),当满足预设的时间条件时,自动运行指定的 Bot 或工作流。这极大地扩展了 Bot 的应用场景,使其从一个问答工具变成了一个可以


突破速度障碍:非阻塞启动画面如何将Android 应用启动时间缩短90%
稀有猿诉2025/10/10

本文译自「Breaking the Speed Barrier: How Non-Blocking Splash Screens Cut Android App Launch Time by 90%」,原文链接sankalpchauhan.com/breaking-th…,由Sankalp Chauhan发布于2025年9月28日。 概述 正值佳节期间,我们在每个应用上都能看到精美的启动画面和自定义徽标。在开发这些应用时,每个 Android 开发者都会面临启动画面的困境:用户期望获得美观且品

首页编辑器站点地图

本站内容在 CC BY-SA 4.0 协议下发布

Copyright © 2025 聚合阅读