Skip to content

Commit e6f3f80

Browse files
committed
feat: 添加分叉变更说明文档
[optional body] 本文档记录 `fork-minimal` 分支相对于上游 `main` 分支的所有修改。
1 parent 8f7294d commit e6f3f80

File tree

1 file changed

+101
-0
lines changed

1 file changed

+101
-0
lines changed

FORK_CHANGES.md

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
# fork-minimal 分支变更说明
2+
3+
本文档记录 `fork-minimal` 分支相对于上游 `main` 分支的所有修改。
4+
5+
## 功能概述
6+
7+
本分支在上游全部功能基础上,新增/恢复以下功能:
8+
9+
1. **供应商卡片模型名称显示**
10+
2. **自动获取模型列表**
11+
3. **恢复"测试模型"按钮**(上游已隐藏)
12+
13+
---
14+
15+
## 用户视角
16+
17+
### 供应商卡片模型名称显示
18+
19+
主界面每个供应商卡片上,在供应商名称旁边直接显示当前配置的模型名称(如 `claude-sonnet-4-5-20250514`),无需点进编辑页面即可查看。
20+
21+
支持的应用类型:
22+
- Claude — 读取 `ANTHROPIC_MODEL` 环境变量
23+
- Codex — 读取 config.toml 中的 `model` 字段
24+
- Gemini — 读取 `GEMINI_MODEL` 环境变量
25+
26+
### 自动获取模型列表
27+
28+
编辑供应商时,Claude、Codex、Gemini、OpenCode 四种表单中均新增"自动获取模型"按钮。点击后自动通过供应商的 API 地址拉取可用模型列表,用户选择即可填入,无需手动查找和输入模型 ID。
29+
30+
### 恢复"测试模型"按钮
31+
32+
上游在 `68a0c304` 中以"供应商请求格式复杂难以统一测试"为由隐藏了该按钮。本分支恢复此功能,在每个供应商卡片的操作按钮中重新显示"测试模型"按钮(OpenCode 类型除外),点击后通过流式健康检查验证供应商可用性。
33+
34+
---
35+
36+
## 开发者视角
37+
38+
### 变更文件清单
39+
40+
| 文件 | 变更类型 | 说明 |
41+
|------|---------|------|
42+
| `src-tauri/src/services/provider/models.rs` | 新增 | 后端模型获取模块(OpenAI 兼容 `/v1/models` 接口) |
43+
| `src-tauri/src/services/provider/mod.rs` | 修改 | 注册 models 子模块,导出 `FetchOpenAiModelsResponse`,新增 `fetch_openai_models` 方法 |
44+
| `src-tauri/src/commands/provider.rs` | 修改 | 新增 `fetch_provider_models_openai` tauri command |
45+
| `src-tauri/src/lib.rs` | 修改 | 注册 `fetch_provider_models_openai` command |
46+
| `src-tauri/Cargo.toml` | 修改 | 新增依赖 |
47+
| `src/lib/api/providers.ts` | 修改 | 新增 `fetchModelsOpenAi()` API 调用封装 |
48+
| `src/components/providers/ProviderCard.tsx` | 修改 | 新增 `extractModelName()` 函数及卡片内模型名称渲染 |
49+
| `src/components/providers/ProviderList.tsx` | 修改 | 恢复 `useStreamCheck` 导入、`handleTest` 回调和 `onTest`/`isTesting` 属性传递 |
50+
| `src/components/providers/forms/ProviderForm.tsx` | 修改 | 新增模型获取状态管理、回调逻辑和 UI 集成 |
51+
| `src/components/providers/forms/ClaudeFormFields.tsx` | 修改 | 新增获取按钮和模型建议列表 |
52+
| `src/components/providers/forms/CodexFormFields.tsx` | 修改 | 新增获取按钮和模型建议列表 |
53+
| `src/components/providers/forms/GeminiFormFields.tsx` | 修改 | 新增获取按钮和模型建议列表 |
54+
| `src/components/providers/forms/OpenCodeFormFields.tsx` | 修改 | 新增获取按钮、导入按钮和模型建议列表 |
55+
| `src/components/providers/forms/hooks/useCodexConfigState.ts` | 修改 | 移除冗余空值检查 |
56+
| `src/utils/providerConfigUtils.ts` | 修改 | 修复清空模型名时未删除 TOML 中 model 行的问题 |
57+
| `.gitignore` | 修改 | 新增忽略规则 |
58+
59+
### 后端架构
60+
61+
```
62+
src-tauri/src/services/provider/models.rs ← 核心:OpenAI /v1/models 请求实现
63+
64+
src-tauri/src/services/provider/mod.rs ← ProviderService::fetch_openai_models()
65+
66+
src-tauri/src/commands/provider.rs ← tauri command: fetch_provider_models_openai
67+
68+
src-tauri/src/lib.rs ← command 注册
69+
```
70+
71+
### 前端架构
72+
73+
```
74+
src/lib/api/providers.ts ← fetchModelsOpenAi() API 封装
75+
76+
src/components/providers/forms/ProviderForm.tsx ← 状态管理 + 回调
77+
78+
ClaudeFormFields / CodexFormFields / ← UI:获取按钮 + datalist 建议
79+
GeminiFormFields / OpenCodeFormFields
80+
81+
src/components/providers/ProviderCard.tsx ← extractModelName() + 卡片渲染
82+
```
83+
84+
---
85+
86+
## 同步上游指南
87+
88+
本分支基于上游 `main` 通过 cherry-pick 方式构建,仅包含两个功能提交:
89+
90+
```
91+
1a0c9b71 feat: 添加提取模型名称的功能
92+
6f4b18da feat: 添加模型自动获取功能并更新相关组件
93+
```
94+
95+
同步上游时推荐操作:
96+
97+
```bash
98+
git fetch upstream
99+
git rebase upstream/main
100+
# 解决冲突(如有),确保两个功能提交保持在最上方
101+
```

0 commit comments

Comments
 (0)