流程编排(Workflow Orchestration)
流程编排是把多个固定步骤用确定性方式串起来自动执行——每一步干什么、谁调谁、数据怎么流,都是提前设计好的。它和”让 Agent 自主决定下一步”是两条互补的思路:编排要的是可控、可复现,Agent 要的是自主、灵活。
一句话类比:流程编排像流水线 / 菜谱——第 1 步洗菜、第 2 步切、第 3 步炒,顺序固定、谁都不能乱。Agent 则像临场发挥的厨师,看冰箱有啥、客人想吃啥再决定步骤。简单重复、容不得出错的事用流水线,开放探索的事交给厨师。
关联:Workflow vs Agent 的取舍是核心决策,见
agent.md;具体平台(Coze/Dify/n8n)落地在agent_dev.md;单步内部的”想→做→看”循环见loop_engineering.md。
1. 为什么需要它:不是所有事都该交给 Agent
很多业务是固定 SOP:拉数据 → 清洗 → 调模型 → 落库 → 通知。这类任务:
- 步骤已知、不需要模型临时决策;
- 要求稳定、可审计、低成本(每步都跑 LLM 太贵太慢);
- 出错代价高,要能重试、回滚、人工介入。
这时用确定性编排比”让 LLM 自己决定走哪步”更稳更省。Agent 适用于步骤开放、需要推理判断的场景。
2. 核心概念
| 概念 | 含义 |
|---|---|
| DAG(有向无环图) | 用节点(步骤)+有向边(依赖)描述流程,不能成环 |
| Node / Step | 单个执行单元:调 API、跑脚本、调 LLM、人工审批 |
| State(状态) | 流程在节点间传递的上下文数据(输入输出、变量) |
| Branch / 条件 | 按上一步结果走不同分支(if/else) |
| Human-in-the-loop | 关键节点暂停,等人确认再继续 |
| Retry / 容错 | 某步失败自动重试、超时熔断、补偿回滚 |
┌─ 条件A ─▶ 步骤3 ─┐
起点 ─▶ 步骤1 ─▶ 步骤2 ─┤ └─▶ 汇总 ─▶ 通知/落库
└─ 条件B ─▶ 步骤4 ─┘
(DAG:步骤间靠依赖关系连成图,无环)
3. 编排 vs Agent:怎么选
| 维度 | 流程编排 (Workflow) | Agent(自主) |
|---|---|---|
| 步骤是否已知 | 固定、可预期 | 开放、运行时决定 |
| 可控性 | 高(每步确定、可审计) | 低(路径不确定) |
| 成本/延迟 | 低(不必每步跑 LLM) | 高(多轮推理+工具) |
| 适合 | SOP、批处理、可复现任务 | 探索、开放问答、需临场判断 |
| 典型工具 | n8n、Dify、Coze、Airflow、LangGraph(编译态) | 各类 Agent 框架 |
经验法则:能写清楚步骤的,就用编排;只有”看情况”的部分才交给 LLM/Agent。 常见做法是”编排包 Agent”——大流程固定,其中某一步调用一个 Agent 做灵活子任务。
4. 基本用法(两种形态)
# 形态 A:代码/DAG 框架直接编排(确定性,强可控)
# 以 LangGraph 编译成固定图为例(伪代码)
from langgraph.graph import StateGraph
g = StateGraph(State)
g.add_node("fetch", fetch_data) # 拉数据
g.add_node("clean", clean_data) # 清洗
g.add_node("llm", summarize) # 调模型
g.add_edge("fetch", "clean")
g.add_edge("clean", "llm")
g.add_conditional_edges("llm", route) # 按结果走不同后续
app = g.compile() # 编译成可执行的固定流程
app.invoke({"query": "..."})# 形态 B:低代码平台(Dify/Coze/n8n)拖拽节点连线
# 节点:开始 → HTTP请求(拉数据) → 代码(清洗) → LLM(总结) → 邮件(通知)
# 平台负责调度、重试、变量传递、日志——你只画流程图平台型(Coze/Dify/n8n)适合快速搭业务流、非工程师也能改;代码型(LangGraph/Airflow)适合需要复杂分支、自定义算子和强工程可控性的场景。
5. 典型工作流
- 把业务拆成明确步骤,画成 DAG,标出每一步的输入/输出与依赖。
- 能不用 LLM 的步骤(拉数、清洗、格式转换)用普通代码节点,省成本。
- 仅在需要理解/生成的步骤挂 LLM 或 Agent 节点。
- 加重试、超时、条件分支;关键节点加人工确认(human-in-the-loop)。
- 接日志与监控,确保可复现、可排查。
6. 常见误区
- ❌ “啥都上 Agent” → 固定 SOP 用 Agent 既贵又不稳定;先问”步骤能不能写死”,能就编排。
- ❌ “编排和 Agent 二选一” → 多数好系统是编排包 Agent:大流程固定,灵活子任务交给 Agent。
- ❌ “图里可以有环” → 编排用 DAG,不能有环(会死循环);需要循环用”条件回到某步 + 终止条件”显式控制。
- ❌ “每步都调一次大模型” → 浪费且慢;纯确定逻辑用代码节点,LLM 只在必要时出现。
- ❌ “不需要人工把关” → 涉及写库/发消息/花钱的步骤,务必留 human-in-the-loop 或强校验,避免自动出错难挽回。
7. 延伸阅读 / 关联概念
- 搭建 Agent 工作流(实操) — 从需求到上线的六步施工法 + 完整案例;见
agent_workflow_build.md - Agent(workflow vs agent) — 两者取舍的总纲;见
agent.md - AI Agent 开发 — Coze/Dify/n8n 等平台落地;见
agent_dev.md - Loop Engineering — 单步内部的”想→做→看”循环;见
loop_engineering.md - Agent Harness — 承载/驱动 Agent 运行时的外壳;见
agent_harness.md - 上下文工程 — 编排结果如何组装进上下文交给 LLM;见
context_engineering.md