<!-- title: 多Agent编排三极架构：DAG·状态机·Actor选型 -->

# 多Agent编排三极架构：DAG·状态机·Actor选型

## 核心发现

2026年多Agent编排领域，三大计算模型已形成明确分野：**DAG有向无环图**、**有限状态机**、**Actor模型**。Zylos Research 4月的深度调研指出，"Agent如何协调工作"已成为生产AI系统中最具影响力的架构决策之一。Agent Swarm团队从DAG迁移到状态机后，卡死任务减少了70%以上。Temporal以50亿美元估值完成3亿美元D轮融资，标志着持久化执行层正从"可选优化"变为"必要基础设施"。本文基于最新生产实战数据，从六个维度拆解三大模型的核心引擎、架构原理和适用边界。

## 三大模型全景对比

| 维度 | DAG有向无环图 | 有限状态机（FSM） | Actor模型 |
|------|-------------|----------------|-----------|
| **核心思想** | 前置声明依赖图，调度器按拓扑排序执行 | 状态显式建模，转换条件驱动流转 | 每个Agent是独立Actor，通过异步消息通信 |
| **并行能力** | 天然优秀（无依赖节点自动并行） | 有限（状态串行推进） | 天然优秀（Actor并发互不阻塞） |
| **循环/迭代** | 不支持（需要递归DAG展开等Hack） | 原生支持（状态可回环） | 原生支持（消息循环） |
| **动态拓扑** | 差（编译时固定） | 中等（状态转换可条件分支） | 优秀（运行时动态注册Actor） |
| **错误恢复** | 基础（节点级重试） | 优秀（状态级回滚+补偿事务） | 良好（监督树级联恢复） |
| **可观测性** | 优秀（DAG UI可视化节点状态） | 中等（需自定义状态追踪） | 复杂（分布式消息追踪困难） |
| **上手难度** | 低-中 | 中 | 中-高 |
| **代表引擎** | Airflow 3.0、Dagster、Prefect ControlFlow | Temporal、LangGraph、AWS Step Functions | Restate、Ray、ElizaOS |
| **最佳场景** | ETL流水线、数据处理、批量Agent任务 | 审批流、退款补偿、人机协作长流程 | 高并发分布式系统、Agent集群、实时事件流 |
| **生产成熟度** | ★★★★★（Apache Airflow 8万+组织） | ★★★★☆（Temporal被Stripe/Snowflake使用） | ★★★☆☆（Restate 2025年GA，生态成长中） |

## 深度拆解一：DAG模型——确定性流水线的王者

### 架构原理

DAG模型将Agent工作流建模为有向无环图：节点是Agent或任务，边是数据依赖。调度器按拓扑排序执行，无依赖的节点自动并行。核心假设是**执行计划可前置确定**，所有失败模式已知且可分类为"可重试"或"终止"。

这种模型在数据工程领域已有十年以上生产验证。Apache Airflow以每月3000万次下载、80000+组织使用的体量成为事实标准。2025年GA的Airflow 3.0引入了Task Isolation、Event-Driven Workflows和现代化UI，30%用户已将其用于MLOps，10%用于生成式AI应用。

### 代码示例：Dagster资产驱动的Agent流水线

Dagster采用"资产优先"视角——核心制品是软件定义资产（数据集、模型检查点、报告），而非任务。DAG表达的是资产血缘，不仅仅是执行顺序。

```python
from dagster import asset, AssetIn, materialize

@asset
def raw_research(context) -> str:
    """研究Agent抓取并聚合信息"""
    agent = ResearchAgent(model="claude-opus-4-5")
    return agent.run("2026量子计算最新进展")

@asset(ins={"research": AssetIn("raw_research")})
def fact_checked(research: str) -> list[dict]:
    """事实核查Agent验证声明"""
    return FactCheckAgent().verify(research)

@asset(ins={"claims": AssetIn("fact_checked")})
def final_report(claims: list[dict]) -> str:
    """写作Agent生成最终报告"""
    return WriterAgent().draft(claims)

result = materialize([raw_research, fact_checked, final_report])
```

Dagster自动追踪资产过期状态，启用增量重算，并记录资产元数据（行数、质量分）供后续审计。

### 生产陷阱

Agent Swarm团队的实战教训极具代表性：**Agent不是函数**。DAG假设节点失败是"抛异常→可重试或终止"，但LLM Agent的失败模式远比这复杂——语义漂移（输出通过Schema验证但意义偏移）、协商死锁（Agent A等B，B等A）、静默退化（置信度下降但未触发失败阈值）。团队在DAG上线的第二个月就不得不建了一个凌晨2点重启卡死工作流的Cron Job。

### 变现评估

DAG模型最适合包装为"数据工程+AI"训练营。Prefect ControlFlow的Python装饰器API极低上手门槛，Dagster的资产模型对ML工程师有天然吸引力。课程可从"传统数据流水线"平滑过渡到"Agent驱动的智能流水线"。

## 深度拆解二：状态机模型——生产可靠性的守护者

### 架构原理

状态机将Agent编排建模为有限状态机，每个状态对应一个Agent阶段，状态转换由条件事件驱动。核心优势是**对失败模式的显式建模**——不是"出错了重试"，而是"系统知道自己处于困惑状态并需要帮助"。

Temporal是这一模型的旗手。2026年2月，Temporal以50亿美元估值完成3亿美元D轮融资（a16z领投），年收入同比增长380%，累计执行9.1万亿次Action。OpenAI、Netflix、JPMorgan Chase、Snap均在其客户名单上。Temporal CEO Samar Abbas明确表示："Agentic AI不是因为模型不够好而失败——而是因为围绕模型的系统无法处理真实世界的执行。"

### Agent Swarm的实战：从DAG到状态机

Agent Swarm团队重写了核心编排层，为每个Agent定义了7个显式状态：

```typescript
// 每个Agent的显式状态定义
type AgentState =
  | { type: 'idle'; context: AgentContext }
  | { type: 'preparing'; context: AgentContext; intent: TaskIntent }
  | { type: 'executing'; context: AgentContext; startTime: ISO8601 }
  | { type: 'validating'; context: AgentContext; candidate: CandidateOutput }
  | { type: 'negotiating'; context: AgentContext; 
      dispute: DisputeRecord; partners: AgentId[] }
  | { type: 'committing'; context: AgentContext; output: CommittedOutput }
  | { type: 'failed'; context: AgentContext; 
      reason: FailureReason; retryable: boolean };

// 状态转换守卫
const validTransitions = {
  idle: ['preparing'],
  preparing: ['executing', 'failed'],
  executing: ['validating', 'failed'],
  validating: ['committing', 'negotiating', 'failed'],
  negotiating: ['executing', 'committing', 'failed'],
  committing: ['idle'],
  failed: ['preparing', 'idle'],
};
```

关键设计是`negotiating`状态——它是一等公民，不是错误处理器。当验证Agent拒绝输出时，系统捕获拒绝原因：如果是Schema错误，重试；如果是语义分歧，进入协商。这个改动**消除了70%以上的卡死任务**。

### Temporal的补偿事务模式

```typescript
// Temporal：多步骤补偿事务
export async function bookingWorkflow(
  request: BookingRequest
): Promise<BookingResult> {
  const flight = await activities.bookFlight(request);
  try {
    const hotel = await activities.bookHotel(request);
    const car = await activities.bookCar(request);
    return { flight, hotel, car };
  } catch (err) {
    // 补偿：退款航班
    await activities.refundFlight(flight.id);
    throw err;
  }
}
```

Temporal保证工作流可运行数年——同引擎驱动TypeScript、Python、Go、Java、.NET、PHP和Ruby Worker。确定性保证意味着今天部署的工作流能正确重放两年前写入的历史记录。

### 变现评估

状态机模型是"企业级AI Agent"课程的核心卖点。退款补偿、人机审批、长周期Saga——这些都是企业客户付费的痛点。Temporal的学习曲线较陡，但掌握后的护城河极高。

## 深度拆解三：Actor模型——高并发分布式Agent的天然形态

### 架构原理

Actor模型将每个Agent建模为独立Actor——拥有私有状态和邮箱，通过异步消息传递通信，无共享状态。核心哲学是**位置透明+消息驱动**：Actor可以在同一进程或不同机器上，发送者无需知道接收者位置。

Restate是这一模型在Agent领域的新星。它以单个Rust二进制文件提供持久化执行，采用反向代理模型而非Temporal的专用集群架构。Restate的核心原语是**Virtual Object**——一种有状态的、单并发执行的持久化实体，天然适合建模有状态的Agent会话。

### Restate代码示例：持久化Agent会话

```typescript
import { VirtualObject } from "@restatedev/restate-sdk";

const agentSession = VirtualObject({
  name: "agentSession",
  handlers: {
    // 单并发保证：同一sessionId不会被并发调用
    chat: async (ctx, request: { sessionId: string; message: string }) => {
      // 从内置KV存储恢复上下文
      const history = ctx.get<string[]>("history") || [];
      history.push({ role: "user", content: request.message });
      
      // LLM调用持久化——崩溃后从断点恢复
      const response = await ctx.run("llm-call", () =>
        callLLM({ messages: history })
      );
      
      history.push({ role: "assistant", content: response });
      ctx.set("history", history);
      return response;
    },
    
    // 人工审批：暂停等待外部响应，跨重启保持
    approve: async (ctx, approval: { approved: boolean }) => {
      // 恢复暂停的Agent并注入审批结果
    }
  }
});
```

Restate的AI生态集成快速扩张：已原生支持OpenAI Agents SDK、Google ADK、Pydantic AI、LangChain、Vercel AI SDK。一个显著区别是Restate不需要专用数据库团队——单二进制部署模型对中小团队友好得多。

### 与Temporal的架构差异

| 特性 | Temporal | Restate |
|------|---------|---------|
| 部署模型 | 专用集群 + gRPC Worker | 单Rust二进制 + 反向代理 |
| 状态存储 | 外部状态库（Cassandra/PostgreSQL） | 内置KV状态 |
| 并发控制 | Workflow级锁 | Virtual Object单并发保证 |
| 语言SDK | Go/Java/Python/TS/.NET/PHP/Ruby | TypeScript/Java/Kotlin/Python/Go/Rust |
| 运维复杂度 | 高（需要SRE团队） | 低（单进程部署） |
| 最佳场景 | 跨年超长工作流、多语言企业 | 中小规模Agent集群、TypeScript栈 |

### 变现评估

Actor模型适合"高并发Agent系统"课程。Restate的上手速度远快于Temporal，但生产验证案例仍较少。课程可以从"单Agent持久化"进阶到"多Actor协调"，适合已有Node.js/TypeScript基础的工程师。

## 深度拆解四：事件驱动混合——Inngest与Trigger.dev

### 架构原理

事件驱动模型中，Agent是反应式消费者——没有中央调度器推送工作，Agent订阅事件流并在相关事件到达时响应。工作流从事件拓扑中涌现，而非前置声明。这与DAG的"先设计再执行"哲学形成鲜明对比。

### Inngest：事件优先的持久化执行

Inngest最贴近JavaScript生态，将事件作为编排的基本单元。每个副作用块包装在`step.run()`中，Inngest持久化每步结果。函数崩溃后，下次尝试跳过已完成步骤、从失败点恢复。

```typescript
export const researchAgent = inngest.createFunction(
  { id: "research-agent" },
  { event: "agent/research.requested" },
  async ({ event, step }) => {
    // 每个step持久化，崩溃后只重试失败步骤
    const queries = await step.run("plan", () => 
      planQueries(event.data.topic)
    );
    const results = await step.run("search", () => 
      searchWeb(queries)
    );
    // AI原生原语：模型故障转移、Prompt缓存、Token计量
    const report = await step.ai.infer("summarize", {
      model: openai({ model: "gpt-5" }),
      body: { messages: buildSummaryPrompt(results) },
    });
    return report;
  }
);
```

Inngest的`step.ai.infer`是一大亮点——内置模型故障转移、Prompt缓存和Token计量。并发限制、节流、限流全部声明式配置，无需手写Redis队列。

### Trigger.dev：面向AI的后台任务平台

Trigger.dev v3围绕长运行任务重建平台。一个Task可以运行数小时、逐步骤重试、实时流式进度到前端。心智模型是"能扛住一切的后台Job"。

```typescript
export const codeReviewAgent = task({
  id: "code-review-agent",
  maxDuration: 3600,  // 1小时超时
  retry: { maxAttempts: 3 },
  run: async (payload: { prUrl: string }) => {
    const diff = await fetchDiff(payload.prUrl);
    const findings = await runStaticAnalysis(diff);
    const llmReview = await callClaude(diff, findings);
    await postReviewComment(payload.prUrl, llmReview);
    return { findings: findings.length, posted: true };
  },
});
```

Trigger.dev的独特价值在于**实时UI流式传输**——Agent进度可直接推送到Next.js前端，无需自建WebSocket层。自托管通过Docker Compose一行命令完成，对合规敏感行业至关重要。

### 选型对比

| 维度 | Inngest | Trigger.dev |
|------|---------|-------------|
| 编程模型 | 事件驱动Step函数 | 后台Job + Durable Task |
| AI原生度 | 高（step.ai.infer内置） | 中（需手动集成） |
| 实时UI | 需额外配置 | 原生支持 |
| 自托管 | 不支持 | Docker Compose一键部署 |
| 定价模型 | 按Step Run计费 | 按Task Run计费 |
| 最佳场景 | 事件触发的Agent流水线 | 面向用户的Agent UX产品 |

## 深度拆解五：Mastra——TypeScript原生的图融合引擎

### 架构原理

Mastra由Gatsby原班团队打造，定位TypeScript-first的Agent框架。它的核心创新是将**图执行（Graph）**和**工作流（Workflow）**统一到一个TypeScript原生API中。2026年发布的Mastra 1.0引入了Server Adapters、Agent Network和Observational Memory。

Mastra不是纯粹的DAG、状态机或Actor，而是一种融合模型：底层用有向图定义Agent间的数据流和条件分支，上层用TypeScript装饰器封装状态管理。这使得它在保持图执行确定性的同时，支持状态机式的条件回环。

```typescript
import { Agent, Workflow } from "@mastra/core";

const researcher = new Agent({
  name: "researcher",
  instructions: "研究给定主题的最新进展",
  model: openai("gpt-4o"),
});

const writer = new Agent({
  name: "writer",
  instructions: "基于研究结果撰写报告",
  model: openai("gpt-4o"),
});

const workflow = new Workflow({
  name: "research-pipeline",
  triggerSchema: z.object({ topic: z.string() }),
})
  .step(researcher)
  .step(writer, { dependsOn: [researcher] });

// 内置评估、记忆、可观测性
const result = await workflow.run({ topic: "量子计算2026" });
```

Mastra在GitHub上已积累22,000+ Star，成为TypeScript团队的首选Agent框架。它的优势在于不需要学习新语言或新范式——如果团队已经用TypeScript，Mastra是最自然的进阶路径。

## 深度拆解六：生产故障模式与模型选择决策框架

### 六大生产故障模式

根据Zylos Research的2026年多Agent系统可靠性分析，生产环境中最常见的六大故障模式及各模型的应对能力：

**1. 语义失败（Semantic Failure）**：LLM产生语法正确但逻辑错误的工具调用，执行层无法区分。

- DAG：无感知，错误沿DAG传播放大 → **差**
- 状态机：`validating`状态捕获，`negotiating`状态协商 → **优**
- Actor：需自定义消息协议 → **中**

**2. 级联上下文污染（Cascading Context Corruption）**：一个Agent写入错误状态，下游Agent继承并放大。

- DAG：无原生防护 → **差**
- 状态机：每个状态转换可设验证门控 → **良**
- Actor：Actor隔离状态天然防扩散 → **优**

**3. 循环委托死锁（Circular Delegation Deadlock）**：Agent A等B，B等A，无超时触发。

- DAG：无环保证天然免疫 → **优**
- 状态机：需显式超时状态 → **良**
- Actor：需监督树超时机制 → **良**

**4. 成本失控（Runaway Cost）**：Agent无预算约束，无限重试昂贵LLM调用。

- DAG：节点级重试策略 → **中**
- 状态机：状态转换可关联成本计数器 → **良**
- Actor：Actor级预算配额 → **良**

**5. 静默状态丢失（Silent State Loss）**：Agent进程崩溃，无检查点，全部重来。

- DAG：Airflow/Dagster有检查点 → **良**
- 状态机：Temporal/Restate原生持久化 → **优**
- Actor：Restate内置KV持久化 → **优**

**6. 长周期等待（Long-Running Waits）**：Agent发邮件等用户回复，需等待24小时。

- DAG：不原生支持 → **差**
- 状态机：Temporal/Restate的Pause & Resume → **优**
- Actor：Actor可挂起等待消息 → **良**

### 故障应对评分矩阵

| 故障模式 | DAG | 状态机 | Actor |
|---------|-----|-------|-------|
| 语义失败 | ★★ | ★★★★★ | ★★★ |
| 级联污染 | ★★ | ★★★★ | ★★★★★ |
| 循环死锁 | ★★★★★ | ★★★★ | ★★★★ |
| 成本失控 | ★★★ | ★★★★ | ★★★★ |
| 状态丢失 | ★★★★ | ★★★★★ | ★★★★★ |
| 长周期等待 | ★★ | ★★★★★ | ★★★★ |

## 架构全景图

```mermaid
graph TB
    subgraph "三大编排模型"
        direction TB
        DAG["DAG有向无环图<br/>━━━━━━━━<br/>Airflow 3.0 | Dagster<br/>Prefect ControlFlow"]
        FSM["有限状态机<br/>━━━━━━━━<br/>Temporal | LangGraph<br/>AWS Step Functions"]
        ACTOR["Actor模型<br/>━━━━━━━━<br/>Restate | Ray<br/>ElizaOS"]
    end

    subgraph "混合/融合引擎"
        direction TB
        HYBRID["事件驱动混合<br/>━━━━━━━━<br/>Inngest | Trigger.dev"]
        GRAPH["图融合<br/>━━━━━━━━<br/>Mastra | LangGraph"]
    end

    subgraph "持久化执行层"
        DUR["Durable Execution<br/>━━━━━━━━<br/>Temporal | Restate<br/>Inngest | Trigger.dev"]
    end

    subgraph "Agent能力层"
        direction LR
        LLM["LLM调用"]
        TOOL["工具调用"]
        MEM["记忆管理"]
        HUMAN["人机协作"]
    end

    DAG --> DUR
    FSM --> DUR
    ACTOR --> DUR
    HYBRID --> DUR
    GRAPH --> DUR

    DUR --> LLM
    DUR --> TOOL
    DUR --> MEM
    DUR --> HUMAN

    style DAG fill:#4A90D9,color:#fff
    style FSM fill:#E67E22,color:#fff
    style ACTOR fill:#27AE60,color:#fff
    style HYBRID fill:#8E44AD,color:#fff
    style GRAPH fill:#2C3E50,color:#fff
    style DUR fill:#C0392B,color:#fff
```

## 决策流程图

```mermaid
flowchart TD
    START[开始选型] --> Q1{工作流是否有循环/迭代?}
    Q1 -->|否| Q2{是否需要实时事件响应?}
    Q1 -->|是| Q3{是否需要超长周期等待?}

    Q2 -->|否| DAG_SEL[DAG模型<br/>Airflow / Dagster / Prefect]
    Q2 -->|是| Q4{Agent数量是否>10?}

    Q4 -->|否| EVENT_SEL[事件驱动<br/>Inngest / Trigger.dev]
    Q4 -->|是| ACTOR_SEL[Actor模型<br/>Restate / Ray]

    Q3 -->|是| FSM_SEL[状态机模型<br/>Temporal / Restate]
    Q3 -->|否| Q5{团队主语言?}

    Q5 -->|TypeScript| MASTRA_SEL[图融合<br/>Mastra / LangGraph]
    Q5 -->|Python| FSM_SEL2[状态机<br/>LangGraph / Temporal]
    Q5 -->|Go/Java| TEMPORAL_SEL[Temporal]

    style DAG_SEL fill:#4A90D9,color:#fff
    style FSM_SEL fill:#E67E22,color:#fff
    style ACTOR_SEL fill:#27AE60,color:#fff
    style EVENT_SEL fill:#8E44AD,color:#fff
    style MASTRA_SEL fill:#2C3E50,color:#fff
```

## 场景化推荐

| 场景 | 推荐模型 | 推荐引擎 | 理由 |
|------|---------|---------|------|
| 数据ETL + Agent增强 | DAG | Dagster / Prefect | 资产血缘追踪，增量重算 |
| 退款/订单补偿事务 | 状态机 | Temporal | Saga补偿，多年重放保证 |
| 人工审批长流程 | 状态机 | Restate / Temporal | Pause & Resume跨重启保持 |
| 高并发Agent集群 | Actor | Restate | Virtual Object单并发保证 |
| 面向用户的Agent产品 | 事件驱动 | Trigger.dev | 实时UI流式，自托管 |
| 事件触发的Agent流水线 | 事件驱动 | Inngest | step.ai原生，最快上线 |
| TypeScript团队首Agent | 图融合 | Mastra | 零学习曲线，22k Star生态 |
| 企业多语言混合栈 | 状态机 | Temporal | 7语言SDK，企业级SLA |

## 关键洞察

**洞察一：没有"最好的"模型，只有"最匹配的"模型。** DAG的确定性在数据处理场景无可替代，但面对语义歧义和协商需求时束手无策。状态机的显式状态建模是应对Agent不确定性的最佳武器，但状态爆炸风险在超大规模系统中不可忽视。Actor模型天然适合分布式Agent集群，但调试和可观测性的复杂度是真实代价。

**洞察二：持久化执行不再是"可选优化"，而是"必要基础设施"。** Temporal的50亿美元估值不是偶然——95%的企业AI试点未能进入生产（MIT数据），根本原因不是模型不够好，而是执行层扛不住真实世界的故障。无论是哪个编排模型，持久化执行能力都是不可妥协的基线要求。

**洞察三：混合模式正在成为主流。** 纯DAG、纯状态机、纯Actor在生产中越来越少——Temporal同时支持DAG和状态机，LangGraph融合图执行和状态转换，Mastra统一图和工作流，Restate用Actor模型实现状态机语义。"选择哪个模型"正在变成"如何组合多个模型"。

## 参考来源

1. [Agent Workflow Orchestration Patterns: DAG, Event-Driven, and Actor Models](https://zylos.ai/research/2026-04-14-agent-workflow-orchestration-patterns) — Zylos Research 2026年4月深度调研，三大编排模式全面对比
2. [Durable Execution for AI Agents: Inngest vs Trigger.dev vs Temporal in 2026](https://noqta.tn/en/blog/durable-execution-ai-agents-inngest-trigger-temporal-2026) — 三大持久化执行平台的生产对比与代码示例
3. [Why Durable Execution Powers Every AI Agent in 2026](https://ai2.work/blog/why-durable-execution-powers-every-ai-agent-in-2026) — AI2Work分析Temporal 50亿美元估值背后的产业信号
4. [Why We Ditched DAGs for State Machines in Agent Orchestration](https://www.agent-swarm.dev/blog/deep-dive-state-machine-orchestration) — Agent Swarm团队从DAG迁移到状态机的实战复盘
5. [Temporal + LangGraph: A Two-Layer Architecture for Multi-Agent Coordination](https://www.anup.io/temporal-langgraph-a-two-layer-architecture-for-multi-agent-coordination/) — 多Agent系统双层架构实践

---

**延伸阅读**：关注[Restate AI文档](https://docs.restate.dev/ai)获取Actor模型Agent编排最新模式，[Mastra GitHub](https://github.com/mastra-ai/mastra)跟踪TypeScript Agent框架演进，[Zylos Research](https://zylos.ai/en/research/2026-04-27-durable-execution-agent-runtimes)持续更新持久化执行引擎对比。

> [!tip] 51学通信知识星球
> **星主：爱卫生**（微信：gprshome201101）——公众号「51学通信」创办者，19 年通信行业运维与讲师经验，著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书（各大电商平台有售）。
> **星球定位**：深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域，主打运维岗位与信令分析。
> **当前规模**：5200 篇主题 / 990 个回答，198 元/年。
> **加入福利**：加入星球后请加爱卫生微信，拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题，另有群内分享。
> **AI 加持**：51学通信知识星球已作为 skill 接入 WorkBuddy，使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例，做总结、找文档和 PPT 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
