新增: 文档(任务推进链实施路径+任务模块分析+审查报告+patch_file指南)

This commit is contained in:
2026-06-16 02:33:16 +08:00
parent 73ed4bd637
commit 38c7180365
24 changed files with 1644 additions and 485 deletions

View File

@@ -13,8 +13,9 @@ Phase 1 是 DevFlow 的引擎骨架阶段,聚焦于核心数据流打通。本
### ADR-001: 引擎不绑定业务
- **决策**: Workflow Engine (df-workflow) 只做 DAG 执行,不感知具体业务语义
- **原因**: 保持引擎通用性,阶段逻辑通过 df-stages 插件化注入
- **影响**: df-workflow 的 Node trait 是纯接口,业务逻辑在 df-nodes / df-stages 实现
- **原因**: 保持引擎通用性
- **影响**: df-workflow 的 Node trait 是纯接口,业务逻辑在 df-nodes 实现
> ⚠️ 原文写"阶段逻辑通过 df-stages 插件化注入"、"业务逻辑在 df-nodes / df-stages 实现"。`df-stages` crate 已删除(零引用清理),实际无 stages 层。业务逻辑直接在 df-nodes 的 3 个节点实现。
### ADR-002: 本地优先架构
@@ -24,9 +25,10 @@ Phase 1 是 DevFlow 的引擎骨架阶段,聚焦于核心数据流打通。本
### ADR-003: 多 Crate Workspace
- **决策**: 拆分为 13 个独立 crate
- **决策**: 拆分为个独立 crate
- **原因**: 模块解耦、独立编译、按需引用
- **影响**: 依赖关系需严格管控,避免循环依赖
> ⚠️ 原文写"13 个独立 crate",属过时数字(原始设计值)。实际为 **8 个 crate**df-core / df-workflow / df-nodes / df-ai / df-execute / df-storage / df-ideas / df-project。详见 [业务系统设计](./业务系统设计-2026-06-12.md) §六。
### ADR-004: 无 panic 原则

View File

@@ -1,6 +1,6 @@
# AIChat 交互体验改进方案
> 创建: 2025-07-15 | 状态: 待讨论
> 创建: 2026-06-14 | 状态: 待讨论
> 范围: 消息发送、流式渲染、对话管理、错误恢复、技能/Provider、窗口布局等非授权类交互
---

View File

@@ -2,6 +2,7 @@
> 性质:只审查不改代码。本报告汇总本次会话对 devflow AI chat 全链路的核对发现。
> 增补:2026-06-14 追加「修复进度」表AC1/AC2、AR-3、FR-S4、FR-R4、FR-R5 对照 commit 36d68dd / 4b5f096 标已完成),并在 §8 优先级表 AR-3 行内联标注。
> 二次增补:2026-06-15 §8 优先级表全表对齐 todo.md AR 编号体系,逐行补 AR-1~AR-11 标签 + 状态勾注AR-1 退役 / AR-2~7/9~11 已修 / AR-8 重评降级)。
## 审查范围
@@ -216,17 +217,17 @@ handler 接上后 `bind_directory` 使用频率大降(只剩改绑),第二章 bi
| 优先 | 问题 | 方向 |
|------|------|------|
| P0 | H1 流式 Markdown 重解析 | 流式态纯文本/增量渲染,完成后再 markdown;rAF 合并 |
| P0 | H2 审批态新建对话卡死 | `ai_conversation_create` 加 generating 守卫 |
| P0 | 第二章 审批卡片裸 id + reason 模板已完成 commit 36d68dd / AR-3| 后端 reason 拼对象名;前端 id→name |
| P0 | 第四章 create_project 双审(⚠️ 半成品:schema 加 handler 没接) | handler 读 args 的 path/stack,复用 IPC `project.rs:43-83` 探测逻辑 |
| P1 | H3 审批态 stop 无兜底 | stopChat 本地先复位 streaming |
| P1 | M3 Low 工具失败语义 | 统一 AiError 后 loop 也退出,或不 emit AiError |
| P1 | 第三章 clean 无入口 | AiChat 加清空按钮 + 后端真删当前对话消息 |
| P2 | M1+M2 delta 节流 + 滚动 | 后端 50ms 合批 / 前端 rAF |
| P2 | M4 friendlyError i18n | 抽 i18n key |
| P2 | 第六章 灵感迁移残留 | i18n + 后端错误 + LLM 描述统一改 |
| P2 | 第五章 数据联动 | 方案 A 后端 emit + store 监听 |
| P0 | H1 流式 Markdown 重解析**退役**AR-12026-06-15— 自研块级 memo 取代splitBlocks O(末块)+rAF 节流),详见 [流式渲染调研 §5](./aichat流式Markdown渲染调研-2026-06-15.md) | 流式态纯文本/增量渲染,完成后再 markdown;rAF 合并 |
| P0 | H2 审批态新建对话卡死**已修**AR-2commit 057a212 | `ai_conversation_create` 加 generating 守卫 |
| P0 | 第二章 审批卡片裸 id + reason 模板 **已修**AR-3commit 36d68dd| 后端 reason 拼对象名;前端 id→name |
| P0 | 第四章 create_project 双审**已修**AR-4commit 057a212schema 加 path/stack + handler 合并绑定 | handler 读 args 的 path/stack,复用 IPC `project.rs:43-83` 探测逻辑 |
| P1 | H3 审批态 stop 无兜底**已修**AR-5commit 9e2aeff— stopChat 本地先复位 streaming + clearStreamWatchdog | stopChat 本地先复位 streaming |
| P1 | M3 Low 工具失败语义**已修**AR-6commit f82dd8b— Low 失败非 AiError错误回填 tool_result 让 LLM 自处理 | 统一 AiError 后 loop 也退出,或不 emit AiError |
| P1 | 第三章 clean 无入口**已修**AR-7commit 9e2aeff— clear_messages 真删 + 垃桶按钮二次确认 | AiChat 加清空按钮 + 后端真删当前对话消息 |
| P2 | M1+M2 delta 节流 + 滚动 🔄 **重评降级**AR-82026-06-15— 前端 rAF 节流已被 ARC-08 覆盖;剩后端 50ms 合批 + 滚动跟随 | 后端 50ms 合批 / 前端 rAF |
| P2 | M4 friendlyError i18n **已修**AR-9commit 9e2aeff— 全走 i18n.global.t + zh/en 双语补 key | 抽 i18n key |
| P2 | 第六章 灵感迁移残留**已修**AR-10commit 65c475b— 13 文件批量统一 | i18n + 后端错误 + LLM 描述统一改 |
| P2 | 第五章 数据联动**已修**AR-11commit dc27e79— 方案 A 后端 emit `df-data-changed` + store listen 已 attach | 方案 A 后端 emit + store 监听 |
---

View File

@@ -1,6 +1,6 @@
# AIChat 授权功能体验改进方案
> 创建: 2025-07-15 | 状态: 待讨论
> 创建: 2026-06-14 | 状态: 待讨论
## 一、当前授权机制概览
@@ -24,7 +24,7 @@
| 风险等级 | 工具 | 执行方式 |
|---------|------|---------|
| **Low** | `list_projects`, `list_tasks`, `list_ideas`, `list_trash`, `read_file`, `list_directory` | 自动执行,并行 `join_all` |
| **Medium** | `create_project`, `create_task`, `create_idea`, `update_project`, `update_task`, `bind_directory`, `write_file` | 需人工审批 |
| Medium | `create_project`, `create_task`, `create_idea`, `update_project`, `update_task`, `bind_directory`, `write_file` | 需人工审批 |
| **High** | `delete_project`, `restore_project`, `purge_project`, `delete_task`, `run_workflow`, `run_command` | 需人工审批 |
### 1.3 已实现的亮点
@@ -181,26 +181,28 @@
### P1 — 增强控制力
#### 3.4 自动审批策略(信任模式)
#### 3.4 会话级授权 Session Trust
**方案**Settings 中增加"自动审批"配置,用户可选择对特定风险等级或工具类型自动放行
**方案**引入会话级信任机制,替代全局宽松模式。用户在当前对话中一次性授权某目录的写/执行权限,后续该对话内同类操作自动放行。切换对话或新建对话时信任清空
**配置项**
```
Settings → AI → 自动审批策略
○ 严格模式(默认):所有 Medium/High 需人工审批
○ 宽松模式Medium 自动放行High 需人工审批
○ 自定义:按工具类型选择
☑ write_fileworkspace 内自动放行)
☑ create_task / create_idea自动放行
☐ delete_*(始终需审批)
☐ run_command始终需审批
当前会话信任目录:
✅ E:/wk-lab/devflow/src (Write + Execute)
✅ E:/wk-lab/devflow/docs (Write)
+ 添加目录...
```
**改动范围**
- `df-storage``app_settings` 表存储配置KV 已有 V13 表)
- `audit.rs``process_tool_calls` 读取配置,决定 Medium 工具是否进 pending 或直接执行
- `Settings.vue`:新增配置面板
- 前端Settings 或对话 header 新增「信任管理」入口
- 后端:`AiSession` 增加 `trusted_dirs: HashSet<(PathBuf, TrustLevel)>`
- `audit.rs``process_tool_calls` 先查 session trust命中则跳过 pending
**安全边界**
- 仅纯读取操作list_*/read_*/list_directory保持自动放行
- 所有 create/update/bind/write/delete 操作默认需审批或 session-trust
- bind_directory 归类为修改操作
- 信任仅限当前会话内存,不持久化
#### 3.5 High 二次确认
@@ -221,13 +223,13 @@ Settings → AI → 自动审批策略
→ 才真正执行 ai_approve
```
#### 3.6 审批超时
#### 3.6 审批超时(前端定时器)
**方案**可配置超时自动拒绝(默认 5 分钟),避免对话永久卡住
**方案**前端侧 5 分钟超时自动拒绝,避免对话永久卡住。超时策略独立于 Webhook 等外部动作路径
**改动范围**
- 端:`AiSession` 增加 pending 审批的 `created_at` 时间戳,定时检查超时
- 或前端:`useAiSend.ts` 在 pending 时启动定时器,超时自动调 `ai_approve(id, false)`
- 端:`useAiSend.ts` pending 时启动 5min 定时器,超时自动调 `ai_approve(id, false)`
- 不改后端 AiSession 结构(远期 Webhook 走独立路径)
---
@@ -252,7 +254,7 @@ Settings → AI → 自动审批策略
└──────────────────────────────────┘
```
#### 3.8 审历史面板
#### 3.8 审历史面板
**方案**:独立页面展示 `ai_tool_executions` 表的审计记录。
@@ -262,7 +264,7 @@ Settings → AI → 自动审批策略
**展示字段**
| 时间 | 工具 | 风险 | 状态 | 决策者 | 参数摘要 | 结果摘要 |
|------|------|------|------|--------|---------|---------|
|------|------|------|------|--------|---------|----------|
---
@@ -273,10 +275,10 @@ Settings → AI → 自动审批策略
| **P0** | 3.1 批量审批 | 0.5 天 | 🔥🔥🔥 |
| **P0** | 3.2 审批计数器 + 跳转 | 0.5 天 | 🔥🔥🔥 |
| **P0** | 3.3 write_file diff 预览 | 1 天 | 🔥🔥 |
| **P1** | 3.4 自动审批策略 | 1.5 天 | 🔥🔥🔥 |
| **P1** | 3.4 会话级授权 Session Trust | 1.5 天 | 🔥🔥🔥 |
| **P1** | 3.5 High 二次确认 | 0.5 天 | 🔥 |
| **P1** | 3.6 审批超时 | 0.5 天 | 🔥 |
| **P1** | 3.6 审批超时(前端5min) | 0.5 天 | 🔥 |
| **P2** | 3.7 Agentic 进度条 | 0.5 天 | 🔥🔥 |
| **P2** | 3.8 审历史面板 | 1 天 | 🔥 |
| **P2** | 3.8 审历史面板 | 1 天 | 🔥 |
**建议第一批落地**P0 三项(批量审批 + 计数器 + diff 预览),总计约 2 天工作量,覆盖最高频的体验痛点。

View File

@@ -1,6 +1,8 @@
# DevFlow 业务系统设计
> 创建: 2026-06-10 | 状态: 设计中 | 基于: 功能审查结论
> 创建: 2026-06-10 | 状态: 设计中 | 最后重写: 2026-06-15 (DOC-01 硬伤修复)
>
> **本文档为 ARCHITECTURE.md 的实质载体**(项目无独立 ARCHITECTURE.md 文件)。所有数据模型、设计决策均以源码为基准,已剔除虚构内容。
---
@@ -8,9 +10,9 @@
| 维度 | 定义 |
|------|------|
| **一句话** | AI 原生的产研操作系统,从想法到上线的全流程编排 |
| **目标用户** | 个人开发者优先,后续扩展到小团队 |
| **核心价值** | 全流程编排 — 想法池 → 项目 → 任务 → 工作流 → 发布AI 贯穿每个环节 |
| **一句话** | AI 原生的个人开发流程驾驶舱,从想法到任务到工作流的本地工具 |
| **目标用户** | 个人开发者 |
| **核心价值** | 想法池 → 项目 → 任务 → 工作流DAGAI 贯穿每个环节 |
| **差异化** | 想法第一公民 + AI 全程参与 + 本地优先(零运维) |
---
@@ -20,240 +22,176 @@
### 2.1 核心旅程
```
💡 想法池 📂 项目 🔀 任务 🚀 发布
─────────────────────────────────────────────────────────────────────────────────────
捕捉想法 ──→ AI评估评分 ──→ 晋升立项 ──→ 创建任务 ──→ 绑定分支 ──→ 执行工作流 ──→ 合并发布
│ │
└── 淘汰/归档 └── 多任务 └── DAG └── AI辅助 └── 自动化
并行推进 自动执行 冲突解决 发布流程
想法池 项目 任务 工作流
────────────────────────────────────────────────────────────────────────────
捕捉想法 评估评分 → 晋升立项 → 创建任务 → 绑定分支 → 执行 DAG 工作流
│ │ │
└── 淘汰/归档 └── 多任务 └── 自动执行 └── Script/Ai/Human
```
### 2.2 个阶段详细设计
### 2.2 个阶段详细设计
#### 阶段一:💡 想法池 (Idea Pool)
#### 阶段一:想法池 (Idea Pool)
**用户场景**开发者日常产生大量想法(看到新技术、遇到痛点、产生产品灵感),需要一个地方快速捕捉、评估、筛选。
**用户场景**:快速捕捉想法、评估、筛选。
| 操作 | 描述 | AI 参与 |
|------|------|---------|
| **捕捉** | 文本输入、快捷键快速记录、剪贴板导入 | 无 |
| **评估** | AI 分析可行性、市场潜力、技术难度 | ⭐ 核心场景LLM 评估报告 |
| **评分** | 多维打分 (可行性/影响力/紧迫性) | AI 给出建议分 |
| **关联** | 相似想法自动发现,可合并 | AI 语义相似度 |
| **捕捉** | 文本输入 | 无 |
| **评估** | 启发式评分(可行性/影响力/紧迫性) | 当前固定算法Phase 2 接 LLM |
| **晋升** | 高分想法晋升为项目 | AI 生成项目初始化建议 |
| **淘汰** | 低分想法归档或删除 | 无 |
**状态机**
**状态机**(对齐 `IdeaStatus` 枚举)
```
Draft → Evaluating → ScoredApproved → Promoted
Rejected → Archived
draft → pending_reviewapproved → promoted(正向)
rejected → archived(淘汰)
```
**关键问题**
- ✅ 想法是独立于项目的第一公民,不需要先有项目
- ✅ AI 评估是核心差异化功能
- ⚠️ 评分维度需要与实际对齐当前有3套不同的维度定义
#### 阶段二:📂 项目 (Project)
**用户场景**:从想法晋升或手动创建项目,管理项目全生命周期。
#### 阶段二:项目 (Project)
| 操作 | 描述 | AI 参与 |
|------|------|---------|
| **创建** | 从想法晋升 或 手动创建 | AI 生成项目描述/技术栈建议 |
| **阶段管理** | 5阶段管线想法→需求→编码→测试→发布 | 阶段推进时 AI 检查前置条件 |
| **上下文** | 项目代码结构、依赖、规范 | AI 自动分析项目结构 |
| **暂停/恢复** | 项目可暂停后恢复 | 无 |
| **创建** | 从想法晋升 或 手动创建 | AI 生成描述/技术栈建议 |
| **绑定目录** | 关联本地代码目录(自动探测技术栈) | 无 |
| **软删/恢复** | 回收站机制deleted_at | 无 |
**状态机**
**状态机**(对齐 `ProjectStatus` 枚举)
```
Planning → InProgress → Testing → Releasing → Completed
Paused → InProgress (恢复)
Cancelled
planning → in_progress → testing → releasing → completed
paused → in_progress恢复
cancelled
```
**阶段管线**current_stage独立于 status
```
Idea → Requirement → Coding → Testing → Release
```
**关键问题**
- ⚠️ 当前 `status`(项目生命周期)和 `current_stage`(当前阶段)是两个维度,前端混用了
- ⚠️ 数据库 projects 表缺少 `current_stage``repo_path``priority``tags` 字段
#### 阶段三:🔀 任务 (Task)
**用户场景**:项目内创建多个并行任务,每个任务绑定一个 Git 分支,独立工作流。
#### 阶段三:任务 (Task)
| 操作 | 描述 | AI 参与 |
|------|------|---------|
| **创建任务** | 标题+描述,自动创建分支 | AI 从需求拆解任务 |
| **绑定分支** | 每个任务一个独立分支 | 自动生成分支名 |
| **执行工作流** | 触发 DAG 工作流(编码→测试→审查) | AI 参与每个节点 |
| **审查** | 代码审查、质量检查 | AI 自动审查 |
| **合并** | 合并到主分支,冲突解决 | AI 辅助冲突解决 |
| **创建任务** | 标题+描述 | AI 从需求拆解任务 |
| **执行工作流** | 触发 DAG 工作流 | AI 参与每个 Ai 节点 |
**状态机**
**状态机**(对齐 `TaskStatus` 枚举7 态)
```
Todo → InProgress → InReview → Testing → Done
Blocked → InProgress (解除阻塞)
Cancelled
todo → in_progress → in_review → testing → done
blocked → in_progress解除阻塞
cancelled
```
**关键问题**
- ⚠️ 缺少 `branches` 表,分支信息无法持久化
- ⚠️ 任务到工作流的关联 (`workflow_def_id`) 缺失
- ⚠️ 前端 TaskStatus 有 4 套不同的值
#### 阶段四:工作流 (Workflow)
#### 阶段四:⚙️ 工作流 (Workflow)
**实际内置 3 种节点类型**(均在 `crates/df-nodes/src/` 完整实现):
**用户场景**DAG 驱动的工作流自动执行,支持条件分支、并行、人工审批。
| 节点 | 文件 | 作用 | 阻塞 |
|------|------|------|------|
| **Script** | `script_node.rs` | Shell 命令执行(经 `df-execute::shell` | 否 |
| **Ai** | `ai_node.rs` | LLM 文本生成/分析(非流式 complete | 否 |
| **Human** | `human_node.rs` | 人工审批/确认(单选/多选) | 是 |
| 组件 | 描述 |
|------|------|
| **DAG 定义** | 可序列化的节点+边定义,持久化到 SQLite |
| **节点类型** | Script / AI / Docker / Git / HTTP / Human / Notify / Subflow |
| **执行器** | 按拓扑层并行执行,支持暂停/恢复 |
| **事件总线** | 实时推送节点状态到前端 |
| **NodeRegistry** | 根据类型字符串动态创建节点实例 |
> 不存在 Condition / Parallel / Docker / Git / Notify / HTTP / Subflow 节点。
> 条件分支由工作流引擎层处理(条件表达式引擎见 `条件表达式引擎-2026-06-15.md`)。
**工作流执行生命周期**
```
Pending → Running → Completed
Paused → Running (恢复)
Failed → Running (重试)
Cancelled
pending → running → completed
paused → running恢复
failed → running重试
cancelled
```
**关键问题**
- ✅ DAG 拓扑排序算法正确
- ✅ DagDef/NodeRegistry 已实现
- ⚠️ Executor 同层节点尚未并行化
- ⚠️ 条件分支引擎未实现
- ⚠️ HumanNode人工审批暂停/恢复未连通
#### 阶段五:🚀 发布 (Release)
**用户场景**:选择多个已完成任务,编排发布流程。
| 操作 | 描述 | AI 参与 |
|------|------|---------|
| **选择任务** | 选择要发布的 Done 状态任务 | 无 |
| **创建发布** | 合并分支到 release 分支 | AI 生成 changelog |
| **集成测试** | 运行完整测试工作流 | 自动 |
| **发布** | 部署 + 健康检查 | 自动 |
| **回滚** | 发布失败回滚 | AI 分析失败原因 |
**状态机**
```
Planning → Integrating → Testing → Ready → Published
→ RolledBack
→ Cancelled
```
**关键问题**
- ⚠️ 前端完全缺少发布入口
- ⚠️ releases 表缺少 `branch_name``workflow_def_id`
---
## 三、跨领域功能设计
## 三、跨领域功能设计(已实现)
### 3.1 标注系统 (Annotation)
### 3.1 知识库 (Knowledge)
**设计理念**:任何内容(代码/文档/需求/测试报告)都可插入标注,统一收集后交给 AI 批量处理
| 标记 | 含义 | AI 处理方式 |
|------|------|-----------|
| FIXME | 需要修复 | AI 定位问题并生成修复建议 |
| TODO | 待办 | AI 拆解为任务 |
| QUESTION | 疑问 | AI 尝试回答 |
| RISK | 风险 | AI 评估风险等级 |
| DECISION | 决策 | 自动记录到决策日志 |
| OPTIMIZE | 优化 | AI 给出优化方案 |
**批量处理流程**
```
收集所有 Open 标注 → 按类型分组 → AI 逐条处理 → 标记为 Resolved
```
### 3.2 决策留痕 (Decision Journal)
**设计理念**:所有关键决策自动或半自动记录,全程可追溯。
**自动记录的决策场景**
- 想法评估结果(为什么批准/拒绝)
- 功能标记为"不做"时(为什么不做)
- AI 选择了方案 A 而非方案 B 时
- 代码审查中发现风险时的处理决策
- 发布前的检查点决策
### 3.3 经验进化 (Evolution)
**设计理念**:开发过程自动沉淀知识,越用越聪明。
Tier1 AI 提炼:从 AI 对话中自动提炼候选经验条目,附带 reasoning 判断依据
| 知识类型 | 来源 | 复用场景 |
|---------|------|---------|
| 审查规则 | 代码审查结论 | 后续审查自动应用 |
| 审查规则 | 代码审查结论 | 后续审查参考 |
| Prompt 模板 | 成功的 AI 对话 | 类似场景复用 |
| 踩坑经验 | 错误修复过程 | 遇到类似问题提醒 |
| 架构模式 | 项目结构分析 | 新项目初始化建议 |
| 踩坑经验 | 错误修复过程 | 类似问题提醒 |
### 3.4 AI 编排
**生命线**candidate → pending_review → published → archived带 reuse_count / verified 信号。
**多模型策略**
```
任务类型 → ModelRouter → 最优模型
代码生成 → Claude/GPT-4
代码审查 → Claude (长上下文)
文档生成 → GLM/DeepSeek (性价比)
快速问答 → DeepSeek (低成本)
```
### 3.2 AI 多 Provider
**Agent 协作模式**Phase 2+
```
Planner Agent → 拆解任务
Coder Agent → 编码实现
Reviewer Agent → 代码审查
Fixer Agent → 修复问题
```
支持配置多个 AI 提供商OpenAI 兼容 / GLM / DeepSeek / Anthropic 原生协议),可在设置中管理并指定默认。
详见 [df-ai AI集成模块](../03-模块文档/df-ai-AI集成模块-2026-06-12.md)。
### 3.3 EventBus 事件总线
进程内 `tokio::sync::broadcast` 发布/订阅,前端经 `@tauri-apps/api/event` 的 emit/listen 接收。**不是 WebSocket**。
---
## 四、数据模型设计(按阶段)
## ~~三、跨领域功能设计(已废弃规划)~~
### Phase 1 最小表集(当前 + 补全)
> 以下章节曾详述标注系统、决策留痕、经验进化、AI 编排ModelRouter/Agent 协作)等设计。
> 这些功能**从未实现**对应表annotations/decisions/features/test_cases也从未建表。
> 保留此节仅作历史存档参考,读者应视为"规划意图"而非"现有能力"。
| 表 | 用途 | 状态 |
|----|------|------|
| ideas | 想法池 | ✅ 已有,需补字段 |
| projects | 项目管理 | ✅ 已有,需补字段 |
| tasks | 任务管理 | ✅ 已有,需补字段 |
| releases | 发布管理 | ✅ 已有,需补字段 |
| workflow_defs | 工作流定义 | ❌ 缺失 |
| workflow_executions | 工作流执行 | ✅ 已有,需补字段 |
| node_executions | 节点执行记录 | ✅ 已有 |
| branches | 分支管理 | ❌ 缺失 |
### ~~3.1 标注系统 (Annotation)~~ — ❌ 未实现
### Phase 2 扩展表
### ~~3.2 决策留痕 (Decision Journal)~~ — ❌ 未实现
| 表 | 用途 |
|----|------|
| ai_providers | AI 模型配置 |
| connections | 连接配置 |
| artifacts | 产出物 |
### ~~3.3 经验进化 (Evolution)~~ — ⚠️ 部分落地为知识库knowledges 表),但远不及原规划规模
### Phase 3+ 完整表
### ~~3.4 AI 编排ModelRouter / Agent 协作)~~ — ❌ ModelRouter 从未存在Agent 协作属 Phase 2 规划B 路线)
| 表 | 用途 |
|----|------|
| annotations | 标注系统 |
| decisions | 决策留痕 |
| features | 需求功能清单 |
| test_cases | 测试用例 |
| test_runs | 测试执行记录 |
| knowledge | 经验知识库 |
| merge_requests | 合并请求 |
---
## 四、数据模型设计V1-V13 迁移实际表)
> 核对基准:`crates/df-storage/src/migrations.rs` 建表 SQL + `models.rs` Record 结构体。
### 全量表清单13 业务表 + 1 元表)
#### 活跃业务表11 张)— 有上层代码读写
| # | 表名 | 建表版本 | 用途 | 对应 Model | 活跃消费者 |
|---|------|---------|------|-----------|-----------|
| 1 | `ideas` | V1+V2 | 想法池 | IdeaRecord | df-ideas crate |
| 2 | `projects` | V1+V11+V12 | 项目管理 | ProjectRecord | df-project crate |
| 3 | `tasks` | V1+V2 | 任务管理 | TaskRecord | commands::taskIPC handler 直连 CRUD |
| 4 | `workflow_executions` | V1+V2 | 工作流执行实例 | WorkflowRecord | df-workflow crate |
| 5 | `node_executions` | V1 | 节点执行审计 | NodeExecutionRecord | df-workflow executor |
| 6 | `ai_conversations` | V3+V4/V5/V6 | AI 对话历史 | AiConversationRecord | commands::ai |
| 7 | `ai_providers` | V9 | AI 提供商配置 | AiProviderRecord | commands::ai::provider |
| 8 | `ai_tool_executions` | V9 | AI 工具调用审计 | AiToolExecutionRecord | commands::ai |
| 9 | `knowledges` | V7+V8/V10 | 知识库条目 | KnowledgeRecord | commands::knowledge |
| 10 | `knowledge_events` | V10 | 知识生命线事件 | KnowledgeEventRecord | commands::knowledge |
| 11 | `app_settings` | V13 | 通用 KV 设置 | (无独立 model) | commands::settings手写 Repo |
#### 遗留表2 张)— DDL 存在但无活跃业务消费者
> `df-task` crate 已于 2026-06-14 移除(零引用清理)。以下表仍在 migrations.rs 中创建、models.rs 有结构体、CRUD 可用,但当前**无上层业务代码写入或消费**。
| # | 表名 | 建表版本 | 原始用途 | 状态 |
|---|------|---------|---------|------|
| 12 | `branches` | V2 | Git 分支绑定 | ⚠️ 无消费者DDL 存在CRUD 可用但无人调用) |
| 13 | `releases` | V1 | 发布记录 | ⚠️ **功能性死表**DDL 存在且含 version/status/task_ids/changelog/released_at 完整 schema但全代码库零业务读写——无 ReleaseStatus 枚举、无 release 相关 IPC command、前端无发布管理页面。属"建了但从未使用"的空壳占位。 |
#### 内部元表
| # | 表名 | 建表版本 | 用途 |
|---|------|---------|------|
| - | `schema_version` | V0 | 迁移版本跟踪(仅存 version INTEGER无业务语义 |
### 不存在的表(曾出现在早期规划但从未建表)
| 表名 | 状态 | 说明 |
|------|------|------|
| `workflow_defs` | ❌ 从未建表 | 工作流定义以 dag_json 内嵌在 workflow_executions 中 |
| `connections` | ❌ 从未建表 | 连接配置使用 app_settings KV 表存储 |
| `artifacts` | ❌ 从未建表 | 产出物概念未落地 |
| `annotations` | ❌ 从未建表 | 标注系统属已废弃规划 |
| `decisions` | ❌ 从未建表 | 决策留痕属已废弃规划 |
| `features` | ❌ 从未建表 | 需求功能清单未落地 |
| `test_cases` / `test_runs` | ❌ 从未建表 | 测试模块未落地 |
| `knowledge`(单数)| ❌ 不存在的旧命名 | 实际表名为 `knowledges`复数V7 建表 |
| `merge_requests` | ❌ 从未建表 | 合并请求未落地 |
---
@@ -261,52 +199,39 @@ Fixer Agent → 修复问题
### D1: 想法是第一公民
- 想法池独立于项目,可以独立运转
- 想法不需要关联项目即可被评估和打分
- 晋升是单向操作(想法→项目),但保留追溯
### D2: 多任务/分支并行
- 同一项目内多个任务同时开发
- 每个任务绑定独立 Git 分支
- 任务间互不干扰,完成后合并
### D3: 引擎不绑定业务
- DAG 引擎纯粹做编排,不知道"想法"/"项目"等概念
- 阶段是 DAG 模板,可自定义
- 节点通过 Node trait 扩展
### D4: 本地优先
### D2: 本地优先
- SQLite 嵌入,不依赖云服务
- 所有数据存储在本地
- 零运维,安装即用
### D5: AI 贯穿全程
- 不是"加了 AI 功能",而是"AI 是系统的一部分"
- 每个阶段都有 AI 参与
- AI 输出作为决策依据,最终决策权在人
### D3: 引擎不绑定业务
- DAG 引擎纯粹做编排,不感知具体业务语义
- 业务逻辑在 df-nodes 实现Node trait 是纯接口)
### D6: 决策必留痕
- 所有关键决策自动记录
- 决策可追溯到具体上下文(哪个想法、哪个功能、哪次审查)
- 未来可回溯"为什么这么做"
### D4: AI 贯穿全程
- AI Chat 对话 + 工作流 AiNode 双路径
- AI 输出作为决策依据,最终决策权在人
---
## 六、审查发现的设计问题与决策
## 六、Crate 结构
| # | 问题 | 设计决策 | 优先级 |
|---|------|---------|--------|
| 1 | 状态枚举三套不一致 | **以 types.rs 为准**ARCHITECTURE.md 和 SQL 同步 | Phase 1 |
| 2 | projects 缺 status vs stage | **status 和 current_stage 分开**status 管生命周期stage 管进度 | Phase 1 |
| 3 | ideas.promoted_to 缺失 | **V2 补字段**,晋升时回写 | Phase 1 |
| 4 | branches 表不存在 | **V2 新增表**,分支管理需要持久化 | Phase 1 |
| 5 | workflow_executions 缺 project_id | **V2 补字段**,执行记录必须关联业务 | Phase 1 |
| 6 | DAG 不可序列化 | **DagDef/Dag 分离**(已完成) | Phase 1 |
| 7 | Executor 串行 | **同层并行化**(待实现) | Phase 1 |
| 8 | 前端 id 类型不对 | **统一为 string (UUID)** | Phase 1 |
| 9 | Store 未接入 View | **先建 API 层再接 Store** | Phase 1 |
| 10 | 标注/决策表缺失 | Phase 3 再建表,当前 UI 标注 "Coming Soon" | Phase 3 |
| 11 | 需求-测试追溯 | Phase 4 再建表 | Phase 4 |
| 12 | 经验进化 | Phase 5 实现 | Phase 5 |
实际 **8 个 crate**`crates/` 目录下):
| Crate | 职责 |
|-------|------|
| `df-core` | 公共类型types.rs、事件定义、工具函数 |
| `df-workflow` | DAG 引擎拓扑排序、执行器、Node trait |
| `df-nodes` | 内置节点Ai / Script / Human |
| `df-ai` | AI 集成层LlmProvider trait、OpenAI 兼容、Anthropic、ContextManager、工具注册基础设施 |
| `df-execute` | Shell 执行(跨平台封装) |
| `df-storage` | SQLite 存储层migrations、CRUD 宏、Repo |
| `df-ideas` | 想法池业务逻辑(评估、晋升) |
| `df-project` | 项目管理业务逻辑(目录绑定、技术栈探测) |
> 原始设计文档Phase1架构决策 ADR-003曾写 "13 个独立 crate",属过时数字,未随代码演进更新。实际为以上 8 个。
---
@@ -316,16 +241,15 @@ Fixer Agent → 修复问题
```
1. 用户在想法池输入"做一个 Markdown 编辑器"
2. AI 评估可行性,给出评分和建议
2. 启发式评估可行性,给出评分和建议
3. 用户点击"晋升为项目"
4. 系统创建项目,进入编码阶段
4. 系统创建项目
5. 用户创建任务"实现基础编辑功能"
6. 系统创建分支 task/abc123
7. 用户点击"运行工作流"
8. DAG 执行: [Shell: 环境检查] → [Shell: 运行测试] → [Shell: 构建产物]
9. 前端实时展示执行日志
10. 执行完成,结果持久化到 SQLite
11. 用户刷新页面,数据仍在
6. 用户点击"运行工作流"
7. DAG 执行: [Script: 环境检查] → [Ai: 代码生成] → [Human: 审批]
8. 前端经 EventBus 实时展示执行日志
9. 执行完成,结果持久化到 SQLite
10. 用户刷新页面,数据仍在
```
---
@@ -337,13 +261,22 @@ Fixer Agent → 修复问题
-`evaluator.rs` 已实现的 `EvalDimension` 对齐
- `IdeaScores { feasibility, impact, urgency, overall }` 保留
### Q2: 发布模块 Phase 1 范围 ✅ 已确认
**决策**Phase 1 简化 — 只做 Release 记录 + 手动标记任务
- releases 表保留,支持 CRUD
- 不做自动化发布流程(合并→测试→部署)
- 前端在 ProjectDetail 中添加简单 Release 面板
### Q2: 发布模块 ✅ 已确认(当前为死表状态)
**决策**Phase 1 不做发布功能。releases 表 DDL 存在但无业务逻辑,待后续激活。
- 不做自动化发布流程
- 前端无发布入口
### Q3: AI 评估 Phase 1 范围 ✅ 已确认
**决策**Phase 1 用固定算法评分,延后接入 AI
- `ScoringEngine` 当前返回固定 5.0,改为基于启发式规则的简单算法
**决策**Phase 1 用固定算法评分,延后接入 LLM
- `ScoringEngine` 当前返回基于启发式规则的分数
- Phase 2 接入 LLM 后替换为 AI 评分
---
## 相关文档
- [df-nodes 节点集合](../03-模块文档/df-nodes-节点集合-2026-06-12.md) — 3 节点详述
- [df-ai AI 集成模块](../03-模块文档/df-ai-AI集成模块-2026-06-12.md) — Provider / Context / 工具注册
- [df-storage 存储层](../03-模块文档/df-storage-存储层-2026-06-12.md) — 迁移 / CRUD / Repo
- [df-workflow 工作流引擎](../03-模块文档/df-workflow-工作流引擎-2026-06-12.md) — DAG / Executor
- [Phase1 架构决策](./Phase1架构决策-2026-06-12.md) — ADR 记录注意ADR-001/003 含过时信息,以本文档为准)

View File

@@ -0,0 +1,125 @@
# 任务推进链实施路径
> **日期**: 2026-06-16
> **来源**: [任务执行与推进能力分析-2026-06-16.md](../05-代码审查/任务执行与推进能力分析-2026-06-16.md) 第八章(已核对注入)
> **状态**: 规划定稿。**D-260616-01~04 已决策(2026-06-16)**:①前端对齐7态 ②任务软删(UI缓做) ③advance_task 走 **df-nodes Node** ④阶段1先行。**阶段1可启动(F-01~05)**。
> **关联决策**: 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 行,报告建议先行)
目标:任务状态经「合法路径」推进,而非裸字段修改。
| 任务 | 内容 | 依赖 |
|------|------|------|
| **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态 |
| **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 |
| **F-260616-03** [P1] | `status` 移出 `update_task` 白名单(推进链唯一收口) | F-02关联 B-260616-16 |
| **F-260616-04** [P2] | `review_rounds` 字段(退回时 +1任务卡显示「第 N 轮 review」 | F-01 |
| **F-260616-05** [P1] | 前端 TaskDetail 推进按钮(手动推进,不接 AI | F-02, F-03 |
此阶段不接 AI/工作流,纯人工推进,但状态机保护和收口到位。
---
## 三、阶段 2 — 工作流联动(单向)
目标:工作流执行能回写任务状态。
**F-260616-06** [P1](聚合):
1. `run_workflow` IPC 支持 `task_id` 参数(去 workflow.rs:56 None 硬编码)
2. 工作流完成回调 → 检查 task_id → 推进任务状态
3. 定义任务推进 DAG 模板AiNode 执行 + AiNode 自审 + HumanNode 核对)
4. `advance_task` 触发对应闸门工作流
5. 前端展示工作流执行进度
**依赖**:阶段 1 完成。详见报告 §8 阶段 2。
---
## 四、阶段 3 — AI 执行闭环
目标AI 能真正执行任务内容。
**F-260616-07** [P2](聚合):
1. `advance_task` AI 工具(让 AI 经合法路径推进)
2. `run_workflow` AI 工具注册实装核对tool_registry.rs **无此工具**,需新建)
3. AiNode 接入任务上下文(读任务描述 + 项目目录)
4. AI 自审 verdict 结构化输出 + 解析
5. 失败路径完整处理(退回/重做/保持)
**依赖**:阶段 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 可启动2026-06-16**D-01前端 7 态)/ D-03df-nodes Node/ D-04先行三决策已定。阶段 1 ~200 行,从 0% 推进能力到「手动推进闭环」。df-nodes 落点核实可行Node trait 纯接口 `df-workflow/src/node.rs:67`,现有 AiNode/HumanNode/ScriptNode需补 `df-storage` 依赖无循环)。
---
## 七、待合并到 `docs/todo.md` 的指针
> 主文件 todo.md 并发修改频繁后台代理以下指针待稍后合并。合并时在「待决策」区块D-260616-04 后)插入:
```
### 🗺️ 任务推进链实施路径2026-06-16 规划·供其他会话读取)
> 详见 [任务推进链实施路径-2026-06-16.md](./02-架构设计/任务推进链实施路径-2026-06-16.md)。
> 推进能力实现度 0%。**阶段 1 已解除阻塞D-01/D-03/D-04 三决策已定 2026-06-16可启动 F-01~05**。
> 核对纠正AI 有 update_task/run_command 工具,无 run_workflow/advance_task。
- [ ] F-260616-01~05 阶段1 推进骨架(状态机+advance_task+收口+rounds+前端按钮)
- [ ] F-260616-06 阶段2 工作流联动task_id+回调+DAG模板
- [ ] F-260616-07 阶段3 AI 执行闭环advance_task/run_workflow 工具+AiNode+自审)
- [ ] F-260616-08 阶段4 Git 集成kind+git闸门+worktree
```

View File

@@ -11,7 +11,7 @@
| 代理 | 立场 | 综合评分 |
|------|------|---------|
| 市场分析师 | 竞品全景 + 市场数据(带外部信源) | **4/10 — 不建议以当前形态推进** |
| 技术架构师 | 13 crate / Tauri / 引擎 / AI 可行性 | **2.7/5 — 可行但必须砍 scope** |
| 技术架构师 | 13 crate2026-06-12 评审时数2026-06-14 删 5 僵尸 crate现 8/ Tauri / 引擎 / AI 可行性 | **2.7/5 — 可行但必须砍 scope** |
| 恶魔代言人 | 逐功能质疑需求真实性 | **核心成立60% 功能该砍** |
---
@@ -21,7 +21,7 @@
### 共识 1🔴 Scope 失控是最大风险
- 8 个核心功能横跨 4-5 个产品类别PM + 工作流 + AI 编排 + 代码分析 + 知识库)
- 22,745 字架构文档、16 张表、13 crate —— **这是操作系统的野心,不是 MVP 的规划**
- 22,745 字架构文档、16 张表、13 crate评审时点数2026-06-14 裁定为 8 crate—— **这是操作系统的野心,不是 MVP 的规划**
- 现实工时v1.0 全功能需全职 8-12 个月 / 业余 1.5-2 年
- 历史教训Firebase/Heroku/全生命周期 API 平台都被"组件化组合"打败
@@ -112,7 +112,7 @@
### 5.3 架构调整
- **13 crate 保留目录结构**已建好,删除反而费工),但 Phase 1 只激活 6 个:
- **13 crate 保留目录结构**评审时点2026-06-14 裁定删除 5 个僵尸 crate df-evolve/df-plugin/df-stages/df-task/df-traceability现实际 8 crate),但 Phase 1 只激活 6 个:
`df-core / df-workflow / df-storage / df-execute / df-nodes / src-tauri`
- 其余 7 个 crate 标记为 `[预留]`,从 workspace 默认构建中保留但不再投入开发
- Git 操作走 Shell CLI不引入 libgit2技术报告建议省 1-2 周)