fix(copilot): harden provider configuration flow
This commit is contained in:
@@ -97,9 +97,12 @@ Provider 预设只负责填充默认 Endpoint,不锁死模型:
|
||||
|
||||
| Provider | 默认 Base URL | 协议实现 |
|
||||
|---|---|---|
|
||||
| OpenAI | `https://api.openai.com/v1` | Eino OpenAI |
|
||||
| Anthropic | `https://api.anthropic.com` | Anthropic Messages API |
|
||||
| OpenAI Compatible | 用户填写 | Eino OpenAI;适用于 DeepSeek、通义千问、豆包及自建网关 |
|
||||
| OpenAI | `https://api.openai.com/v1` | `llm.OpenAIProvider`,OpenAI Chat Completions API |
|
||||
| Anthropic | `https://api.anthropic.com` | `llm.AnthropicProvider`,Anthropic Messages API |
|
||||
| OpenAI Compatible | 用户填写 | `llm.OpenAIProvider` + 自定义 Base URL;适用于 DeepSeek、通义千问、豆包及自建网关 |
|
||||
|
||||
`EinoProvider` 适配器仍保留给显式构造的 Eino ChatModel/Embedder 使用;数据库驱动的
|
||||
`ProviderManager` 运行时配置链路不经过该适配器,而是按协议直接创建上述 Provider。
|
||||
|
||||
首期不单独增加 DeepSeek/Qwen/Doubao 枚举,避免把供应商宣传名称与真实协议实现绑死。
|
||||
|
||||
@@ -313,13 +316,18 @@ Embedding 维度由迁移 `000056_make_article_embedding_dimension_dynamic` 改
|
||||
- `go test ./...` 通过。
|
||||
- 覆盖明文存储、掩码/不回显、保留/替换/清除、候选测试不落库、Provider 热切换、
|
||||
OpenAI/OpenAI-compatible/Anthropic、超时/重试、统一安全错误、动态 Embedding 维度和重建状态。
|
||||
- Service → `ProviderManager` → Fake HTTP Provider 集成测试证明 editor、copilot、assistant、
|
||||
label suggestion 分别使用账户配置的功能模型,未配置时由 Manager 回退平台默认模型。
|
||||
- Assistant 显式配置的 Temperature(包括 `0`)优先于平台默认值;未显式配置时继续使用平台值。
|
||||
- OpenAI-compatible 的错误响应与 malformed SSE chunk 不进入日志或健康检查响应;对外只返回稳定错误类别。
|
||||
- SuperAdmin 平台权限、Administrator 账户权限和 Agent 禁止访问均有 Handler/Middleware 回归测试。
|
||||
- 配置变更写入 `audits`,只记录 Provider、模型、维度、配置状态和是否变更 Key,不记录 Key 或掩码。
|
||||
|
||||
### 前端自动化
|
||||
|
||||
- Vitest 覆盖菜单/路由、Pinia 平台与账户请求、SuperAdmin 识别、Provider 条件字段、
|
||||
API Key 不回填/清除确认、Anthropic 非法组合、维度确认、回复行为和自动回复确认。
|
||||
API Key 不回填/清除确认、清除 Key 时允许保存但禁止连接测试、Anthropic 非法组合、
|
||||
维度确认、回复行为和自动回复确认。
|
||||
- `pnpm build` 通过。
|
||||
|
||||
### 真实运行验证
|
||||
|
||||
@@ -8,8 +8,10 @@
|
||||
> 调研日期:2026-07-08(初版)/ 2026-07-12 更新
|
||||
> 基于代码库:2026-07-12 Copilot 配置中心实现状态
|
||||
> 对标项目:Chatwoot Captain AI (enterprise edition)
|
||||
> 注:2026-07-09 状态更新 — Eino 框架已替换手写 LLM 层,多 LLM Provider(OpenAI/Anthropic)已接入,
|
||||
> Function Calling 已实现,Help Center pgvector 语义搜索已实现,AutoReplyRule 已集成到消息流程。
|
||||
> 注:2026-07-12 状态更新 — 数据库驱动的运行时配置链路使用协议原生
|
||||
> `OpenAIProvider`/`AnthropicProvider`;`EinoProvider` 适配器仍可供显式构造的 Eino
|
||||
> ChatModel/Embedder 使用,但不承载 Copilot 配置中心的 Provider 热切换。Function Calling、
|
||||
> Help Center pgvector 语义搜索和 AutoReplyRule 消息流程均已接入。
|
||||
|
||||
---
|
||||
|
||||
@@ -64,6 +66,8 @@ Provider 配置与运行链路已闭环,保存后无需重启即可生效。
|
||||
- 数据结构:`ChatRequest`/`ChatResponse`/`ChatMessage`/`EmbeddingRequest`/`EmbeddingResponse`/
|
||||
`StreamChunk`/`ToolDefinition`/`ToolFunction`
|
||||
- `ProviderManager` 原子替换 Chat/Embedding Provider Snapshot;账户模型按功能解析后进入请求。
|
||||
- 配置中心按协议直接构造 `OpenAIProvider`/`AnthropicProvider`;OpenAI-compatible 复用
|
||||
`OpenAIProvider` 并使用自定义 Base URL,Eino 适配器不在该运行时链路中。
|
||||
- `ToolExecutionService` 已将 Custom Tool 转为 `ToolDefinition`,执行 tool-call 循环并回传结果。
|
||||
|
||||
### 2.2 数据模型层
|
||||
|
||||
Reference in New Issue
Block a user