Files
DevFlow/docs/02-架构设计/专项设计/任务推进链实施路径-2026-06-16.md
绝尘 bd6a41fe6e 新增: 批次工作落地(推进链/评估闭环/事件总线/并发/加固) + 技术债清理 + 文档整理
后端:
- 工作流推进链(D-03):advance_task/状态机/闸门走 df-nodes Node trait,conditions 条件引擎扩展
- 想法评估闭环:启发式评分+对抗评估,df-ideas/scoring + df-storage/idea_eval_repo + idea 前端打通
- 全局事件数据总线:df-ai/context+context_helpers+augmentation 跨模块解耦
- AI planner/plan_hint/intent:aichat B 路线并行多轮基础
- patch_file 加固(TD-03/04):读改写整体锁防 lost update,expected_hash 合约闭环
- 压缩超时兜底(F-15 卡死根治)
- F-09 多会话并发:LlmConcurrency per-conv + streamingGuard 前端守护 + verify 脚本
- 知识注入 DRY/skills/audit 扩展

清理:
- aichat 技术债(误报 allow/死导入/过时注释 30 项)
- URGENT.md 删除(11 项加急全解决/迁 todo)
- 文档整理(todo/待决策/待审查/ARCHITECTURE/INDEX + 总线/技术债审查新文档)
2026-06-21 20:51:26 +08:00

132 lines
8.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 任务推进链实施路径
> **日期**: 2026-06-16(状态行 2026-06-20 回填)
> **来源**: [任务执行与推进能力分析-2026-06-16.md](../05-代码审查/任务执行与推进能力分析-2026-06-16.md) 第八章(已核对注入)
> **状态**: 阶段1✅ + 阶段2✅(F-260616-06 工作流联动:workflow.rs 完成回调 + 三模板 `task_workflow_templates.rs` + `run_workflow` task_id/target_status)+ 阶段3 部分(`ai_self_review` gate 已落 `task_workflow_templates.rs:54`;`run_workflow` AI 工具已注册但 High 风险默认拒绝实装待核、AiNode 任务上下文注入待核)。**D-260616-01~04 已决策(2026-06-16)**:①前端对齐7态 ②任务软删(UI缓做) ③advance_task 走 **df-nodes Node** ④阶段1先行。
> **关联决策**: D-260616-01~04决策结果见 todo.md 待决策区块)
---
## 〇、核对纠正(实施前必读)
经 Explore 代理核对原分析报告「AI 缺 update_task / run_command 工具」**核实为假**
| 工具 | 报告称 | 核实 | 证据 |
|------|--------|------|------|
| `update_task` | 缺失 | ❌ **存在** | tool_registry.rs:348AI 能改任务字段(含 status经裸 update_field 非状态机收口) |
| `run_command` | 缺失 | ❌ **存在** | tool_registry.rs:468完整 Shell 执行实现 |
| `run_workflow` | 空壳桩 | ⚠️ **未注册** | tool_registry.rs 无此工具(连空壳都没有) |
| `advance_task` | 缺失 | ✅ 确实缺失 | 全局搜零定义 |
**修正后结论**AI **能**更新任务状态、**能**运行命令,但仍**不能**:① 触发三闸门推进链(无 advance_task② 联动工作流task_id=None + 无完成回调)③ 在对话中触发工作流(无 run_workflow 工具)。
---
## 一、阶段 0 — 基础修复(前置,部分已立)
已在 todo.md 立项 **B-260616-12~18**(状态枚举/路由/try-catch/字段保护/DDL/priority/绕 store
**阻塞已解除2026-06-16 D-01/D-02 决策)**
- B-260616-12状态枚举→ D-260616-01 定**前端对齐后端 7 态**,可直接做
- B-260616-13软删除→ D-260616-02 定**加软删除对标 projectsUI 缓做)**,可直接做
---
## 二、阶段 1 — 推进骨架(手动闭环 ~200 行,报告建议先行)
目标:任务状态经「合法路径」推进,而非裸字段修改。
**已落(2026-06-16~17)**:状态机 / advance_task 原子推进 / status 收口 / review_rounds / 前端推进按钮全部实装。
| 任务 | 内容 | 依赖 | 状态 |
|------|------|------|------|
| **F-260616-01** [P1] | **状态机定义df-nodes 新模块 `task_state_machine.rs`**7 态合法转换枚举(`todo→in_progress→in_review→testing→done` 闸门链 + `blocked` 退回 + `cancelled`)。独立模块,非挂在 TaskStatus enum 上。 | D-01✅ 前端对齐7态 | ✅ `crates/df-nodes/src/task_state_machine.rs`(can_transition / regression_target) |
| **F-260616-02** [P1] | **advance_task 推进逻辑df-nodes `task_advance_node.rs` 实现 Node trait**:校验转换 + 原子写(下沉 SQL `WHERE status=:expected` 防 TOCTOU。df-nodes 需补 `df-storage` 依赖读 TaskRecord核实无循环。IPC 层 thin 入口调 df-nodes。 | D-03✅ df-nodes, F-01 | ✅ `advance_task_atomic`(CAS SQL) + IPC 瘦入口 |
| **F-260616-03** [P1] | `status` 移出 `update_task` 白名单(推进链唯一收口) | F-02关联 B-260616-16 | ✅ `settings.rs` tasks 白名单 `status` 不列入(注释 D-260616-04) |
| **F-260616-04** [P2] | `review_rounds` 字段(退回时 +1任务卡显示「第 N 轮 review」 | F-01 | ✅ `advance_status_atomic` 退回转换原子 +1 |
| **F-260616-05** [P1] | 前端 TaskDetail 推进按钮(手动推进,不接 AI | F-02, F-03 | ✅ `views/TaskDetail.vue` 推进按钮 |
此阶段不接 AI/工作流,纯人工推进,但状态机保护和收口到位。
---
## 三、阶段 2 — 工作流联动(单向)
目标:工作流执行能回写任务状态。
**已落(F-260616-06, 2026-06-16~17)**:实施路径详见 [推进链阶段2实施路径-2026-06-16.md](./推进链阶段2实施路径-2026-06-16.md)。
**F-260616-06** [P1](聚合):
1.`run_workflow` IPC 支持 `task_id` / `target_status` 参数(去硬编码 None向后兼容 Option`workflow.rs` run_workflow / run_workflow_inner
2. ✅ 工作流完成回调 → 检查 task_id + target_status → 推进任务状态(②-3);失败按 `regression_target` 退回(②-4)
3. ✅ 定义任务推进 DAG 模板AiNode 执行 + AiNode 自审 + HumanNode 核对)— `crates/df-nodes/src/task_workflow_templates.rs`(三模板 in_progress/testing/done空 dag + target_status 时 `template_for` 自动选)
4. ⚠️ `advance_task` 触发对应闸门工作流 — 经 run_workflow(task_id,target_status) 间接达成(手动/审批路径)advance_task 原子推进本身直调状态机不走工作流(设计如此)
5. ⚠️ 前端展示工作流执行进度 — EventBus 事件转发已落(workflow-event),进度 UI 展示待补
**依赖**:阶段 1 完成 ✅。详见报告 §8 阶段 2。
---
## 四、阶段 3 — AI 执行闭环
目标AI 能真正执行任务内容。
🟡 **部分落(F-260616-07)**`ai_self_review` gate 已落AI 工具注册/上下文注入部分待核。
**F-260616-07** [P2](聚合):
1.`advance_task` AI 工具(让 AI 经合法路径推进)— `crates/df-mcp/src/tools.rs` advance_task spec + 实现(经 `advance_task_atomic` 走状态机,不走旁路裸改)
2. ⚠️ `run_workflow` AI 工具注册实装核对tool_registry.rs **无此工具**,需新建)— **已注册** `df-mcp/tools.rs:120`High 风险默认拒绝桩 `tools.rs:654`,实装待核:当前返回"默认拒绝请到应用内执行"
3. ⚠️ AiNode 接入任务上下文(读任务描述 + 项目目录)— 任务上下文注入待核(模板节点级 config 留空,运行时全局 config 注入路径已有AiNode 是否读 task_id 取描述待核)
4. ✅ AI 自审 verdict 结构化输出 + 解析 — `crates/df-nodes/src/ai_self_review_node.rs`gate:trueverdict=fail 触发工作流 failed → ②-4 退回;详见 [AiNode自审实施方案-2026-06-16.md](./AiNode自审实施方案-2026-06-16.md)
5. ✅ 失败路径完整处理(退回/重做/保持)— `regression_target` 收敛状态机,②-4 回调退回 + review_rounds+1
**依赖**:阶段 2 完成 ✅。详见报告 §8 阶段 3。
---
## 五、阶段 4 — Git 集成(增强)
目标:代码类任务支持 Git 工作流。
**F-260616-08** [P3](聚合):
1.`kind` 字段code/doc/design/generic
2. code kind 闸门接 git 命令worktree/commit/merge
3. BranchRecord 联动(加 worktree_path
4. `on_task_advanced` 钩子填充(分支联动 + 项目 completed
**依赖**:阶段 3 完成。详见报告 §8 阶段 4。
---
## 六、依赖关系图
```
D-01 枚举方向 ──▶ F-01 状态机 ──▶ F-02 advance_task ──▶ F-03 收口 ──▶ F-05 前端按钮
│ │
└──▶ F-04 rounds └──▶ 阶段2(F-06) ──▶ 阶段3(F-07) ──▶ 阶段4(F-08)
D-03 架构落点 ──▶ F-02
D-04 路径取舍 ──▶ 阶段1 是否先行
```
**✅ 阶段 1 已落 / 阶段 2 已落 / 阶段 3 部分2026-06-16~17**D-01前端 7 态)/ D-03df-nodes Node/ D-04先行三决策已定并实施。推进能力实现度已从 0% 推进到「阶段1手动推进闭环 ✅ + 阶段2工作流回写任务 ✅ + 阶段3 ai_self_review gate ✅AI 工具实装/AiNode 上下文注入待核」。df-nodes 落点已落实Node trait 纯接口,已补 `df-storage` 依赖无循环)。
---
## 七、待合并到 `docs/todo.md` 的指针
> 主文件 todo.md 并发修改频繁后台代理以下指针待稍后合并。合并时在「待决策」区块D-260616-04 后)插入:
```
### 🗺️ 任务推进链实施路径2026-06-16 规划·2026-06-20 回填实施状态)
> 详见 [任务推进链实施路径-2026-06-16.md](./任务推进链实施路径-2026-06-16.md)。
> 推进能力实现度阶段1 ✅ + 阶段2 ✅ + 阶段3 部分ai_self_review gate ✅run_workflow AI 工具实装 / AiNode 上下文注入待核)。
> 核对纠正AI 有 update_task/run_command 工具advance_task 已补阶段3run_workflow 已注册但默认拒绝桩待实装。
- [x] F-260616-01~05 阶段1 推进骨架(状态机+advance_task+收口+rounds+前端按钮)
- [x] F-260616-06 阶段2 工作流联动task_id+回调+三 DAG 模板,进度 UI 待补)
- [ ] F-260616-07 阶段3 AI 执行闭环advance_task✅ / run_workflow 默认拒绝桩 / AiNode 上下文注入 / ai_self_review✅
- [ ] F-260616-08 阶段4 Git 集成kind+git闸门+worktree
```