优化: AI Chat全栈多批审查修复与架构清理(risk_level清理/路由解耦/工具渲染/测试补测/死代码)

This commit is contained in:
2026-06-18 22:57:19 +08:00
parent 0ca5d9805f
commit a2871a66e0
87 changed files with 5720 additions and 3012 deletions

View File

@@ -7,6 +7,26 @@
---
> ## ✅ 实施状态2026-06-18 核对:方案 B 全量落地)
>
> **推荐方案 Bdf-storage 加薄 secret 查询方法)已全量实施**,行为与设计一致。
>
> **下沉层**`crates/df-storage/src/secret.rs`(新建,纯密钥逻辑唯一源)—— `KEYRING_SERVICE` 常量(`:26`)、failcount sidecar(`:34-56`)、get/set/delete/resolve/ensure/migrate 全套函数均下沉至此。`crates/df-storage/src/lib.rs` `pub mod secret` 暴露。
>
> **df-storage 依赖**`crates/df-storage/Cargo.toml:16-18` 已加 `keyring = { workspace = true }`(注释标注 FR-S1 密钥解析下沉)。
>
> **src-tauri 转发壳**`src-tauri/src/commands/ai/secret.rs:20` `pub use df_storage::secret::*;`12 调用点路径不变),`:32-43` 保留 `build_provider_for`(依赖 `df_ai::build_provider` 不下沉,对齐设计「留 app 层避免 df-storage→df-ai 循环」)。
>
> **AiNode 注入链(阶段 3**`crates/df-nodes/src/ai_node.rs:21` import `resolve_provider_secret`/`ensure_resolved_key``:60-64/101-139` 三路径解析provider_id 优先 → 老明文兼容 → 空兜底取 is_default 首条);`:166-178` 从 record 解析 provider 构造要素resolve→ensure→base_url/api_key。AiSelfReviewNode 同构(`:476` 起)。
>
> **schema**`ai_node.rs:344-351` schema 描述 provider_id/base_url/api_keybase_url/api_key 标注「已废弃过渡」),`:351` required=[]SW-260618-15prompt/provider_id 均「留空走兜底」与 required 矛盾,改 required=[] 对齐运行时)。
>
> **设计偏离**:无功能性偏离。仅 schema required 值与设计 §3.4「`["provider_id"]`」略不同(实际 `required=[]`对齐「留空走兜底」运行时语义SW-260618-15 决策)。
>
> **本文档 §1.2/§五的 file:line 索引**:原指向 `src-tauri/src/commands/ai/secret.rs` 的函数行号resolve:97-102 等)下沉后已迁移至 `crates/df-storage/src/secret.rs`src-tauri 文件已瘦身为转发壳(原 228 行 → 现 43 行)。查阅实际函数请走 `crates/df-storage/src/secret.rs`。
---
## 一、现状核验(file:line 证据)
### 1.1 secret.rs 函数清单(src-tauri/src/commands/ai/secret.rs)