DAG 工作流
SubAgent DAG(有向无环图)工作流允许编排多个子智能体,自动拓扑排序、并行执行无依赖节点,并实时生成可视化工作流图。
功能概览
🔗 DAG 编排 — 定义 nodes + edges,支持三种拓扑模式
🔄 自动拓扑排序 — 入度为 0 的节点自动并行启动
🧠 结果自动注入 — 下游节点自动获取上游结果
⚡ 并行执行 — 无依赖节点同时运行
📊 实时可视化 — ECharts 力导向图实时展示节点状态
状态颜色编码
状态 |
颜色 |
说明 |
|---|---|---|
⏳ pending |
黄色 |
等待执行 |
🔵 running |
蓝色 |
正在执行中 |
✅ completed |
绿色 |
执行成功完成 |
❌ failed |
红色 |
执行失败 |
⏭️ skipped |
灰色 |
因上游失败自动跳过 |
支持的 DAG 拓扑模式
模式 |
说明 |
适用场景 |
|---|---|---|
Pipeline |
严格的串行链 |
A → B → C,依赖关系明确 |
Fan-out |
先并行再汇聚 |
多路探索 → 汇总分析 |
Hybrid |
分支 + 汇合点混合 |
复杂任务:分析 → 多路实现 → 审查汇总 |
执行流程
AI 分析任务 → 标记依赖 → 设计拓扑
调用 subagent_dag(nodes=[...], edges=[...])
SubAgentManager 验证 DAG(节点存在性 + 环检测)
入度为 0 的节点并行启动(独立 QThread + LLM + 工具)
节点完成后自动更新 ECharts 节点图状态
级联检查下游 → 入度为 0 时启动
全部完成 → 清理状态 → 汇总结果
示例
subagent_dag(
nodes=[
{"id": "plan", "agent": "plan", "description": "分析需求"},
{"id": "explore_1", "agent": "explore", "description": "研究模块A"},
{"id": "explore_2", "agent": "explore", "description": "研究模块B"},
{"id": "build", "agent": "build", "description": "编码实现"},
{"id": "review", "agent": "code-reviewer", "description": "审查"},
],
edges=[
{"from": "plan", "to": "explore_1"},
{"from": "plan", "to": "explore_2"},
{"from": "explore_1", "to": "build"},
{"from": "explore_2", "to": "build"},
{"from": "build", "to": "review"},
]
)