Skip to content

Commit e2633eb

Browse files
authored
Merge pull request xiaoY233#40 from xiaoY233/trae/solo-agent-GGz86c
docs: 新增 Chat2API 项目代码文档
2 parents bc0243c + 406bcf1 commit e2633eb

1 file changed

Lines changed: 352 additions & 0 deletions

File tree

CODE_WIKI.md

Lines changed: 352 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,352 @@
1+
# Chat2API 项目代码文档
2+
3+
## 1. 项目概述
4+
5+
Chat2API 是一个多平台 AI 服务统一管理工具,通过利用官方 Web UI 实现零成本访问领先的 AI 模型。它支持 DeepSeek、GLM、Kimi、MiniMax、Qwen、Z.ai 等提供商,并与 openlcaw、Cline、Roo-Code 等工具无缝集成,使任何 OpenAI 兼容客户端都能开箱即用。
6+
7+
### 核心功能
8+
- OpenAI 兼容 API:提供标准的 OpenAI 兼容 API 端点,实现无缝集成
9+
- 多提供商支持:连接 DeepSeek、GLM、Kimi、MiniMax、Perplexity、Qwen、Z.ai 等
10+
- 上下文管理:智能对话上下文管理,支持滑动窗口、令牌限制和摘要策略
11+
- 函数调用支持:通过提示工程实现所有模型的通用工具调用能力,兼容 Cherry Studio、Kilo Code 等客户端
12+
- 模型映射:灵活的模型名称映射,支持通配符和首选提供商/账户选择
13+
- 自定义参数:支持自定义 HTTP 头,启用网络搜索、思考模式和深度研究功能
14+
- 仪表板监控:实时请求流量、令牌使用和成功率
15+
- API 密钥管理:为本地代理生成和管理密钥
16+
- 模型管理:查看和管理所有提供商的可用模型
17+
- 请求日志:详细的请求日志,用于调试和分析
18+
- 代理配置:灵活的代理设置和路由策略
19+
- 系统托盘集成:从菜单栏快速访问状态
20+
- 多语言支持:英语和简体中文支持
21+
- 现代 UI:清洁、响应式界面,支持明暗主题
22+
23+
## 2. 项目架构
24+
25+
Chat2API 采用 Electron 架构,分为主进程和渲染进程两部分。主进程负责核心功能实现,包括代理服务器、账户管理、模型管理等;渲染进程负责用户界面展示。
26+
27+
### 架构图
28+
29+
```
30+
Chat2API/
31+
├── src/
32+
│ ├── main/ # Electron 主进程
33+
│ │ ├── index.ts # 应用入口点
34+
│ │ ├── tray.ts # 系统托盘集成
35+
│ │ ├── proxy/ # 代理服务器管理
36+
│ │ ├── ipc/ # IPC 处理器
37+
│ │ ├── store/ # 数据存储
38+
│ │ ├── oauth/ # OAuth 认证
39+
│ │ ├── providers/ # 提供商管理
40+
│ │ └── utils/ # 工具函数
41+
│ ├── preload/ # 上下文桥接
42+
│ └── renderer/ # React 前端
43+
│ ├── components/ # UI 组件
44+
│ ├── pages/ # 页面组件
45+
│ ├── stores/ # Zustand 状态管理
46+
│ └── hooks/ # 自定义钩子
47+
├── build/ # 构建资源
48+
└── scripts/ # 构建脚本
49+
```
50+
51+
## 3. 主要模块职责
52+
53+
### 3.1 主进程 (Main Process)
54+
55+
#### 3.1.1 应用核心 (src/main/index.ts)
56+
- 应用启动和初始化
57+
- 窗口管理
58+
- 系统托盘集成
59+
- 异常处理
60+
61+
#### 3.1.2 代理服务 (src/main/proxy/)
62+
- 提供 OpenAI 兼容的 API 端点
63+
- 管理请求路由和转发
64+
- 实现负载均衡策略
65+
- 模型映射和转换
66+
- 会话管理
67+
68+
#### 3.1.3 数据存储 (src/main/store/)
69+
- 管理应用配置
70+
- 存储提供商和账户信息
71+
- 日志管理
72+
73+
#### 3.1.4 OAuth 认证 (src/main/oauth/)
74+
- 处理不同提供商的认证流程
75+
- 令牌提取和管理
76+
77+
#### 3.1.5 提供商管理 (src/main/providers/)
78+
- 内置提供商支持
79+
- 自定义提供商配置
80+
- 提供商状态检查
81+
82+
### 3.2 渲染进程 (Renderer Process)
83+
84+
#### 3.2.1 界面组件 (src/renderer/src/components/)
85+
- 仪表板组件
86+
- 提供商管理组件
87+
- 代理设置组件
88+
- 模型管理组件
89+
- 日志查看组件
90+
91+
#### 3.2.2 页面 (src/renderer/src/pages/)
92+
- 仪表板页面
93+
- 提供商页面
94+
- 代理设置页面
95+
- 模型页面
96+
- API 密钥页面
97+
- 日志页面
98+
- 设置页面
99+
100+
#### 3.2.3 状态管理 (src/renderer/src/stores/)
101+
- 仪表板状态
102+
- 提供商状态
103+
- 代理状态
104+
- 日志状态
105+
- 设置状态
106+
107+
## 4. 关键类与函数
108+
109+
### 4.1 主进程核心类
110+
111+
#### 4.1.1 ProxyServer (src/main/proxy/server.ts)
112+
- **职责**:实现基于 Koa 的代理服务器
113+
- **主要方法**
114+
- `start(port, host)`:启动代理服务器
115+
- `stop()`:停止代理服务器
116+
- `restart(port, host)`:重启代理服务器
117+
- `isRunning()`:检查服务器是否运行
118+
- `getStatistics()`:获取服务器统计信息
119+
120+
#### 4.1.2 LoadBalancer (src/main/proxy/loadbalancer.ts)
121+
- **职责**:实现负载均衡策略
122+
- **主要方法**
123+
- `selectAccount(model, strategy, preferredProviderId, preferredAccountId)`:选择合适的账户
124+
- `markAccountFailed(accountId)`:标记账户失败
125+
- `clearAccountFailure(accountId)`:清除账户失败状态
126+
- `getAvailableAccounts(model, preferredProviderId, excludeFailed)`:获取可用账户列表
127+
128+
#### 4.1.3 ModelMapper (src/main/proxy/modelMapper.ts)
129+
- **职责**:支持请求模型到实际模型的映射
130+
- **主要方法**
131+
- `mapModel(requestedModel, provider)`:映射模型名称
132+
- `getActualModel(requestedModel, providerId)`:获取实际模型名称
133+
- `getPreferredProvider(requestedModel)`:获取首选提供商
134+
- `addMapping(requestModel, actualModel, preferredProviderId, preferredAccountId)`:添加模型映射
135+
136+
#### 4.1.4 StoreManager (src/main/store/store.ts)
137+
- **职责**:管理应用数据存储
138+
- **主要方法**
139+
- `getConfig()`:获取应用配置
140+
- `updateConfig(config)`:更新应用配置
141+
- `getProviders()`:获取提供商列表
142+
- `getAccountsByProviderId(providerId, activeOnly)`:获取指定提供商的账户
143+
- `addLog(level, message, data)`:添加日志
144+
145+
### 4.2 渲染进程核心组件
146+
147+
#### 4.2.1 Dashboard (src/renderer/src/pages/Dashboard.tsx)
148+
- **职责**:展示应用仪表板,包括请求统计、提供商状态等
149+
150+
#### 4.2.2 Providers (src/renderer/src/pages/Providers.tsx)
151+
- **职责**:管理 AI 服务提供商和账户
152+
153+
#### 4.2.3 ProxySettings (src/renderer/src/pages/ProxySettings.tsx)
154+
- **职责**:配置代理服务器设置,包括端口、负载均衡策略等
155+
156+
#### 4.2.4 Models (src/renderer/src/pages/Models.tsx)
157+
- **职责**:管理和查看可用的 AI 模型
158+
159+
#### 4.2.5 ApiKeys (src/renderer/src/pages/ApiKeys.tsx)
160+
- **职责**:管理 API 密钥
161+
162+
## 5. 依赖关系
163+
164+
### 5.1 核心依赖
165+
166+
| 依赖 | 版本 | 用途 |
167+
|------|------|------|
168+
| Electron | 33+ | 跨平台桌面应用框架 |
169+
| React | 18+ | UI 框架 |
170+
| TypeScript | 5+ | 类型安全的 JavaScript |
171+
| Koa | 2.15+ | HTTP 服务器 |
172+
| Zustand | 5+ | 状态管理 |
173+
| Tailwind CSS | 3.4+ | CSS 框架 |
174+
| Axios | 1.7+ | HTTP 客户端 |
175+
| electron-store | 10+ | 数据存储 |
176+
| eventsource-parser | 3+ | 处理 Server-Sent Events |
177+
| i18next | 25+ | 国际化 |
178+
179+
### 5.2 开发依赖
180+
181+
| 依赖 | 版本 | 用途 |
182+
|------|------|------|
183+
| electron-vite | 2.3+ | 构建工具 |
184+
| vite | 5.4+ | 前端构建工具 |
185+
| typescript | 5.6+ | 类型检查 |
186+
| tailwindcss | 3.4+ | CSS 框架 |
187+
| electron-builder | 25.1+ | 应用打包 |
188+
189+
## 6. 项目运行方式
190+
191+
### 6.1 开发环境
192+
193+
#### 6.1.1 安装依赖
194+
```bash
195+
npm install
196+
```
197+
198+
#### 6.1.2 启动开发服务器
199+
```bash
200+
# Linux/macOS
201+
npm run dev
202+
203+
# Windows
204+
npm run dev:win
205+
```
206+
207+
### 6.2 生产构建
208+
209+
#### 6.2.1 构建应用
210+
```bash
211+
npm run build # 构建应用
212+
npm run build:mac # 构建 macOS 版本
213+
npm run build:win # 构建 Windows 版本
214+
npm run build:linux # 构建 Linux 版本
215+
npm run build:all # 构建所有平台版本
216+
```
217+
218+
### 6.3 运行应用
219+
220+
#### 6.3.1 启动应用
221+
```bash
222+
# 预览构建版本
223+
npm start
224+
225+
# 无沙箱模式启动
226+
npm run start:sandbox
227+
```
228+
229+
## 7. 配置与部署
230+
231+
### 7.1 配置文件
232+
233+
应用数据存储在 `~/.chat2api/` 目录:
234+
- `config.json` - 应用配置
235+
- `providers.json` - 提供商设置
236+
- `accounts.json` - 账户凭证(加密)
237+
- `logs/` - 请求日志
238+
239+
### 7.2 代理配置
240+
241+
- **端口**:默认 8080,可在设置中修改
242+
- **路由策略**:轮询(Round Robin)、填充优先(Fill First)、故障转移(Failover)
243+
- **API 密钥**:可在设置中启用 API 密钥认证
244+
245+
### 7.3 提供商配置
246+
247+
支持的提供商:
248+
- DeepSeek
249+
- GLM
250+
- Kimi
251+
- MiniMax
252+
- Perplexity
253+
- Qwen (CN)
254+
- Qwen AI (Global)
255+
- Z.ai
256+
257+
每个提供商需要配置相应的认证信息,如令牌或凭证。
258+
259+
## 8. 开发指南
260+
261+
### 8.1 代码结构
262+
263+
- **主进程**`src/main/` 目录,包含核心功能实现
264+
- **渲染进程**`src/renderer/src/` 目录,包含 UI 组件和页面
265+
- **共享代码**`src/shared/` 目录,包含主进程和渲染进程共享的代码
266+
267+
### 8.2 扩展提供商
268+
269+
要添加新的提供商支持,需要:
270+
1.`src/main/providers/builtin/` 目录添加提供商实现
271+
2.`src/main/oauth/adapters/` 目录添加 OAuth 适配器
272+
3.`src/main/proxy/adapters/` 目录添加代理适配器
273+
4. 在渲染进程中添加提供商图标和配置界面
274+
275+
### 8.3 调试技巧
276+
277+
- 使用 `npm run dev` 启动开发模式,支持热重载
278+
- 主进程日志可在终端查看
279+
- 渲染进程可使用 Chrome 开发者工具调试(在开发模式下自动打开)
280+
281+
## 9. 常见问题
282+
283+
### 9.1 macOS:"App is damaged and can't be opened"
284+
285+
由于 macOS 安全机制,从 App Store 外下载的应用可能会触发此警告。运行以下命令修复:
286+
287+
```bash
288+
sudo xattr -rd com.apple.quarantine "/Applications/Chat2API.app"
289+
```
290+
291+
### 9.2 端口被占用
292+
293+
如果默认端口 8080 被占用,可在设置中修改代理端口。
294+
295+
### 9.3 提供商认证失败
296+
297+
- 检查令牌是否有效
298+
- 确保网络连接正常
299+
- 查看应用日志获取详细错误信息
300+
301+
## 10. 技术栈
302+
303+
| 组件 | 技术 |
304+
|------|------|
305+
| 框架 | Electron 33+ |
306+
| 前端 | React 18 + TypeScript |
307+
| 样式 | Tailwind CSS |
308+
| 状态管理 | Zustand |
309+
| 构建工具 | Vite + electron-vite |
310+
| 打包工具 | electron-builder |
311+
| 服务器 | Koa |
312+
313+
## 11. 许可证
314+
315+
GNU General Public License v3.0。详见 [LICENSE](LICENSE) 文件。
316+
317+
## 12. 贡献指南
318+
319+
1. Fork 项目
320+
2. 创建功能分支 (`git checkout -b feature/amazing-feature`)
321+
3. 提交更改 (`git commit -m 'Add amazing feature'`)
322+
4. 推送到分支 (`git push origin feature/amazing-feature`)
323+
5. 打开 Pull Request
324+
325+
## 13. 更新日志
326+
327+
### v1.1.4
328+
- 新增 Perplexity 提供商支持
329+
- 改进上下文管理功能
330+
- 优化模型映射逻辑
331+
- 修复已知 bug
332+
333+
### v1.1.3
334+
- 新增函数调用支持
335+
- 改进代理服务器性能
336+
- 优化 UI 界面
337+
338+
### v1.1.2
339+
- 新增 Qwen AI (Global) 支持
340+
- 改进 OAuth 认证流程
341+
- 修复稳定性问题
342+
343+
### v1.1.1
344+
- 新增系统托盘集成
345+
- 改进日志系统
346+
- 修复 minor bug
347+
348+
### v1.1.0
349+
- 初始版本发布
350+
- 支持多个 AI 提供商
351+
- 提供 OpenAI 兼容 API
352+
- 实现基本的代理功能

0 commit comments

Comments
 (0)