Skip to content

pref(provider):收敛公共契约并补齐 driver 能力声明#202

Closed
phantom5099 wants to merge 8 commits into
1024XEngineer:mainfrom
phantom5099:provider-phase2-A
Closed

pref(provider):收敛公共契约并补齐 driver 能力声明#202
phantom5099 wants to merge 8 commits into
1024XEngineer:mainfrom
phantom5099:provider-phase2-A

Conversation

@phantom5099

@phantom5099 phantom5099 commented Apr 9, 2026

Copy link
Copy Markdown
Collaborator

变更说明

本 PR 实现 Provider Phase 2 的第一阶段收敛工作,目标是先把 provider 主链从旧的 OpenAI Chat 语义中抽离出来,建立后续多协议支持所需的统一契约、能力声明和更稳健的流式错误处理。

主要改动

  • 将 provider 公共调用接口从 Chat 统一调整为 Generate
  • ChatRequest 等旧命名同步收敛为 GenerateRequest,统一 runtime 与 provider 之间的调用模型。
  • provider 层增加 driver 能力声明,明确 streaming、tool transport、model discovery 等基础能力。
  • 为模型目录与能力提示补齐统一的数据结构,给后续 discovery/catalog 扩展提供共享落点。
  • 在 runtime 中接入 driver 基础能力校验,避免把不支持的调用路径拖到协议执行期才失败。
  • 修复 OpenAI SSE 流异常 EOF 被误判为正常完成的问题,并补齐对应回归测试。

预期收益

  • 去除 provider 公共契约中的 OpenAI 专属语义,为多协议接入打下干净基础。
  • 让 runtime 能在更早阶段识别 driver 基础能力不足,减少深层协议错误。
  • 为后续模型发现、能力提示、多模态输入支持预留稳定的数据结构。
  • 避免 SSE 流异常结束被静默吞掉,提升 provider 主链稳定性和可观测性。

@codecov

codecov Bot commented Apr 9, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 89.18919% with 4 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
internal/provider/openai/response.go 60.00% 1 Missing and 1 partial ⚠️
internal/runtime/runtime.go 90.90% 1 Missing and 1 partial ⚠️

📢 Thoughts on this report? Let us know!

@phantom5099

Copy link
Copy Markdown
Collaborator Author
  • runtime.go:691 run() 这条主路径现在无条件要求 driver 支持 tool transport。但 GenerateRequest.Tools 本身是可选的,这个 PR 里 compact 路径在无工具场景下也已经传了 false。因此只要当前回合没有暴露任何工具,一个只支持流式文本、不支持工具传输的 driver 其实仍然能正常完成请求,却会在这里被提前拒绝。这个能力校验应该按 len(req.Tools) > 0 决定,而不是固定要求。

  • compact_generator.go:99 这个 PR 已经把 message_done 当成普通 Run() 路径的必需完成信号了,但 compact summary 这条路径在 Generate() 成功后,仍然直接进入 acc.buildMessage(),没有检查 acc.messageDone 是否真的被置位。这样一来,如果 provider 丢了最后的 message_done 事件,普通对话会报错,但 compact 却会静默接受一段不完整的摘要。既然目标是统一 provider 契约,这里也应该补上同样的完成校验。

@phantom5099 phantom5099 closed this Apr 9, 2026
@phantom5099 phantom5099 deleted the provider-phase2-A branch April 17, 2026 09:07
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