Skip to content

Latest commit

 

History

History
80 lines (60 loc) · 5.77 KB

File metadata and controls

80 lines (60 loc) · 5.77 KB

v0.11.6:AI 平台化——Provider 抽象 + 能力声明化 + 产出策略定制

状态:M1 已交付(2026-08-22),M2 排期 依据:设计 spec(已批准)· 市场调研:Notion AI 官方博客 / Braintrust×Notion / Obsidian Copilot / Granola / ZenML(缓存 .firecrawl/)· 旧项目参照:ai-gateway(providers/fallback/circuit_breaker/key_pool + 40+ chains) 前置决策:充值系统远期(本版本只留桩)

一句话

AI 从"单 Provider 直连 + 3 个散装适配器"升级为"Provider 抽象 + 能力声明 + 产出策略"三层平台——为多 AI 能力接入与产出质量定制铺路。

范围(三个需求的收敛)

# 需求 落点
1 为充值系统做准备(远期) 只留桩:命令空间 ai_quota_* 隔离预留;本期做本地用量统计
2 为多 AI 能力接入做准备 Provider 层(BYOK 多 Provider + 降级链)+ 能力层(声明化 JSON + 薄适配器,旧项目 chains 范式)
3 产出质量可定制 策略层(能力维度 + 档位预设 + prompt 指令注入);设置页产出偏好面板
4 设置页 AI 配置重构 AiServicePanel 拆分 4 面板;移除 SiliconFlow 第三方余额卡片;品牌解绑

交付内容(三期)

M1 · Provider 层(多 Provider 可用)

  • ai_provider.rs:AiProviderConfig + ai_providers.json 存储 + 内置预设模板(SiliconFlow/DeepSeek/OpenRouter/Ollama)
  • ai_provider_client.rs:OpenAI 兼容抽象(chat_text/chat_json 按 Provider 配置;AiClientError 六类契约不动)
  • ai_credentials.rs 扩展:per-provider DPAPI 密钥(provider:<id> 前缀)
  • 兼容迁移:旧 ai_settings.json → 自动生成 "SiliconFlow" Provider(用户无感)
  • 降级链简单版:Network/Server/Quota 失败自动切下一个(最多一次);Auth/Balance 不降级
  • 设置页拆出 AiProviderSettings(列表/添加/编辑/测试/启用);移除余额卡片;审计保留展开态

M1 交付记录(2026-08-22)

  • ai_provider.rs:配置模型 + 4 预设模板 + 存储 + 旧配置迁移(7 单测)
  • ai_credentials.rs:CredentialStore scope 化(per-provider DPAPI 文件;default 兼容旧文件)
  • ai_client.rs:from_provider + from_settings_with_store + is_fallbackable + fallback_provider_ids(行数豁免登记)
  • commands_ai_providers.rs:presets/list/add/update/remove/save_key/clear_key/set_default/test 九命令 + resolve_default_provider_key(env > per-provider > default 三级链)
  • AppState:ai_providers 内存态单点 + ai_providers_path + 首启迁移接线(含密钥复制)
  • 前端:AiProviderSettings 面板(列表/添加向导/编辑/测试/密钥内联输入/默认/确认弹窗;行数豁免登记)+ AiServicePanel 瘦身(移除密钥/端点/余额卡片,408→196 行)
  • 修复:任务预检密钥源统一(Provider 面板密钥对精修/补充生效);Ollama 免密钥测试连接(AiClientConfig.is_local)
  • 验证:cargo test 1521 passed / vitest 48 passed / tsc 零错误 / clippy 新增零警告
  • 遗留:显式 provider_ids 任务参数与降级链实际接线(M3);fallbackOrder UI 入口(M3);Ollama 预设默认禁用待用户启用;审计折叠"高级"区(M3,spec §五);AiRefineCard/EnrichPanel 授权文案去 SiliconFlow 特指(M3)

M2 · 策略层(产出质量可定制)

  • ai_strategy.rs:StrategyDim / StrategyPreset / 指令注入纯函数
  • 能力声明 JSON 增加 strategy_dims + presets(note_refine 先行)
  • ai_settings.json 增加 strategy 字段(全局默认档位 + 覆盖 map);任务命令接受策略覆盖参数
  • 设置页 AiPreferenceSettings(M2 内部分两小步:先档位选择,再逐项微调 UI)

M3 · 能力层收尾(平台成型)

  • 3 适配器(refine/enrich/text_filter)全部声明化迁移;prompt 组装管线统一(core + style + strategy + few_shot + output_format)
  • 旧命令退役(ai_get_settings 等过渡命令移除)
  • 文档:ADR-019 + 本版本文档 + 全量回归(cargo test / vitest / clippy / tsc)

关键决策与纪律

  • 方案 B(能力声明化):替代轻量重构(A)与全量平台化(C);对齐旧项目 chains 范式但 JSON 化,新能力 = 声明 + ≤100 行适配器
  • 协议不随策略变:策略只改 prompt,响应 schema 与校验器零改动——档位切换不引入新校验面
  • 错误契约不动:AiClientError 六类 / AiTaskFailure 四类映射不变,前端映射零改动
  • 授权红线不动:enabled + authorized 双条件 gate 保留;密钥永不出本机(DPAPI per-provider)
  • 身份诚实:AI 产出仍标记 ai-enhanced,策略不改来源标记
  • 余额卡片移除:不展示第三方钱包(SiliconFlow 余额),测试连接保留但只验证密钥有效性
  • YAGNI:熔断器/Key 池/流式输出/LLM-judge 评估不纳入本期(网关侧或规模后演进)

验收标准

  1. 设置页可添加 ≥2 个 Provider 并切换默认模型;任务按所选 Provider 执行
  2. Provider 故障(mock 注入)自动降级到下一个,失败原因可见不静默
  3. 精修任务可选择产出档位(如"极简"),prompt 含对应策略指令,响应校验与档位无关
  4. 旧配置迁移无感:升级后原密钥/模型自动出现在 SiliconFlow Provider
  5. 余额卡片不再展示;审计保留展开态
  6. 全量回归通过(cargo test / clippy / vitest / tsc)

关联

  • 设计 spec · v0.11 系列总览 ·
  • 调研缓存:.firecrawl/(notion-ai-way.md / notion-braintrust-eval.md / obsidian-copilot-docs.md / granola-transcription.md / search-*.json)