首页 > agent > 当前页面

Steps vs DAG 依赖图具体结构设计(Agent 执行模型底层结构)

2026-06-20 NEW个对象

📌 Steps vs DAG 依赖图具体结构设计(Agent 执行模型底层结构)

🎯 一、问题背景

在 Agent 系统中,Planner 输出的核心不是“文本步骤”,而是“结构化执行图”。 常见两种结构:Steps(线性结构)与 DAG(依赖图结构)。

本质差异在于:Steps 描述执行顺序,DAG 描述任务依赖关系。

⚠️ 核心问题:如何用“数据结构”而不是“自然语言”表达 Agent 任务?

🚀 二、核心结构定义

1. Steps 结构(线性链表模型)

📌 JSON 结构定义:

```
{
  "type": "steps",
  "steps": [
    {
      "id": "step1",
      "name": "获取财报数据",
      "tool": "financial_api",
      "input": "company_name",
      "output": "report_data"
    },
    {
      "id": "step2",
      "name": "行业分析",
      "tool": "web_search",
      "input": "report_data",
      "output": "industry_insight"
    },
    {
      "id": "step3",
      "name": "生成报告",
      "tool": "llm",
      "input": "industry_insight",
      "output": "final_report"
    }
  ]
}
```

📌 执行关系:step1 → step2 → step3 → result

2. DAG 结构(图模型)

📌 JSON 结构定义:

```
{
  "type": "dag",
  "nodes": [
    {
      "id": "A",
      "name": "获取财报",
      "tool": "financial_api"
    },
    {
      "id": "B",
      "name": "行业数据",
      "tool": "web_search"
    },
    {
      "id": "C",
      "name": "综合分析",
      "tool": "llm"
    }
  ],
  "edges": [
    {
      "from": "A",
      "to": "C"
    },
    {
      "from": "B",
      "to": "C"
    }
  ]
}
```

📌 执行关系:A || B(并行) → C(汇总)

📊 三、结构对比(本质模型差异)

Steps

  • 线性数组结构(List<Step>)
  • 隐式依赖(i → i+1)
  • 执行顺序固定
  • 不支持并行

DAG

  • 图结构(Node + Edge)
  • 显式依赖(A → C)
  • 支持并行执行(A || B)
  • 支持拓扑排序调度
💡 核心差异:Steps = 顺序控制流;DAG = 依赖关系图

⚙️ 四、执行调度结构

1. Steps 调度模型

Step1 → Step2 → Step3 → Step4 → Result

执行器采用 FIFO 顺序执行模型,无状态分支能力。

2. DAG 调度模型

入度=0节点 → 并行执行 → 状态回写 → 解锁下游节点

核心算法:拓扑排序 + Ready Queue 调度 + 并行 Worker Pool。

🔄 五、Spring Cloud Alibaba 落地结构

Planner Service → Nacos注册中心 → RocketMQ任务队列 → Executor Worker集群 → Sentinel限流 → Feign工具调用

🚀 推荐架构拆分: Planner(编排服务) + Executor(执行服务) + Tool Service(外部能力层)

🧪 六、实际结构案例

Steps 示例

```
Step1: 获取公司信息
Step2: 获取财务数据
Step3: 分析数据
Step4: 输出报告
```

DAG 示例

```
A: 财务数据获取
B: 行业数据获取
C: 用户画像分析
D: 综合报告生成(依赖A+B+C)
```

⚖️ 七、优缺点结构化对比

Steps

  • 结构简单(List模型)
  • 执行稳定
  • 扩展能力弱
  • 无并行能力

DAG

  • 结构复杂(Graph模型)
  • 支持并行执行
  • 支持动态调度
  • 实现成本高

💡 八、面试常见追问

  • DAG 如何做拓扑排序调度?
  • Steps 为什么无法并行?
  • Planner 如何生成 edges?
  • 如何保证 DAG 无环?
  • Executor 如何做并行 Worker 调度?

🎯 九、总结

Steps 是“线性执行结构(List)”,DAG 是“依赖关系结构(Graph)”。

在 Agent 系统设计中,Steps 偏流程控制,DAG 偏调度系统,是从“流程思维”升级到“系统思维”的关键分水岭。

相关文章

NEW个对象 NEW个对象
JAVA是世界上最好的语言

推荐文章