Tauri 2 + Vue 3 + Vite 6 桌面应用,Rust workspace 含 13 个 crate (df-ai / df-storage / df-workflow / df-core / df-execute 等)。 核心能力:AI 聊天 agentic 循环(工具调用+人工审批)、工作流引擎、 任务/想法/项目/阶段管理、可追溯性,及配套前端组件。
2.0 KiB
2.0 KiB
df-workflow 工作流引擎
创建: 2026-06-10 | 状态: 初稿
概述
df-workflow 是 DevFlow 的核心引擎,负责 DAG 定义、拓扑排序、节点执行、状态流转和事件广播。引擎不感知具体业务逻辑。
当前状态
| 功能 | 状态 |
|---|---|
| DAG 数据结构 | ✅ 已实现 |
| 拓扑排序 | ✅ 已实现 |
| DagExecutor (顺序执行) | ✅ 已实现 |
| 同层节点并行执行 | ⬜ 有 TODO 注释 |
| Node trait 定义 | ✅ 已实现 |
| 状态机 (WorkflowRunStatus) | ✅ 已实现 |
| EventBus (broadcast) | ✅ 已实现 |
| 条件表达式引擎 | ⚡ 仅支持 true/false |
| 断点续跑 | ⬜ 待实施 |
核心设计
Node trait
pub trait Node: Send + Sync {
fn execute(&self, ctx: &NodeContext) -> Result<NodeOutput>;
fn schema(&self) -> NodeSchema;
fn is_blocking(&self) -> bool { true }
}
DAG 执行流程
1. 接收 WorkflowDef (DAG 定义)
2. 拓扑排序 → 得到执行层 (layers)
3. 逐层执行:
- 同层节点并行 (TODO)
- 阻塞节点等待人工操作
- 非阻塞节点异步完成
4. 状态变更通过 EventBus 广播
5. 每个节点完成后持久化快照
事件类型
WorkflowStarted/WorkflowCompleted/WorkflowFailedNodeStarted/NodeCompleted/NodeFailedWorkflowPaused/WorkflowResumed
依赖关系
df-core (类型、事件、错误)
← df-workflow
← df-nodes (节点实现)
← df-stages (阶段节点)
文件结构
crates/df-workflow/src/
├── lib.rs — 模块入口
├── dag.rs — DAG 数据结构与拓扑排序
├── executor.rs — DagExecutor
├── node.rs — Node trait + NodeContext/Output
├── state.rs — 状态机
├── event.rs — EventBus
└── condition.rs — 条件表达式引擎