diff --git a/docs/05-代码审查/本次修复摘要-2026-08-02.md b/docs/05-代码审查/本次修复摘要-2026-08-02.md new file mode 100644 index 0000000..3001051 --- /dev/null +++ b/docs/05-代码审查/本次修复摘要-2026-08-02.md @@ -0,0 +1,52 @@ +# 本次修复摘要(2026-08-02) + +> 5 根因诊断 + 35 维度走查 + 13 agent 根本修 + 架构专项登记 +> 原则:机制 > 说教 / 根本 > 补丁 / 实证 > 声明 / 简洁+可靠平衡 + +## 5 根因(对话停止/工具失败,诊断 + 根治) + +| 根因 | 修复 | 提交 | +|---|---|---| +| G2 熔断误停(结果空当漂移) | 签名重复判定 | 重组 57d6a2d | +| handshake 越权强杀活 loop | generating 归 guard 单源 | bdc51c1→57d6a2d | +| 空 tool_call id(SenseNova 结果路由错位) | 全局 AtomicU64 兜底 | 7b4e6b7→dffc4e4 | +| 多模态图片 URL(模型看不到图) | image part 前端扫描 | 03614b6 | +| download 引导(AI 用错工具) | fetch_url 错误引导 + prompt 职责 | 1ec844f | + +## 13 agent 根本修(真 bug + 架构 + P1/P2 + UX) + +**真 bug 3**: +- ai_node/ai_self_review schema required 对齐 +- docker_node POSIX 单引号注入防御(所有元字符失效) +- parse_review_json(verdict 规范化/score clamp/正则兜底) +- ❌ conditions 单引号 P0 **误报**(三层验证无 bug) + +**架构 3**(memory 专项): +- run_agentic_loop 抽 finish_round_exit + emit_ai_completed_once(6 退出点收敛,AiCompleted 11→2) +- AI router(estimated_context 接真实估值 + weight tier tieback + 意图 DataReadOnly 兜底 + provider_pool 亲和 enabled) +- sanitize step4(显式 skipped_head_ids 跟踪,不制造 orphan,自洽不依赖出口断言) + +**P1 3**:HumanNode timeout 1800 / df-mcp 实体校验(改进错误信息,B-260801-01 实证不存在)/ keyring 明文达阈值清除 + +**P2 3 + UX**:status union(字面量+删 cast)/ parse_review / ApprovalPopup(_placeholder hack 消除 + dispatchApprovalIPC 共享 + always 按钮 + closeWithFallback + 拖动 JS API startDragging + Esc) + +## 提交链(本次会话) + +befc51b sanitize → e2c6891 G2+read_file → 77b9b8c obscura → c9f6345 工具增强 → bdc51c1 handshake → 1ec844f download 引导 → 03614b6 多模态 → db5997c provider → 3f37f0f defaultModel → 7b4e6b7 空 id → e64de23 搜索 → 41f514e defaultModel UI → 74e8cdd /技能 → 9ea4fed get_app_config → (重组 6:57d6a2d/023377a/e4f7b43/b999f79/50c2326/953a3fb) → dffc4e4 走查空id/generate_image → fc249ad P0+P1 → f719546 MessageList → ea309c6 后端 crate → 3f2cf5f agentic → f1773dd 前端 → 8eb689a docs + +## 专项登记(memory,后续分步) + +- **AI router + sanitize step4** — `ai-router-sanitize-refactor-debt`(核心,改风险大) +- **run_agentic_loop 1217 行重构** — `agentic-loop-refactor-debt`(finish_round_exit 第一步已做,剩 build_runtime_prompt/入口解析) +- **技能注入** — 待 trace(SkillResolver 日志 dffc4e4)定位 read/AI 忽略 + +## 推翻假设(走查否定,更新认知) + +- AiChat.vue **798 行**(非 3000+ God,已抽 5 批)— memory fe-arch-tech-debt 过时 +- human_node **36KB 是测试 76%**(实现 200 行内聚,无技术债) +- conditions 单引号 P0 **误报**(三层验证无 bug) +- B-260801-01 跨实体污染**不存在**(Repo 表级,detect_entity_owner 改进错误信息保留) + +## 教训(`code-review-anti-contamination`) + +走查必须**源码佐证,不信假设**。B-260801-01 走查误判(假设跨实体污染),DevFlow AI 实证 Repo 表级已隔离。conditions P0 走查误报(纸面推演),三层验证无 bug。**假设性"可能存在"必须实证**。 diff --git a/docs/INDEX.md b/docs/INDEX.md index fd0ebc6..06cc088 100644 --- a/docs/INDEX.md +++ b/docs/INDEX.md @@ -1,7 +1,8 @@ # DevFlow 文档索引 > 创建: 2026-06-10 | 当前阶段: Phase 2 本地优先开发流程验证 -> 更新: 2026-06-19 | 02-架构设计 核对优化:新增 `02-架构设计/INDEX.md` 分类索引、补录 3 缺失文档(F-02/F-09/意图识别层)、F-09B 标注过时、`文档记录规范` §八 补命名规范;查询效率优化方案补录;06-17 文档缺陷扫描通过(零死链) +> 更新: 2026-08-02 | 05-代码审查 补录 2026-08-02 走查批次:DevFlow AI 全库走查(00-05,12 crate/78 问题)、claude 多代理走查(汇总+nodes/ai-storage/ideas-前端/基建 5 文档)、本次修复摘要(5 根因 + 13 agent P0/P1/P2 + 架构专项 3,提交 fc249ad/f719546) +> 历次: 2026-06-19 02-架构设计 核对优化(新增分类索引/补录缺失文档/命名规范);06-17 文档缺陷扫描通过(零死链) --- @@ -86,6 +87,12 @@ docs/ │ ├── 03-df-ai-走查-2026-08-02.md # AI 核心走查(13 问题) │ ├── 04-df-storage-ideas-mcp-走查-2026-08-02.md # 存储/灵感/MCP 走查(17 问题) │ ├── 05-df-relay-tunnel-project-types-execute-走查-2026-08-02.md # 中继/隧道/项目管理/类型/执行走查(19 问题) +│ ├── claude-汇总-2026-08-02.md # claude 走查汇总(4 workflow/35 维度 + 修复提交 fc249ad/f719546 + 推翻假设) +│ ├── claude-df-nodes-走查-2026-08-02.md # df-nodes 走查(P0×2 df-mcp 数据覆盖 + df-execute probe_pwsh 死缓存) +│ ├── claude-df-ai-storage-走查-2026-08-02.md # df-ai/storage 走查(evaluate 拆只读+写 + probe_pwsh 超时/单源 + 注入隔离) +│ ├── claude-ideas-前端-走查-2026-08-02.md # ideas + 前端走查(MessageList/MessageItem 双套渲染收敛 f719546) +│ ├── claude-基建-剩余模块-走查-2026-08-02.md # 基建/剩余模块走查(P2/P3:status union/胖 composable/审批 hack 等) +│ ├── 本次修复摘要-2026-08-02.md # 修复摘要(5 根因 + 13 agent P0/P1/P2 + 架构专项 3) │ ├── 全栈代码审查报告-2026-06-14.md # Rust+Tauri+Vue 全栈审查(5 代理并行) │ ├── 架构与缺陷复核报告-2026-06-14.md # 复核已修项 + 回归审计 + 架构层补充(4 路并行) │ ├── 近期改动代码审查-2026-06-15.md # 工作区 FR-S1/S7/S8 diff --git a/docs/todo.md b/docs/todo.md index 3ecac77..910fd3f 100644 --- a/docs/todo.md +++ b/docs/todo.md @@ -324,3 +324,31 @@ graph TD - [ ] **AIC-FIX-17-P1-1~11** — P1 队列/互斥/modelOverride/死代码/缓存/防重入/删除回落(待后续批次) - [ ] **AIC-FIX-17-P2** — P2 健壮性项(待后续批次) - [ ] **AIC-FIX-17-根因** — F-09 per-conv 收尾(queue / modelOverride / _approvalTimers / _lastDelta 单例化) + +--- + +### 🔍 2026-08-01 走查剩余待办(P2/P3/专项·本会话登记) + +> 本次走查剩余项登记,未实施代码(守 session-role-diagnose-only)。专项已落 memory,此处留指针。 + +**P2(中期改进)**: + +- [ ] **WC-P2-status-union** — ✅ **status union 已修**(前端 status 强类型 union 收口完成),保留此处仅作核对销账 +- [ ] **WC-P2-useAiEvents-胖** — `useAiEvents` 仍偏胖,按事件分组抽子 composable / 拆 listener 注册逻辑(前端架构技术债 P0 大文件,对齐 memory [[fe-arch-tech-debt]]) +- [ ] **WC-P2-dfnodes-6未注册** — `df-nodes` 6 个节点类型未在 NodeRegistry 注册(节点清单核验,补注册 + 单测覆盖) +- [ ] **WC-P2-dfmcp-schema-required** — `df-mcp` tool schema `required` 字段处理:核对 array vs bool 兼容(MCP 规范允许多形态),补强反序列化 + 测试 +- [ ] **WC-P2-bind-directory** — `tool_registry` bind_directory(MED-1,tool_registry:546)核对推进 — 历史登记项复核 + +**P3(风格/可读·低优)**: + +- [ ] **WC-P3-SubflowNode-风格** — `SubflowNode` 实现风格对齐其他 Node(trait impl 顺序/命名/注释规范一致性) +- [ ] **WC-P3-script-注释** — `script` 节点注释清理(过时/冗余注释,对齐当前实现) + +**专项(已登记 memory,留指针)**: + +- 📌 **WC-专项-AI-router-sanitize** — AI router + sanitize 链路梳理重构 — 详见 memory(已登记,本会话不实施) +- 📌 **WC-专项-run_agentic_loop-重构** — `run_agentic_loop` 重构(ARC-260619-05 agentic:318 超长,历史登记) — 详见 memory(已登记,本会话不实施) + +**技能注入(待定位)**: + +- [ ] **WC-技能注入-trace定位** — 技能/skill 注入链路待 trace 定位(注入时机、上下文来源、是否重复注入),定位后再决定是否待办化 diff --git a/docs/待审查.md b/docs/待审查.md index da7f432..762b28a 100644 --- a/docs/待审查.md +++ b/docs/待审查.md @@ -23,6 +23,31 @@ ## 当前队列 +### 🟡 CR-2026-08-01 本次走查 13 agent 改动(2026-08-01 登记) + +> **范围**:本次会话 13 个 agent 改动的文件集合(git status 工作区改动)。**维度**:正确性(逻辑错/回归)+ 复用/简化/效率 + 风格可读。**commit**:未提交(工作区 in-flight,审查时取 `git diff` 当前态)。 +> +> 涉及文件(按 git status 工作区改动 + 本次 agent 编辑集): +> - `crates/df-ai/src/sse_parser.rs` +> - `crates/df-nodes/src/ai_node_helpers.rs` +> - `crates/df-storage/src/secret.rs` +> - `src-tauri/src/commands/ai/agentic/mod.rs` +> - `src-tauri/src/commands/ai/compress.rs` +> - `src-tauri/src/commands/ai/secret.rs` +> - `src-tauri/src/state/llm_concurrency.rs` +> +> **审查重点**: +> 1. SSE parser 改动:流式分块边界/chunk 拼接正确性、error path 不吞 chunk +> 2. ai_node_helpers:节点辅助逻辑回归、与 NodeRegistry 注册一致性(关联 df-nodes 6 未注册 P2) +> 3. secret.rs(storage + commands/ai/secret):密钥存取路径正确性、错误不泄露明文、filter map_err 不丢上下文 +> 4. agentic/mod.rs:loop 编排改动不破坏 stop_flag/conv_id 路由(F-09 per-conv 前置)、retry 持 permit 合理性 +> 5. compress.rs:压缩链路改动(对齐 memory [[devflow-compress-ui-no-fold]] 后端省 token 不前端藏消息)、边界(空输入/超长) +> 6. llm_concurrency.rs:Semaphore per_conv/global 释放路径(permit drop 时机、panic 兜底 — 对齐 memory [[aichat-deadlock-governance]] spawn panic 兜底) +> +> **关联**:本次 13 agent 改动同时是 todo.md「2026-08-01 走查剩余待办」专项落地的代码层。审查发现【待修代码项】回流 todo。 + +🟡 待审 + ## 已审归档 > 已审 CR 段迁独立文件: [待审查归档/2026-06.md](./07-项目管理/待审查归档/2026-06.md)