Skip to content

refactor:优化当前provider分层,让职责更清晰#130

Merged
minorcell merged 3 commits into
1024XEngineer:mainfrom
phantom5099:main
Apr 3, 2026
Merged

refactor:优化当前provider分层,让职责更清晰#130
minorcell merged 3 commits into
1024XEngineer:mainfrom
phantom5099:main

Conversation

@phantom5099

Copy link
Copy Markdown
Collaborator

变更说明

本次调整围绕 internal/provider 的职责边界展开,目标是解决以下三个问题:

  • provider.Service 同时承担 provider 构建、模型发现、catalog 缓存、后台刷新、provider 选择和 model 选择,职责过多。
  • internal/provider/builtin 同时处理内建 driver 注册和默认配置装配,存在职责越界。
  • internal/provider 根包混入应用服务与基础设施实现,语义层次不够清晰。

调整后的原则是:

  • internal/provider 根包只保留 Provider 契约、通用领域类型、错误和 driver 注册入口。
  • 模型发现、catalog 缓存和后台刷新下沉到独立的 catalog 包。
  • provider/model 选择与配置同步下沉到独立的 selection 包。
  • builtin 只负责内建 driver 注册,不再负责默认配置装配。
  • runtime 只依赖 provider 构建能力,tui 只依赖 provider 选择能力。

主要改动

  1. 拆分 provider catalog 职责。
  • 新增 internal/provider/catalog/service.go
  • 新增 internal/provider/catalog/store.go
  • 将模型发现、catalog 缓存、过期判断和后台刷新从原 provider.Service 中拆出
  • 将相关测试迁移到 internal/provider/catalog/service_test.gointernal/provider/catalog/store_test.go
  1. 拆分 provider selection 职责。
  • 新增 internal/provider/selection/service.go
  • 将 provider 切换、model 切换、选择修复和 ConfigManager 同步逻辑拆出
  • 将 TUI 依赖从原来的“大而全 provider service”切换为 selection service
  • 新增 internal/provider/selection/service_test.go
  1. 收窄 runtime 与 app 装配依赖。
  • runtime 保持只依赖 provider 构建接口
  • bootstrap.go 中改为:
    • 使用 provider.Registry 作为 runtime 的 provider 构建入口
    • 使用 catalog.Service + selection.Service 作为 TUI 的 provider 能力入口
  1. 修正 builtin 包职责。
  • 保留 internal/provider/builtin/builtin.go 中的内建 driver 注册逻辑
  • 删除 builtin 中默认配置装配职责
  • 默认配置迁移到 internal/config/default_config.go
  • 新增 internal/config/default_config_test.go
  1. 清理 provider 根包混放实现。
  • 删除 internal/provider/service.go
  • 删除 internal/provider/model_catalog_store.go
  • 保留 internal/provider 根包中的契约、错误、V2 类型和 registry
  1. 补充文档说明。
  • 新增 docs/provider-layering.md 说明新的分层边界
  • 更新 README.md 中的 provider 结构描述与文档入口

预期收益

  • provider 根包语义更清晰,后续阅读和维护成本更低。
  • runtimetui、catalog 缓存三条职责线解耦,不再共同依赖一个“万能 Service”。
  • builtin 不再越界处理默认配置,装配职责回到 config/app 层。
  • 后续新增原生 driver 时,能更自然地落到对应层级,避免继续向根包堆积实现。
  • 为后续接入 ProviderV2anthropicopenai responsesgemini native 等能力预留了更稳定的边界。
  • 测试按职责重新分布后,问题定位会更直接,回归验证也更有针对性。

@codecov

codecov Bot commented Apr 3, 2026

Copy link
Copy Markdown

@minorcell minorcell merged commit 124f10e into 1024XEngineer:main Apr 3, 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.

2 participants