重构: 文档汇总+进度看板+孤儿任务清理脚本+gitignore 噪音排除

- 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/ 噪音排除
This commit is contained in:
2026-06-15 05:14:21 +08:00
parent 4b5f096d1c
commit 04032a2a8d
43 changed files with 5372 additions and 163 deletions

View File

@@ -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_trashdelete_project 改 soft_delete |
| 10 | **api_key 明文存储** — DB 落盘仍明文migrations.rs:446 api_key TEXT NOT NULL | 本地库被读/备份外流则泄露 | P0 | 🟡 部分修FR-S1IPC mask+编辑不回填✅ commit 49ac060DB 明文落盘❌ 待迁移 keyring 单列) |
---
@@ -707,6 +708,73 @@
**遗留 / 下一步**: Wave2 候选 F-07df-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 渲染——方案 Dmarkstream-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 keyzh/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·02C 组阻塞项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 RAIInew/reset().await 幂等/Drop spawn 兜底)+ run_agentic_loop 入口实例化 + 5 处手动复位替换 + try_continue:318 保留手动should_continue=false 须保 generating=true 待审批)
- B-10: ai_conversation_create 加 app:AppHandleTauri 自动注入)+ 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 计数 + 达阈值升级 warnsecret.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 toastAiChat.vue 复用 Settings 模式,文案待 i18n
- B-21: sendMessage catch 一并回滚 user messageuseAiSend.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 resolvebuild_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+ 文件)建议择机提交收口。
<!--
### [Sprint N] YYYY-MM-DD — 简述