mirror of
https://github.com/musistudio/claude-code-router.git
synced 2026-01-30 06:12:06 +00:00
5.8 KiB
5.8 KiB
Server 简介
Claude Code Router Server 是一个核心服务组件,负责将 Claude Code 的 API 请求路由到不同的 LLM 提供商。它提供了完整的 HTTP API,支持:
- API 请求路由:将 Anthropic 格式的请求转换为各种提供商的 API 格式
- 认证与授权:支持 API Key 认证
- 配置管理:动态配置提供商、路由规则和转换器
- Web UI:内置管理界面
- 日志系统:完整的请求日志记录
架构概述
┌─────────────┐ ┌─────────────────────────────┐ ┌──────────────┐
│ Claude Code │────▶│ CCR Server │────▶│ LLM Provider │
│ Client │ │ ┌─────────────────────┐ │ │ (OpenAI/ │
└─────────────┘ │ │ @musistudio/llms │ │ │ Gemini/etc)│
│ │ (核心包) │ │ └──────────────┘
│ │ - 请求转换 │ │
│ │ - 响应转换 │ │
│ │ - 认证处理 │ │
│ └─────────────────────┘ │
│ │
│ - 路由逻辑 │
│ - Agent 系统 │
│ - 配置管理 │
└─────────────────────────────┘
│
├─ Web UI
├─ Config API
└─ Logs API
核心包:@musistudio/llms
服务器构建于 @musistudio/llms 之上,这是一个通用的 LLM API 转换库,提供了核心的请求/响应转换能力。
什么是 @musistudio/llms?
@musistudio/llms 是一个独立的 npm 包(@musistudio/llms),负责处理:
- API 格式转换:在不同的 LLM 提供商 API 之间转换(Anthropic、OpenAI、Gemini 等)
- 请求/响应转换:将请求和响应转换为统一格式
- 认证处理:管理不同提供商的认证方法
- 流式响应支持:处理来自不同提供商的流式响应
- 转换器系统:提供可扩展的架构来添加新的提供商
核心概念
1. 统一请求/响应格式
核心包定义了统一格式(UnifiedChatRequest、UnifiedChatResponse),抽象了提供商特定的差异:
interface UnifiedChatRequest {
messages: UnifiedMessage[];
model: string;
max_tokens?: number;
temperature?: number;
stream?: boolean;
tools?: UnifiedTool[];
tool_choice?: any;
reasoning?: {
effort?: ThinkLevel;
max_tokens?: number;
enabled?: boolean;
};
}
2. 转换器接口
所有转换器都实现一个通用接口:
interface Transformer {
transformRequestIn?: (request: UnifiedChatRequest, provider: LLMProvider, context: TransformerContext) => Promise<any>;
transformRequestOut?: (request: any, context: TransformerContext) => Promise<UnifiedChatRequest>;
transformResponseIn?: (response: Response, context?: TransformerContext) => Promise<Response>;
transformResponseOut?: (response: Response, context: TransformerContext) => Promise<Response>;
endPoint?: string;
name?: string;
auth?: (request: any, provider: LLMProvider, context: TransformerContext) => Promise<any>;
}
3. 内置转换器
核心包包含以下转换器:
- anthropic:Anthropic API 格式
- openai:OpenAI API 格式
- gemini:Google Gemini API 格式
- deepseek:DeepSeek API 格式
- groq:Groq API 格式
- openrouter:OpenRouter API 格式
- 等等...
与 CCR Server 的集成
CCR server 通过以下方式集成 @musistudio/llms:
- 转换器服务(
packages/core/src/services/transformer.ts):管理转换器的注册和实例化 - 提供商配置:将提供商配置映射到核心包的 LLMProvider 接口
- 请求管道:在请求处理过程中按顺序应用转换器
- 自定义转换器:支持加载外部转换器插件
版本和更新
@musistudio/llms 的当前版本是 1.0.51。它作为独立的 npm 包发布,可以独立使用或作为 CCR Server 的一部分使用。
核心功能
1. 请求路由
- 基于 Token 数量的智能路由
- 项目级路由配置
- 自定义路由函数
- 场景化路由(background、think、longContext 等)
2. 请求转换
- 支持多种 LLM 提供商的 API 格式转换
- 内置转换器:Anthropic、DeepSeek、Gemini、OpenRouter、Groq 等
- 可扩展的转换器系统
3. Agent 系统
- 插件式的 Agent 架构
- 内置图片处理 Agent
- 自定义 Agent 支持
4. 配置管理
- JSON5 格式配置文件
- 环境变量插值
- 配置热更新(需重启服务)
使用场景
场景一:个人本地服务
在本地运行服务,供个人 Claude Code 使用:
ccr start
场景二:团队共享服务
使用 Docker 部署,为团队成员提供共享服务:
docker run -d -p 3456:3456 musistudio/claude-code-router
场景三:二次开发
基于暴露的 API 构建自定义应用:
GET /api/config
POST /v1/messages
GET /api/logs
下一步
- Docker 部署指南 - 学习如何部署服务
- API 参考 - 查看完整的 API 文档
- 配置说明 - 了解服务器配置选项