From 04032a2a8df6cdbe1b021d78b97cb7d74deae411 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BB=9D=E5=B0=98?= <237809796@qq.com> Date: Mon, 15 Jun 2026 05:14:21 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84:=20=E6=96=87=E6=A1=A3?= =?UTF-8?q?=E6=B1=87=E6=80=BB+=E8=BF=9B=E5=BA=A6=E7=9C=8B=E6=9D=BF+?= =?UTF-8?q?=E5=AD=A4=E5=84=BF=E4=BB=BB=E5=8A=A1=E6=B8=85=E7=90=86=E8=84=9A?= =?UTF-8?q?=E6=9C=AC+gitignore=20=E5=99=AA=E9=9F=B3=E6=8E=92=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - docs/02 架构设计: 新增 aichat审查/异步审批构想/流式渲染调研/generating状态机/密钥迁移健壮性/工作流脚本执行边界/条件表达式引擎/F-07 trait下沉/Agent架构说明/任务推进构想/功能创意池;更新功能决策记录+归档/对抗论证/文档记录规范/经验记录 - docs/03 模块文档: 新增 AI对话引擎/DAG引擎详解;更新 df-knowledge/df-nodes/df-storage/df-workflow/df-ai - docs/05 代码审查: 新增 全栈审查/全局review/架构审查/近期改动审查/工作区多角度走查/自研memo流式渲染审查 - docs/09 问题排查: 新增 aichat-apikey-401 - docs/INDEX+README 索引同步;docs/todo 待办看板(2026-06-15 汇总) - PROGRESS.md Sprint 22-25;URGENT.md 加急清单快照(5 项 P0 已全修) - scripts/cleanup_orphan_tasks.{py,sh} 孤儿任务清理工具 - .gitignore 补 *.broken.bak + tmp/ 噪音排除 --- .gitignore | 4 + PROGRESS.md | 72 +++- URGENT.md | 83 ++++ docs/02-架构设计/Agent架构说明-2026-06-14.md | 161 ++++++++ .../F-07-df-ai-core-trait下沉设计-2026-06-14.md | 294 ++++++++++++++ docs/02-架构设计/aichat审查报告-2026-06-14.md | 101 ++++- .../aichat异步审批构想-2026-06-14.md | 2 +- .../aichat流式Markdown渲染调研-2026-06-15.md | 146 +++++++ .../generating状态机加固-2026-06-15.md | 284 +++++++++++++ docs/02-架构设计/任务推进构想-2026-06-14.md | 344 ++++++++++++++++ docs/02-架构设计/功能决策记录-2026-06-14.md | 49 ++- .../功能决策记录-归档-2026-06-14.md | 14 +- docs/02-架构设计/功能创意池-2026-06-14.md | 150 +++++++ docs/02-架构设计/密钥迁移健壮性-2026-06-15.md | 343 ++++++++++++++++ .../对抗论证裁决报告-2026-06-12.md | 2 +- .../工作流审批审查报告-2026-06-14.md | 129 ++++++ .../工作流脚本执行边界-2026-06-15.md | 255 ++++++++++++ docs/02-架构设计/文档记录规范-2026-06-14.md | 34 +- docs/02-架构设计/条件表达式引擎-2026-06-15.md | 256 ++++++++++++ docs/02-架构设计/经验记录-2026-06-14.md | 8 +- docs/03-模块文档/AI对话引擎-2026-06-14.md | 312 +++++++++++++++ docs/03-模块文档/DAG引擎详解-2026-06-14.md | 372 ++++++++++++++++++ .../df-ai-AI集成模块-2026-06-12.md | 42 +- .../df-knowledge-知识库-2026-06-14.md | 6 +- .../df-nodes-节点集合-2026-06-12.md | 2 +- .../df-storage-存储层-2026-06-12.md | 8 +- .../df-workflow-工作流引擎-2026-06-12.md | 10 +- docs/05-代码审查/全局代码review-2026-06-15.md | 150 +++++++ .../全栈代码审查报告-2026-06-14.md | 359 +++++++++++++++++ .../工作区多角度走查-2026-06-15.md | 205 ++++++++++ .../架构与缺陷复核报告-2026-06-14.md | 214 ++++++++++ docs/05-代码审查/架构审查-2026-06-15.md | 147 +++++++ .../自研块级memo流式渲染审查-2026-06-15.md | 129 ++++++ .../近期改动代码审查-2026-06-15.md | 201 ++++++++++ docs/06-前端开发/View改造指南-2026-06-12.md | 6 +- docs/07-项目管理/Phase1任务清单-2026-06-12.md | 10 +- docs/07-项目管理/Phase2计划-2026-06-12.md | 2 +- .../aichat-apikey-401排查-2026-06-15.md | 125 ++++++ docs/INDEX.md | 101 ++--- docs/README.md | 6 +- docs/todo.md | 244 +++++++++++- scripts/cleanup_orphan_tasks.py | 78 ++++ scripts/cleanup_orphan_tasks.sh | 75 ++++ 43 files changed, 5372 insertions(+), 163 deletions(-) create mode 100644 URGENT.md create mode 100644 docs/02-架构设计/Agent架构说明-2026-06-14.md create mode 100644 docs/02-架构设计/F-07-df-ai-core-trait下沉设计-2026-06-14.md create mode 100644 docs/02-架构设计/aichat流式Markdown渲染调研-2026-06-15.md create mode 100644 docs/02-架构设计/generating状态机加固-2026-06-15.md create mode 100644 docs/02-架构设计/任务推进构想-2026-06-14.md create mode 100644 docs/02-架构设计/功能创意池-2026-06-14.md create mode 100644 docs/02-架构设计/密钥迁移健壮性-2026-06-15.md create mode 100644 docs/02-架构设计/工作流审批审查报告-2026-06-14.md create mode 100644 docs/02-架构设计/工作流脚本执行边界-2026-06-15.md create mode 100644 docs/02-架构设计/条件表达式引擎-2026-06-15.md create mode 100644 docs/03-模块文档/AI对话引擎-2026-06-14.md create mode 100644 docs/03-模块文档/DAG引擎详解-2026-06-14.md create mode 100644 docs/05-代码审查/全局代码review-2026-06-15.md create mode 100644 docs/05-代码审查/全栈代码审查报告-2026-06-14.md create mode 100644 docs/05-代码审查/工作区多角度走查-2026-06-15.md create mode 100644 docs/05-代码审查/架构与缺陷复核报告-2026-06-14.md create mode 100644 docs/05-代码审查/架构审查-2026-06-15.md create mode 100644 docs/05-代码审查/自研块级memo流式渲染审查-2026-06-15.md create mode 100644 docs/05-代码审查/近期改动代码审查-2026-06-15.md create mode 100644 docs/09-问题排查/aichat-apikey-401排查-2026-06-15.md create mode 100644 scripts/cleanup_orphan_tasks.py create mode 100644 scripts/cleanup_orphan_tasks.sh diff --git a/.gitignore b/.gitignore index 7ba5a4e..9507047 100644 --- a/.gitignore +++ b/.gitignore @@ -47,3 +47,7 @@ coverage/ .env .env.* !.env.example + +# 损坏备份(FR-S7 write_file 事故残留)+临时文件 +*.broken.bak +tmp/ diff --git a/PROGRESS.md b/PROGRESS.md index 520fb5b..a66d044 100644 --- a/PROGRESS.md +++ b/PROGRESS.md @@ -1,6 +1,6 @@ # DevFlow — 项目进展与工作交接 -> 创建: 2026-06-10 | 最后更新: 2026-06-14 | 当前阶段: list_directory 防爆 + localStorage→SQLite 统一持久化 + token/发送 bug 修复(Sprint 19) → 项目管理模块代码审查 + 全局核对(Sprint 20,未改代码) +> 创建: 2026-06-10 | 最后更新: 2026-06-15 | 当前阶段: 全量待办编排完成(Sprint 23) → 首批 A+B 清债(ARC-02 死链已删 / AR-1 退役 / ARC-03 降级重评);api_key 明文存储(FR-S1)降级延后 --- @@ -87,7 +87,8 @@ | 6 | **条件表达式引擎** — 仅支持 true/false 字面量 | 条件分支不可用 | P2 | ⬜ 待办 | | 7 | **i18n 未注册** — 翻译文件存在但未挂载 | 多语言不生效 | P2 | ✅ Sprint 7 | | 8 | **未 git commit** — 代码全 untracked | 无版本基线 | P0 | ✅ Sprint 2 | -| 9 | **AI 删项目绕过软删** — tool_registry:263 `repo.delete` 物理删,IPC 走 `soft_delete` 进回收站;AI 层缺 restore/purge/list_trash 工具(仅 project 表有回收站设计,故最该修) | AI 对话删项目 = 数据丢失不可恢复,与 UI 删语义割裂 | P1 | ⬜ Sprint 20 待修(批1) | +| 9 | **AI 删项目绕过软删** — tool_registry:263 `repo.delete` 物理删,IPC 走 `soft_delete` 进回收站;AI 层缺 restore/purge/list_trash 工具(仅 project 表有回收站设计,故最该修) | AI 对话删项目 = 数据丢失不可恢复,与 UI 删语义割裂 | P1 | ✅ Sprint 21 已修(tool_registry 补 restore_project/purge_project/list_trash,delete_project 改 soft_delete) | +| 10 | **api_key 明文存储** — DB 落盘仍明文(migrations.rs:446 api_key TEXT NOT NULL) | 本地库被读/备份外流则泄露 | P0 | 🟡 部分修(FR-S1:IPC mask+编辑不回填✅ commit 49ac060;DB 明文落盘❌ 待迁移 keyring 单列) | --- @@ -707,6 +708,73 @@ **遗留 / 下一步**: Wave2 候选 F-07(df-ai-core trait 下沉,解锁 F-03,需先定 trait 边界);T-12 df-ideas 其余嫌疑项待复查。 +### [Sprint 23] 2026-06-15 — 全量待办编排 + 首批 A+B 清债热身 + +**工作内容**: 全量 `todo.md`(~40 未完成项)汇总按可执行性分 8 组(A 卫生 / B 零风险减法 / C 需用户输入 / D 功能 / E 架构 / F 全局 review P2 / G 测试 / H 长期池),加「编排推进总览」章节供后续会话全局视图。首批推进 A+B 组。 + +**ARC-08 转自研块级 memo**(前会话遗留补记,待 commit): 流式 Markdown 渲染——方案 D(markstream-vue)试装后样式还原成本高且脆(代码块 chrome / 暗色 `--ms-*` 变量 / prose 作用域 4 处对接随库漂移),转自研块级 memo(方案 B 增强版):保留 marked+DOMPurify+.ai-md 原样式零对接 + splitBlocks 块级 memo O(末块) + rAF 节流 + 末块不缓存处理未闭合 token。退役 AR-1 流式纯文本短路。详见 [aichat流式Markdown渲染调研-2026-06-15.md](docs/02-架构设计/aichat流式Markdown渲染调研-2026-06-15.md) §5。 + +**A todo 卫生**: +- AR-1 标退役(被 ARC-08 取代) +- AR-8 重评:前端 rAF 已被 ARC-08 覆盖,剩后端 50ms 合批 + 滚动,降优先级 +- ARC-03 降级重评:df-execute **非空壳**(shell.rs `execute()` 完整 + 被 `run_command` 复用),原「空壳合并」前提失效,转架构维护决策非清债 + +**B 清死链**(ARC-260615-02): 删 App.vue secondaryNav `/decisions` 死链项(router 无此路由,决策治理 = F-260614-08 长期项入口提前占位)+ 删 `nav.decisions` i18n key(zh/en)。`dashboard.recentDecisions`(Dashboard.vue)不同命名空间保留。 + +**代码变更**: `src/App.vue` / `src/i18n/{zh-CN,en}/nav.ts` / `docs/todo.md`(编排总览 + AR-1/AR-8/ARC-02/ARC-03 状态回写)。 + +**验证**: vue-tsc EXIT=0。 + +**B-03b-R8 human 端到端集成测试**(待 commit): human_node.rs 加 2 端到端测(`end_to_end_human_approval_completes_workflow` / `end_to_end_human_approval_cancelled`),覆盖 executor 驱动 a(SleepNode)→b(HumanNode) 两层 DAG 的 Request 真发出 + outputs 收集 + 双节点 Completed,以及外部 set_cancelled → human cancel_tick → executor 跳过 set_failed + 状态保持 Cancelled。封死 R6/R7 回归土壤。10 测全过(8 现有单测 + 2 新端到端)。 + +**遗留 / 下一步**: 下批方向三选一(D 功能增强 F-15-01~04 / E 架构重投入 F-14-01·07 / G 测试 dev 验证 ARC-08 + T-14-01·02);C 组阻塞项(S-260615-01 curl 测 / S-260614-01 多开澄清)等用户输入。 + +### [Sprint 24] 2026-06-15 — P0 generating 状态机加固 + 独立项批量 + +**工作内容**: 多代理编排推进——P0 generating 卡 true 根治组合(B-09/10/11)串行 + 5 独立项 workflow 并行 + 3 项 read-only 勘察下一波。主代理全程核查(失控防护)。 + +**P0 三项**(generating 卡 true 根治,agentic.rs + commands.rs): +- B-09: GeneratingGuard RAII(new/reset().await 幂等/Drop spawn 兜底)+ run_agentic_loop 入口实例化 + 5 处手动复位替换 + try_continue:318 保留手动(should_continue=false 须保 generating=true 待审批) +- B-10: ai_conversation_create 加 app:AppHandle(Tauri 自动注入)+ generating=true 软复位(记 old_conv→复位→清 pending→stop_flag→释锁→emit 零 token AiCompleted→relock 续建)+ 硬拦移除 +- B-11: 两处 conv_id 一致性校验(循环顶部 + push 块内,防软复位后旧 loop 污染新对话) + +**独立 7 项**(B-19 根因指针随 09~18 销账): +- B-12: SessionState enum 视图(Idle/Streaming/AwaitingApproval)+ session_state() 读侧收敛(mod.rs,三调用点注释待后续替换) +- B-18: pending_approvals 单例设计文档注释(mod.rs) +- R-PD-4: keyring 迁移失败阈值告警(MIGRATION_FAIL_THRESHOLD=3 + sidecar 计数 + 达阈值升级 warn,secret.rs,不改兼容时序) +- R-PD-5: approve IPC 加 decision∈options 校验(⚠️半完成:前端 stores/project.ts:252 未传 options,校验形同虚设,待前端补传触发) +- R-PD-13: run_workflow Lagged 结构化 warn + 风险注释(workflow.rs) +- B-20: handleSend catch 加 reactive toast(AiChat.vue 复用 Settings 模式,文案待 i18n) +- B-21: sendMessage catch 一并回滚 user message(useAiSend.ts) + +**勘察下一波**(read-only workflow wxflofhf2): F-260615-02 TaskDetail(已完成核查通过:get_task_by_id IPC + /tasks/:id 路由 + TaskDetail.vue 11 字段 + 列表跳转,cargo check/vue-tsc 0 err)/ F-260615-04 ToolCard折叠(plan 11 步复杂+改核心 ai 文件+细节有误,拆小或留待)/ AR-11 数据联动(勘察 implPlan 含伪代码错误 std::env::var/.match,暂缓待重设计 emit 点)。 + +**代码变更**: agentic.rs / commands.rs / mod.rs / secret.rs / workflow.rs / AiChat.vue / useAiSend.ts。 + +**验证**: cargo check 0 error / vue-tsc 0 error / df-nodes 17 test pass(含 2 human 端到端测,P0 不破坏)。主代理独立核查(非 agent 自报):git diff --stat 文件边界 + 编译复核 + R-PD-4 落地核查(agent 报告夸大称改 75 行实际在更早基线,功能存在即销账)。 + +**失控防护**: 每 agent prompt 锁死文件 + 禁碰决策记录 + 禁自主扩展 + 返回 schema。R-PD-4 agent 把已有代码当自己的(边界检查不准,非造假,同类 WF-G AR-7)。 + +**遗留 / 下一步**: +- R-PD-5 半完成:前端补传 options 触发新校验 +- B-13~17 待续(stop 兜底/Notify 即时打断/heartbeat 提外/MAX_AGENT_ITERATIONS 配置化/key_len 复用) +- F-260615-02 TaskDetail 实施中(后台 agent) +- AR-11 暂缓(等本批提交后重设计 emit 点,audit.rs app_handle 可达性待核查)/ F-260615-04 拆小或留待 + +### [Sprint 25] 2026-06-15 — P0 收尾 + 下一波编排 + +**B-15/16/17 P0 收尾**(零行为变优化): +- B-15: stream_recv.rs heartbeat interval 提到 loop 外(省每轮重建,节拍不变) +- B-16: agentic.rs MAX_AGENT_ITERATIONS pub(crate)→pub const + 配置接入点注释(无现成配置槽,未引入 AppState 字段) +- B-17: agentic.rs key_len 复用 resolve_provider_secret(去重复 keyring resolve,build_provider 内联因 secret.rs 锁边界,DRY 隐患注释标注等价性) +- 核查:cargo check 0 err / df-nodes 17 test pass + +**下一波编排 workflow wcvigw3z4**(3 实施 + 4 勘察,循环链路): +- 实施(文件隔离):B-13 stop 兜底(commands.rs)/ R-PD-5 前端补 options 闭环(stores/project.ts)/ CR-05+07 块级 memo 低风险子项 parseBlock DRY + escapeHtml 抽(AiChat.vue,禁碰 splitBlocks/loadMarkdown 流式核心) +- 勘察 read-only(为下一波确定):B-260615-22 状态同步两方案对比 / B-14 stop_flag→Notify 即时打断跨4文件设计 / F-260615-01 HumanNode 多选审批契约变更影响 / ARC-06 composables/ai 循环依赖拆点 + +**遗留 / 下一步**: 等勘察结果派下一波实施;AR-11 emit 点已查明(audit.rs process_tool_calls 有 app_handle)待本批提交后派;F-260615-03 breaking change / F-260615-04 需定交互 待用户确认;改动堆积(git diff 100+ 文件)建议择机提交收口。 +