2025 年以来,"Agent"和"Workflow"成了 AI 圈最容易被混用的两个词:有人把任何能调用工具的 LLM 应用都叫 Agent,也有人把带分支判断的自动化脚本叫 Agentic Workflow。本文从控制流(control flow)的所有权这个第一性原理出发,把两者的技术边界讲清楚,再拆解 Agentic Workflow 这一混合形态的工程实现。
一、第一性原理:控制流归谁所有
任何自动化系统的核心问题都是:下一步做什么,由谁决定?
- Workflow:由开发者预先编写。 执行路径在运行前已经确定(或收敛到有限分支集合),LLM 在图中扮演"被调用的函数"——给它输入,它产出文本或结构化结果,路径走向由编排代码决定。
- Agent:由模型自己决定。 LLM 在一个循环里反复"思考 → 行动 → 观察",根据每一步的工具返回结果动态决定下一步调用什么、是否重试、何时终止。控制流是运行时涌现的。
Anthropic 在《Building Effective Agents》中给出的定义与此一致:workflow 是"通过预定义代码路径编排 LLM",agent 是"LLM 动态主导自身过程与工具使用、掌控任务完成方式"。
一个类比:Workflow 是铁路,Agent 是自动驾驶。铁路快、稳、准时,但去不了轨道之外的地方;自动驾驶哪里都能去,但可能堵车、走错路,甚至到不了终点。
二、Workflow 的技术原理:DAG 与状态机
主流 workflow 引擎(LangGraph、n8n、Temporal 以及各家平台的画布式编排)在实现上大同小异:
- 图结构:任务被建模为 DAG(有向无环图)或状态机,节点是处理步骤,边是数据与控制依赖;
- 节点类型抽象:除普通 LLM 调用节点外,成熟引擎会抽象出少数几种控制原语——路由(由 LLM 判断走哪个分支)、并行分发/汇合、循环(带退出条件)、人工审批;
- 上下文传递:节点之间通过显式的数据契约通信,下游节点只收到被引用的上游输出——这既是上下文工程的成本优化,也是信息边界的控制手段;
- 确定性执行:引擎按拓扑序调度,每一步可重试、可缓存、可回放,失败能精确定位到某个节点。
关键洞察:在纯 workflow 里,LLM 永远不掌握路径走向的最终决定权。即使是"LLM 路由"节点,模型的判断也被约束在开发者预先定义的分支集合之内——它只是替你做选择题,而不是自己出题。
三、Agent 的技术原理:Agent Loop
Agent 没有预设的图。它的核心是同一个循环(以 ReAct 范式为代表):
while not done:
thought = LLM(上下文 + 工具列表 + 观察结果) # 推理:决定下一步
action = parse(thought) # 解析出工具调用与参数
observation = execute(action) # 执行工具
history.append(observation) # 结果写回上下文
支撑这个循环的四个技术组件:
- 工具调用协议:模型输出结构化的工具调用,运行时校验 schema 后执行,并把结果注入上下文;
- 上下文管理:窗口有限,需要历史裁剪、摘要压缩、记忆外置(检索式记忆按需召回);
- 终止控制:模型自主判断任务完成,同时配最大迭代次数兜底防死循环;
- 错误恢复:工具报错信息回灌上下文,让模型自行调整策略而非整体失败。
这带来了 workflow 不具备的能力:处理路径不可预知的开放任务——"调研某主题并写报告",事先无法枚举要搜哪些网页、读哪些文档。但代价同样明确:行为不可复现、成本不可预估、失败难以定位——同一个 prompt 两次运行可能走出完全不同的路径。
四、Agentic Workflow:给自主性套上骨架
生产环境的主流答案不是二选一,而是混合:用 workflow 的图做骨架,在节点内部运行 agent 循环。这就是 Agentic Workflow,其技术原理可以拆成三层:
- 宏观层(图编排):整棵执行树是确定性的。哪些步骤串行、哪些并行、哪里需要人审批,由编排引擎控制;
- 微观层(节点内自主):每个 agent 节点内部是一个完整的 ReAct 循环,可以多轮调用工具、自我纠错,直到产出该节点承诺的结果;
- 边界层(约束与契约):节点之间用数据契约通信;循环节点由 LLM 判断退出条件但有最大迭代硬上限;人工审批节点强制关键决策回流给人类。
一个典型形态:planner 节点产出结构化任务列表 → parallel fork 将列表展开为 N 个并行 agent worker → join 汇合 → reviewer 节点判断质量,不达标回炉。宏观是图,微观是 agent,边界靠契约与审批。
编排的五种经典模式
Anthropic 把这套混合形态里可复用的编排结构归纳为五种模式——它们的公共底座是增强型 LLM(augmented LLM):一个接上了检索、工具、记忆的模型调用。五种模式的共同特征是:LLM 负责每一步的"智力判断",代码负责整体的流程边界。
- 提示链:把大任务拆成固定的串行步骤,每一步可接程序化校验门,不通过就终止或重试——用牺牲时延换取更高的准确率与可调试性;
- 路由:先用 LLM 做一次分类,再把请求分发到专化的下游分支——把"一个巨型 prompt 什么都干"拆解为结构清晰的多分支,分支集合仍由代码定义;
- 并行化:多个 LLM 调用同时执行,可以是分段处理(各管一段再合成)或多数投票(同一任务跑多次取共识),用吞吐与一致性对抗单点幻觉;
- 编排者-执行者:一个 LLM 动态拆解任务、规划子任务,交给多个 worker 执行并综合结果——子任务的内容由模型现场决定,但"谁在何时启动"仍由编排层控制,这是最接近 agentic 的 workflow;
- 评审-优化:生成者与评审者循环迭代,评审意见可由 LLM 给出,但循环的边界(最大轮数、终止条件)由代码硬性约束。
注意模式 4 和 5 的微妙之处:任务分配和改进方向已经由模型动态生成,这已经是部分的控制流让渡——但它们仍被约束在"一个拆解者 + 若干执行者"、"生成 + 评审"的固定拓扑内。真正的 agent 则连拓扑都是模型自己长出来的。这就是 workflow 与 agent 之间一条渐变的谱系,而非非黑即白的二分。
这样做的核心收益是:自主性被限制在节点内部,爆炸半径可控。单个节点的 agent 跑偏,只影响该节点输出,可以被下游的契约校验或质量审查节点拦截,而不是污染整条链路。
五、工程权衡:怎么选
| 维度 | Workflow | Agent | Agentic Workflow |
|---|---|---|---|
| 路径可预知性 | 完全预知 | 运行时涌现 | 宏观预知 + 微观涌现 |
| 可复现/可测试 | 高 | 低 | 中(节点级可测) |
| 成本可控性 | 可预估 | 不可预估 | 半可预估 |
| 故障定位 | 精确到节点 | 困难 | 精确到节点 |
| 适合任务 | 结构固定的高频流程 | 开放探索、路径未知 | 大多数生产任务 |
经验法则:
- 任务结构 100% 已知、追求 SLA:纯 workflow;
- 探索性、一次性的任务:裸 agent 足够;
- 需要规模化运行的生产系统:Agentic Workflow——把 agent 的灵活性装进 workflow 的可靠性容器里。
结语
Agent 与 workflow 的区别,不在于用了多少工具、调了几次模型,而在于控制流的所有权:workflow 的路径是开发者的意志,agent 的路径是模型的判断。Agentic Workflow 的本质,是把"模型的判断"关进"开发者的意志"划定的图里——用确定性的架构承载不确定性的智能。这大概是当前 LLM 应用工程最重要的一条设计原则。