claude-code-router
基本概念
一款强大的工具,可将 Claude Code 请求路由到不同的模型,并自定义任何请求。
github地址
https://github.com/musistudio/claude-code-router
功能
1、模型路由
根据您的需求将请求路由到不同的模型(比如:后台任务、思考、长上下文)。
2、多提供商支持
支持 OpenRouter、DeepSeek、Ollama、Gemini、Volcengine 和 SiliconFlow 等各种模型提供商。
3、请求/响应转换
使用转换器为不同的提供商自定义请求和响应。
4、动态模型切换
在 Claude Code 中使用 /model 命令动态切换模型。
5、GitHub Actions 集成
在您的 GitHub 工作流程中触发 Claude Code 任务。
6、插件系统
使用自定义转换器扩展功能。
安装
首先,请确保您已安装 Claude Code:
npm install -g @anthropic-ai/claude-code
然后,安装 Claude Code Router:
npm install -g @musistudio/claude-code-router
配置
创建并配置您的 ~/.claude-code-router/config.json 文件
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"。
日志系统: Claude Code Router 使用两个独立的日志系统:
服务器级别日志: HTTP 请求、API 调用和服务器事件使用 pino 记录在 ~/.claude-code-router/logs/ 目录中,文件名类似于 ccr-*.log
应用程序级别日志: 路由决策和业务逻辑事件记录在 ~/.claude-code-router/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 请求超时时间,单位为毫秒。
配置示例
如下是我本地的配置示例:
使用 Router 运行 Claude Code
使用 router 启动 Claude Code:
ccr code
注意: 修改配置文件后,需要重启服务使配置生效:
ccr restart
UI 模式
为了获得更直观的体验,您可以使用 UI 模式来管理您的配置:
ccr ui
这将打开一个基于 Web 的界面,您可以在其中轻松查看和编辑您的 config.json 文件。
Providers
Providers 数组是您定义要使用的不同模型提供商的地方。每个提供商对象都需要:
name: 提供商的唯一名称。
api_base_url: 聊天补全的完整 API 端点。
api_key: 您提供商的 API 密钥。
models: 此提供商可用的模型名称列表。
transformer (可选): 指定用于处理请求和响应的转换器。
Transformers
Transformers 允许您修改请求和响应负载,以确保与不同提供商 API 的兼容性。
全局 Transformer: 将转换器应用于提供商的所有模型。在此示例中,openrouter 转换器将应用于 openrouter 提供商下的所有模型。
特定于模型的 Transformer: 将转换器应用于特定模型。在此示例中,deepseek 转换器应用于所有模型,而额外的 tooluse 转换器仅应用于 deepseek-chat 模型。
Router
Router 对象定义了在不同场景下使用哪个模型:
default: 用于常规任务的默认模型。
background: 用于后台任务的模型。这可以是一个较小的本地模型以节省成本。
think: 用于推理密集型任务(如计划模式)的模型。
longContext: 用于处理长上下文(例如,> 60K 令牌)的模型。
longContextThreshold (可选): 触发长上下文模型的令牌数阈值。如果未指定,默认为 60000。
webSearch: 用于处理网络搜索任务,需要模型本身支持。如果使用openrouter需要在模型后面加上:online后缀。
您还可以使用 /model 命令在 Claude Code 中动态切换模型: /model provider_name,model_name 示例: /model openrouter,anthropic/claude-3.5-sonnet
总结
Claude Code 本身体验极好,但受限于昂贵的订阅费用和网络环境,想要长期使用成本并不低。而 Claude Code Router 提供了一种更灵活、低成本的替代方案:保留 Claude Code 的使用习惯,同时自由接入任意大模型提供商,实现模型的路由、切换与请求适配,大大提升了自由度与可控性。
通过简单配置,你可以:
1、接入 DeepSeek、Gemini、Ollama 等多个模型平台;
2、针对不同任务分发不同模型,提升效率与响应质量;
3、使用本地或国产模型完成大部分需求,显著降低 API 成本;
4、借助 UI 界面,可以方便便捷地管理模型与配置项;
在不改动 Claude Code 原始使用方式的基础上,获得更强模型能力;总的来说,Claude Code Router 是一款非常不错的 Claude Code 代理工具,不仅提升了灵活性,又保留了 Claude Code 高效编码的优势,对于有不同的需求的人还是挺香的。