Skip to content

feat(provider): ✨ 添加预设服务商系统#32

Merged
jorben merged 8 commits intomasterfrom
feature/add-preset-providers
Feb 12, 2026
Merged

feat(provider): ✨ 添加预设服务商系统#32
jorben merged 8 commits intomasterfrom
feature/add-preset-providers

Conversation

@jorben
Copy link
Collaborator

@jorben jorben commented Feb 12, 2026

摘要

本 PR 实现了预设服务商系统,允许应用自动注入预配置的 LLM 服务商,并支持从远程 API 获取模型列表。

主要功能

核心功能

  • PresetProviderService: 单例服务,在应用启动时自动注入预设服务商
  • providerPresets 配置: 支持 OpenAI、Anthropic、Gemini、ZenMux、OpenRouter、SiliconFlow、Ollama 等预设
  • 能力过滤: 可配置的能力字段过滤(如只显示支持 vision 的模型)
  • 自定义服务商: 支持非预设服务商使用 base_url + /models 获取模型列表

UI 改进

  • 预设服务商按配置顺序展示
  • 预设服务商隐藏删除按钮
  • 状态指示灯显示服务商启用状态
  • Model List 按钮与 API suffix 分离布局
  • 简化 suffix 选项,增加"无后缀"选项

IPC 新增

  • provider:getPresets - 获取所有预设配置
  • provider:fetchModelList - 从远程获取模型列表

测试覆盖

  • ✅ providerPresets 配置测试(12个)
  • ✅ PresetProviderService 测试(7个)
  • ✅ provider.handler IPC 测试(新增16个)
  • ✅ ModelService 组件测试(新增4个)
  • ✅ Provider 组件测试(新增7个)

总计:788个测试全部通过

变更文件

  • 新增:PresetProviderService.tsproviderPresets.ts 及对应测试
  • 修改:ModelService.tsxProvider.tsx、IPC handlers、i18n 文件

🤖 Generated with Claude Code

jorben and others added 8 commits February 12, 2026 20:09
…lity filtering

Introduce a preset provider system that auto-injects predefined
providers (OpenAI, Anthropic, Gemini, ZenMux, OpenRouter,
SiliconFlow, Ollama) on app startup with disabled status.

Key changes:
- Add PresetProviderService for automatic preset provider injection
- Add providerPresets config with capabilityField/capabilityFilter
  for model list filtering (e.g. only show vision-capable models)
- Sort provider tabs by preset order (preset first, custom after)
- Hide delete button for preset providers
- Separate Model List button from API suffix select layout
- Simplify suffix options to one value per protocol plus "No Suffix"
- Add OpenRouter preset with openai protocol
- Add i18n support for "No Suffix" across all 6 locales
- Fix test setup to include missing API mocks

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
新增测试覆盖:
- providerPresets: 预设配置、查找函数、唯一性验证
- PresetProviderService: 单例模式、初始化逻辑、错误处理
- provider.handler: getPresets 和 fetchModelList IPC 处理器
- ModelService: 预设排序、getPresets 调用、错误处理、状态指示灯
- Provider: isPreset 属性、Model List 按钮、suffix 选项

相关功能增强:
- 添加服务商状态变更回调 (onStatusChanged)
- 添加状态呼吸灯样式和动画

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 在 WindowAPI 接口中添加 getPresets 方法
- 在 WindowAPI 接口中添加 fetchModelList 方法
- 更新 tsconfig.app.json 包含类型定义文件

修复了 TypeScript 编译错误:
- Property 'getPresets' does not exist on type
- Property 'fetchModelList' does not exist on type

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Only run CI on pull requests to master branch,
removing redundant push-to-master trigger.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@jorben jorben merged commit 938af80 into master Feb 12, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant