Phase 82 — 自主工作流编排器设计
版本: v4.1.0 创建日期: 2026-03-10 状态: ✅ 已实现 (v4.1.0)
一、模块概述
Phase 82 实现基于DAG的自主工作流编排器,支持环路检测、审批门控、断点调试、暂停/恢复/回滚,内置5种工作流模板。
1.1 核心目标
- DAG编排: 有向无环图工作流定义,自动拓扑排序和并行执行
- 审批门控: 关键节点人工审批,支持超时自动处理
- 断点调试: 工作流断点设置,逐步执行和状态检查
- 模板系统: 5种内置模板(CI/CD、数据处理、代码审查、部署、测试)
- 容错回滚: 失败节点自动回滚,支持手动回滚到任意检查点
1.2 技术架构
┌──────────────────────────────────────────────────┐
│ Workflow Orchestrator Engine │
│ │
│ ┌───────────────────┐ ┌──────────────────────┐ │
│ │ DAGScheduler │ │ ApprovalGateManager │ │
│ │ 拓扑排序+环路检测 │ │ 审批门控+超时策略 │ │
│ │ 并行调度+依赖追踪 │ │ 多级审批+自动升级 │ │
│ └───────────────────┘ └──────────────────────┘ │
│ ┌───────────────────┐ ┌──────────────────────┐ │
│ │ BreakpointDebugger│ │ RollbackController │ │
│ │ 断点管理+单步执行 │ │ 检查点+状态快照 │ │
│ │ 变量检查+条件断点 │ │ 自动/手动回滚 │ │
│ └───────────────────┘ └──────────────────────┘ │
│ ┌──────────────────────────────────────────────┐ │
│ │ Workflow IPC Layer (10 handlers) │ │
│ └──────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────┘二、核心模块设计
2.1 WorkflowEngine (ai-engine/workflow/workflow-engine.js)
自主工作流编排引擎,核心调度和执行。
常量:
WORKFLOW_STATUS: CREATED, RUNNING, PAUSED, COMPLETED, FAILED, ROLLING_BACKNODE_STATUS: PENDING, RUNNING, COMPLETED, FAILED, SKIPPED, WAITING_APPROVALTEMPLATE_TYPE: CI_CD, DATA_PIPELINE, CODE_REVIEW, DEPLOYMENT, TEST_SUITE
核心方法:
initialize(deps)— 初始化引擎,加载模板和恢复中断的工作流createWorkflow({ name, nodes, edges, config })— 创建DAG工作流(含环路检测)executeWorkflow(workflowId)— 执行工作流(拓扑排序+并行调度)pauseWorkflow(workflowId)— 暂停工作流,保存当前状态快照resumeWorkflow(workflowId)— 从暂停点恢复执行rollbackWorkflow(workflowId, checkpointId)— 回滚到指定检查点listTemplates()— 列出5种内置工作流模板importWorkflow(definition)— 导入外部工作流定义exportWorkflow(workflowId)— 导出工作流为JSON定义getExecutionLog(workflowId)— 获取执行日志和节点状态setBreakpoint({ workflowId, nodeId, condition })— 设置断点(支持条件断点)_detectCycle(nodes, edges)— 环路检测(Kahn算法)_topologicalSort(nodes, edges)— 拓扑排序_createCheckpoint(workflowId)— 创建状态检查点destroy()— 销毁引擎,清理定时器
2.2 WorkflowIPC (ai-engine/workflow/workflow-ipc.js)
IPC通道注册和参数校验。
三、数据库设计
sql
-- Phase 82: Workflow Orchestrator
CREATE TABLE IF NOT EXISTS workflows (
id TEXT PRIMARY KEY,
name TEXT NOT NULL,
description TEXT,
status TEXT DEFAULT 'created',
template_type TEXT,
dag_definition TEXT, -- JSON: nodes + edges
config TEXT, -- JSON: timeout, retries, approval settings
current_checkpoint TEXT,
created_at INTEGER,
updated_at INTEGER,
completed_at INTEGER
);
CREATE TABLE IF NOT EXISTS workflow_nodes (
id TEXT PRIMARY KEY,
workflow_id TEXT NOT NULL,
node_name TEXT NOT NULL,
node_type TEXT, -- task, approval, condition, parallel
status TEXT DEFAULT 'pending',
input_data TEXT,
output_data TEXT,
error_message TEXT,
started_at INTEGER,
completed_at INTEGER,
FOREIGN KEY (workflow_id) REFERENCES workflows(id)
);
CREATE TABLE IF NOT EXISTS workflow_checkpoints (
id TEXT PRIMARY KEY,
workflow_id TEXT NOT NULL,
state_snapshot TEXT, -- JSON: full workflow state
node_states TEXT, -- JSON: all node statuses
created_at INTEGER,
FOREIGN KEY (workflow_id) REFERENCES workflows(id)
);
CREATE TABLE IF NOT EXISTS workflow_execution_logs (
id TEXT PRIMARY KEY,
workflow_id TEXT NOT NULL,
node_id TEXT,
event_type TEXT, -- start, complete, fail, pause, resume, rollback
message TEXT,
metadata TEXT,
created_at INTEGER,
FOREIGN KEY (workflow_id) REFERENCES workflows(id)
);四、IPC接口设计
Phase 82 — WorkflowIPC (10 handlers)
| 通道 | 说明 |
|---|---|
workflow:create | 创建DAG工作流 |
workflow:execute | 执行工作流 |
workflow:pause | 暂停工作流 |
workflow:resume | 恢复工作流 |
workflow:rollback | 回滚到检查点 |
workflow:list-templates | 列出内置模板 |
workflow:import | 导入工作流定义 |
workflow:export | 导出工作流定义 |
workflow:get-execution-log | 获取执行日志 |
workflow:set-breakpoint | 设置断点 |
五、前端集成
Pinia Stores
workflowOrchestrator.ts— 工作流列表、执行状态、模板、日志、断点管理
Vue Pages
WorkflowOrchestratorPage.vue— DAG可视化/执行控制/模板选择/日志查看
Routes
/workflow-orchestrator— 工作流编排器
六、配置选项
javascript
workflowOrchestrator: {
enabled: false,
maxConcurrentWorkflows: 5,
nodeTimeoutMs: 300000,
checkpointIntervalMs: 60000,
approvalTimeoutMs: 3600000,
maxRollbackDepth: 10,
},七、测试覆盖
测试文件: src/main/ai-engine/workflow/__tests__/workflow-engine.test.js测试数量: 23 tests
| 分类 | 数量 | 说明 |
|---|---|---|
| 初始化 | 2 | 引擎初始化、模板加载 |
| DAG创建 | 4 | 正常创建、环路检测拒绝、空节点、重复边 |
| 执行控制 | 5 | 顺序执行、并行执行、暂停恢复、超时处理、取消 |
| 审批门控 | 3 | 审批通过继续、审批拒绝终止、超时自动处理 |
| 断点调试 | 3 | 设置断点、条件断点触发、单步执行 |
| 回滚 | 3 | 检查点回滚、失败自动回滚、回滚深度限制 |
| 模板与导入导出 | 3 | 模板列表、导入验证、导出格式 |
八、Context Engineering
- step 5.2:
setWorkflowOrchestratorContext()— 注入工作流编排器上下文
