字
字节笔记本
2026年2月23日
Claude Code Router:灵活的 AI 模型路由工具
Claude Code Router 是一个强大的开源工具,用于将 Claude Code 的请求路由到不同的 AI 模型。该项目在 GitHub 上已获得超过 28,000 stars,它允许开发者自定义与模型的交互方式,同时享受 Anthropic 的更新。
项目简介
Claude Code Router 由 musistudio 开发维护,基于 TypeScript 构建。它作为 Claude Code 和各类 LLM 提供商之间的中间层,提供了灵活的路由、转换和管理功能。通过该工具,你可以根据需求将请求路由到不同的模型(如背景任务、思考模式、长上下文等)。
核心特性
- 模型路由:根据需求将请求路由到不同模型(背景任务、思考模式、长上下文等)
- 多提供商支持:支持 OpenRouter、DeepSeek、Ollama、Gemini、Volcengine、SiliconFlow 等多种模型提供商
- 请求/响应转换:使用转换器为不同提供商自定义请求和响应
- 动态模型切换:在 Claude Code 中使用
/model命令动态切换模型 - CLI 模型管理:通过
ccr model直接从终端管理模型和提供商 - GitHub Actions 集成:在 GitHub 工作流中触发 Claude Code 任务
- 插件系统:通过自定义转换器扩展功能
技术栈
- TypeScript:主要开发语言
- Fastify:高性能 Web 框架
- pnpm:包管理工具
- Monorepo:使用 pnpm workspace 管理多包
安装指南
前置要求
- Node.js >= 18
- Claude Code 已安装
安装步骤
bash
# 安装 Claude Code
npm install -g @anthropic-ai/claude-code
# 安装 Claude Code Router
npm install -g @musistudio/claude-code-router快速开始
1. 配置
创建 ~/.claude-code-router/config.json 文件:
json
{
"APIKEY": "your-secret-key",
"PROXY_URL": "http://127.0.0.1:7890",
"LOG": true,
"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-3.5-sonnet"]
}
],
"Router": {
"default": "deepseek,deepseek-chat",
"think": "deepseek,deepseek-reasoner",
"longContext": "openrouter,anthropic/claude-3.5-sonnet"
}
}2. 启动服务
bash
# 启动 Claude Code with Router
ccr code
# 或使用 UI 模式管理配置
ccr ui
# 使用 CLI 管理模型
ccr model核心代码解析
以下是核心服务器实现的简化代码:
typescript
import Fastify from "fastify";
import cors from "@fastify/cors";
class Server {
private app: FastifyInstance;
configService: ConfigService;
providerService!: ProviderService;
transformerService: TransformerService;
constructor(options: ServerOptions = {}) {
this.app = Fastify({ bodyLimit: 50 * 1024 * 1024 });
this.configService = new ConfigService(options);
this.transformerService = new TransformerService(
this.configService,
this.app.log
);
}
async start(): Promise<void> {
// 注册路由和中间件
this.app.addHook("preHandler", async (req, reply) => {
const url = new URL(`http://127.0.0.1${req.url}`);
if (url.pathname.endsWith("/v1/messages")) {
await router(req, reply, {
configService: this.configService,
tokenizerService: this.tokenizerService,
});
}
});
const address = await this.app.listen({
port: parseInt(this.configService.get("PORT") || "3456", 10),
host: this.configService.get("HOST") || "127.0.0.1",
});
console.log(`🚀 LLMs API server listening on ${address}`);
}
}路由配置详解
Router 配置允许你定义不同场景使用的模型:
| 路由类型 | 说明 | 示例 |
|---|---|---|
default | 默认模型 | deepseek,deepseek-chat |
background | 后台任务 | ollama,qwen2.5-coder:latest |
think | 需要推理的任务 | deepseek,deepseek-reasoner |
longContext | 长上下文任务 | openrouter,google/gemini-2.5-pro-preview |
webSearch | 联网搜索任务 | gemini,gemini-2.5-flash |
环境变量支持
配置支持环境变量插值,使用 $VAR_NAME 或 ${VAR_NAME} 语法:
json
{
"OPENAI_API_KEY": "$OPENAI_API_KEY",
"Providers": [{
"api_key": "$OPENAI_API_KEY"
}]
}预设管理
预设允许你保存、共享和重用配置:
bash
# 导出当前配置为预设
ccr preset export my-preset
# 安装预设
ccr preset install /path/to/preset
# 列出所有预设
ccr preset list注意事项
- 修改配置文件后需要重启服务:
ccr restart - 未设置
APIKEY时,主机强制绑定到127.0.0.1以确保安全 - 支持非交互式模式(适用于 GitHub Actions、Docker 等环境)
项目链接
分享: