This commit is contained in:
musistudio 2026-01-01 22:11:21 +08:00
parent e7608ada4a
commit 4c5a84e028
17 changed files with 2092 additions and 388 deletions

View file

@ -11,17 +11,103 @@ Claude Code Router Server 是一个核心服务组件,负责将 Claude Code
## 架构概述
```
┌─────────────┐ ┌──────────────────┐ ┌──────────────┐
│ Claude Code │────▶│ CCR Server │────▶│ LLM Provider │
│ Client │ │ (Router + │ │ (OpenAI/ │
└─────────────┘ │ Transformer) │ │ Gemini/etc)│
└──────────────────┘ └──────────────┘
┌─────────────┐ ┌─────────────────────────────┐ ┌──────────────┐
│ 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`),抽象了提供商特定的差异:
```typescript
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. 转换器接口
所有转换器都实现一个通用接口:
```typescript
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`
1. **转换器服务**`packages/core/src/services/transformer.ts`):管理转换器的注册和实例化
2. **提供商配置**:将提供商配置映射到核心包的 LLMProvider 接口
3. **请求管道**:在请求处理过程中按顺序应用转换器
4. **自定义转换器**:支持加载外部转换器插件
### 版本和更新
`@musistudio/llms` 的当前版本是 `1.0.51`。它作为独立的 npm 包发布,可以独立使用或作为 CCR Server 的一部分使用。
## 核心功能
### 1. 请求路由