字节笔记本
2026年2月22日
Claude Code Router:灵活的 AI 模型路由工具
Claude Code Router 是一个开源工具,用来把 Claude Code 的请求路由到不同的 AI 模型。项目在 GitHub 上已获得 35,000+ stars,它让你能自己决定用哪个模型干活,同时还能用上 Anthropic 的更新。
项目简介
Claude Code Router 由 musistudio 开发维护,基于 TypeScript 构建。它充当 Claude Code 和各种 LLM 提供商之间的中间层,提供路由、转换和管理功能。你可以根据任务类型把请求分给不同模型——背景任务用便宜的,复杂推理用强的,长上下文用窗口大的。
核心特性
- 模型路由:按任务类型(背景、思考、长上下文等)路由到不同模型
- 多提供商支持:支持 OpenRouter、DeepSeek、Ollama、Gemini、Volcengine、SiliconFlow 等
- 请求/响应转换:用转换器适配不同提供商的 API 格式
- 动态模型切换:Claude Code 里用
/model命令随时换模型 - CLI 模型管理:
ccr model终端命令管理配置 - GitHub Actions 集成:CI/CD 工作流里跑 Claude Code 任务
- 插件系统:自定义转换器扩展功能
- 预设系统:配置导出、分享、安装
- 子代理路由:子代理任务指定特定模型
- 运行时状态监控:Status Line 实时查看路由状态
技术栈
- TypeScript:主要开发语言
- Fastify:Web 框架
- pnpm:包管理 + Monorepo
安装指南
前置要求
- Node.js >= 18
- Claude Code 已安装
安装步骤
npm install -g @anthropic-ai/claude-code
npm install -g @musistudio/claude-code-router快速开始
1. 配置
创建 ~/.claude-code-router/config.json:
{
"APIKEY": "your-secret-key",
"API_TIMEOUT_MS": 600000,
"Providers": [
{
"name": "deepseek",
"api_base_url": "https://api.deepseek.com/chat/completions",
"api_key": "sk-xxx",
"models": ["deepseek-chat", "deepseek-reasoner"]
},
{
"name": "openrouter",
"api_base_url": "https://openrouter.ai/api/v1/chat/completions",
"api_key": "sk-xxx",
"models": ["anthropic/claude-sonnet-4"]
}
],
"Router": {
"default": "deepseek,deepseek-chat",
"think": "deepseek,deepseek-reasoner",
"longContext": "openrouter,anthropic/claude-sonnet-4"
}
}2. 启动
ccr code # 启动 Claude Code with Router
ccr ui # Web 界面管理配置
ccr model # CLI 交互式模型选择
ccr restart # 修改配置后重启路由配置
Router 定义不同场景用的模型:
| 路由类型 | 说明 | 示例 |
|---|---|---|
default | 默认模型 | deepseek,deepseek-chat |
background | 后台任务(省成本) | ollama,qwen2.5-coder:latest |
think | 推理任务 | deepseek,deepseek-reasoner |
longContext | 长上下文(>60K tokens) | openrouter,google/gemini-2.5-pro-preview |
webSearch | 联网搜索 | gemini,gemini-2.5-flash |
image (beta) | 图片处理 | 需模型支持工具调用 |
动态切换:Claude Code 里输入 /model provider_name,model_name。
转换器(Transformers)
转换器负责把请求/响应改成目标提供商能理解的格式。可以全局应用,也可以按模型单独配置。
内置转换器
| 转换器 | 用途 |
|---|---|
Anthropic | 保留原始参数,直连 Anthropic 端点 |
deepseek | 适配 DeepSeek API |
gemini | 适配 Gemini API |
openrouter | 适配 OpenRouter,可指定底层提供商 |
groq | 适配 Groq API |
maxtoken | 设置 max_tokens 上限 |
tooluse | 优化工具调用 |
reasoning | 处理 reasoning_content 字段 |
sampling | 处理 temperature、top_p 等采样参数 |
enhancetool | 给工具调用参数加容错(会关闭流式) |
cleancache | 移除 cache_control 字段 |
vertex-gemini | 通过 Vertex 认证调用 Gemini |
chutes-glm | 非官方 GLM 4.5 支持 |
qwen-cli | 实验性 Qwen CLI 支持 |
rovo-cli | 实验性 GPT-5 支持 |
带参数的转换器
{
"transformer": {
"use": [
["maxtoken", { "max_tokens": 16384 }]
]
}
}按模型单独配置
{
"transformer": {
"use": ["deepseek"],
"deepseek-chat": { "use": ["tooluse"] }
}
}预设管理(Presets)
配置可以导出为预设,方便分享和复用。导出时 API Key 会自动脱敏。
ccr preset export my-preset --description "我的配置" --author "Your Name"
ccr preset install /path/to/preset
ccr preset list
ccr preset info my-preset
ccr preset delete my-preset预设文件结构:
~/.claude-code-router/presets/
└── my-preset/
└── manifest.json环境变量激活
eval "$(ccr activate)" 设置全局环境变量,之后可以直接用 claude 命令,路由自动生效:
ANTHROPIC_AUTH_TOKEN— API KeyANTHROPIC_BASE_URL— 本地路由端点(默认http://127.0.0.1:3456)NO_PROXY— 设为127.0.0.1防止代理干扰DISABLE_TELEMETRY/DISABLE_COST_WARNINGS
子代理路由
子代理任务可以指定用哪个模型,在 prompt 开头嵌入标签即可:
<CCR-SUBAGENT-MODEL>openrouter,anthropic/claude-sonnet-4</CCR-SUBAGENT-MODEL>
请分析这段代码的优化空间...自定义路由脚本
需要更复杂的路由逻辑时,可以写一个 JavaScript 模块:
module.exports = async function router(req, config) {
const userMessage = req.body.messages.find(m => m.role === "user")?.content;
if (userMessage?.includes("explain this code")) {
return "openrouter,anthropic/claude-sonnet-4";
}
return null; // 走默认路由
};在 config.json 中指定路径:"CUSTOM_ROUTER_PATH": "/path/to/custom-router.js"
环境变量插值
API Key 等敏感信息可以用环境变量引用,不用硬编码:
{
"OPENAI_API_KEY": "$OPENAI_API_KEY",
"Providers": [{
"api_key": "$OPENAI_API_KEY"
}]
}支持 $VAR_NAME 和 ${VAR_NAME} 两种语法,递归生效。
状态监控(Status Line)
v1.0.40+ 内置状态栏工具,可在 UI 中开启,实时查看路由运行状态。
GitHub Actions 集成
在 CI/CD 中使用:
steps:
- name: Prepare Environment
run: |
curl -fsSL https://bun.sh/install | bash
mkdir -p $HOME/.claude-code-router
cat << 'EOF' > $HOME/.claude-code-router/config.json
{ "NON_INTERACTIVE_MODE": true, "LOG": true }
EOF
- name: Start Router
run: nohup ~/.bun/bin/bunx @musistudio/claude-code-router start &
- name: Run Claude Code
uses: anthropics/claude-code-action@beta
env:
ANTHROPIC_BASE_URL: http://localhost:3456
with:
anthropic_api_key: "any-string-is-ok"注意设置 NON_INTERACTIVE_MODE: true 防止进程挂起。
注意事项
- 修改配置后重启:
ccr restart - 未设
APIKEY时主机强制绑定127.0.0.1 - 非交互模式适用于 GitHub Actions、Docker 等自动化环境
- 日志分两套:服务器日志(
ccr-*.log)和应用日志(claude-code-router.log)