Skip to content

refactor(provider): 收敛 provider 架构并清理旧兼容残留#79

Merged
minorcell merged 21 commits into
1024XEngineer:mainfrom
phantom5099:main
Mar 28, 2026
Merged

refactor(provider): 收敛 provider 架构并清理旧兼容残留#79
minorcell merged 21 commits into
1024XEngineer:mainfrom
phantom5099:main

Conversation

@phantom5099

Copy link
Copy Markdown
Collaborator

变更说明

本次改动围绕 provider 模块做了一次完整收口,目标是把 provider 定义、运行时构建、TUI 选择能力和配置持久化边界重新拉直。重点解决了 provider 依赖 YAML 固化、TUI 承担非 UI 职责、runtime 按厂商分支构建 provider、以及修改后残留的旧兼容代码等问题。

主要改动

  • 将 provider 默认定义下沉到代码内建层,新增 internal/provider/builtin,由代码提供最新 provider 列表,而不是要求用户修改 config.yaml。
  • 将 config.yaml 的持久化策略改为只保存 selected_provider、current_model 和 provider_overrides,不再落盘完整 providers 列表。
  • 在 config loader 中实现“内建 provider + 用户 overrides”的运行时合并,并将旧配置格式的兼容迁移收敛在加载层单点处理。
  • 引入 provider registry/service 结构,runtime 不再按 provider 类型写分支,而是通过 registry 构建 provider。
  • 将 OpenAI provider 拆分为默认配置、driver 注册、catalog 描述和协议实现四层职责,消除跨层硬编码。
  • 删除 TUI 层的 /set url 和 /set key 指令,改为仅保留 /provider 和 /model,避免 TUI 直接承担 provider 配置与密钥管理职责。
  • 新增 provider picker,并修复 picker 刷新后尺寸丢失导致列表看起来为空的问题。
  • 统一 provider 相关命名,收敛 DisplayName/Summary/Type/EnvAPIKey 等旧命名为 Name/Description/Driver/APIKeyEnv。
  • 删除未落地的 anthropic、gemini scaffold 代码,以及 provider/service/config/runtime/TUI 中已经无用的旧接口、旧测试样例和兼容兜底逻辑。
  • 更新 README.md、agents.md 和 provider 设计文档,使文档与当前实现保持一致。

预期收益

  • 新用户和升级用户都能自动拿到当前版本最新的内建 provider 定义,不再依赖手改 YAML。
  • provider 的职责边界更清晰,TUI 只负责交互,配置与运行时构建分别回到 config/provider/runtime 层。
  • 后续新增 provider 时只需要补充 driver 与默认定义,不需要修改 TUI 或 runtime 分支。
  • 旧配置兼容被限制在 loader 单点,不再向业务层扩散,降低后续维护成本。
  • 删除残留代码和无效抽象后,整体实现更干净,测试语义也更贴近当前真实行为。

测试验证

执行 go test ./...,全量通过。
补充并更新了 config/provider/runtime/TUI 相关测试,覆盖 provider overrides、旧配置迁移、provider/model 选择、picker 刷新尺寸保持、以及构造器依赖约束等关键路径。

close #79

@minorcell minorcell merged commit a7f8179 into 1024XEngineer:main Mar 28, 2026
1 of 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.

3 participants