简介:Workflow 与 Agent 是当前大模型应用落地中最容易被混用的两类编排架构。本文从控制权归属、执行确定性、架构扩展方式、状态管理、调试与评测、成本结构等维度系统对比二者的核心差异,并进一步分析模型能力与工程框架质量对成功率的影响,最后给出典型场景下的选型建议与迁移注意事项,帮助技术团队在智能体落地过程中做出更稳妥的架构决策。
在大模型应用工程化的过程中,团队几乎都会遇到同一个分叉路口:任务的执行路径到底应该由代码写死,还是交给模型在运行时自己决定?这正是本文要对比的两类编排架构——Workflow(工作流编排)与 Agent(智能体)。
这两类架构经常被混为一谈。现实中不少标着“智能体”的产品,深入看其执行路径其实是预先编排好的,本质上更接近 Workflow。混淆两类架构的直接后果是:该要确定性的场景引入了不确定性,该要灵活性的场景又被流程图锁死,最终在稳定性、成本和调试效率上付出额外代价。
除了这条主线,本文还会展开两组容易被忽视的对比:模型能力提升与工程框架(Harness)质量对成功率的贡献对比,以及Agent 自身缺陷与评测系统缺陷在排查优先级上的对比。这两组对比直接决定了工程资源应该投向哪里。
Workflow(工作流编排):执行路径由代码预先写死的系统。开发者预先定义好步骤、分支和流转条件,大模型在其中通常只承担某一个或几个节点的处理工作(如文本抽取、分类、改写),整体控制权在代码手中。
Agent(智能体):由大模型动态决定下一步行动的系统。模型在每一轮循环中自主判断是调用工具、继续推理还是返回最终结果,控制权在模型手中。
业界主流技术社区的通行区分方式也正是基于这一点:核心区别在于控制权掌握在谁手里。需要强调的是,两者本身并无高下之分,真正重要的是为具体任务找到更合适的解决方案。
在展开差异之前,先明确它们的共同点,这些共性决定了无论选择哪条路线,都绕不开同一批基础建设:
这是两类架构一切差异的源头。Workflow 中,程序走到哪个分支、调用哪个模型节点,在代码评审阶段就基本确定;Agent 中,同样的输入可能产生完全不同的工具调用序列,执行路径在运行时才生成。
由此带来一个工程上的重要推论:Workflow 的失败是局部的、可重放的;Agent 的失败是全局的、路径相关的。Workflow 中某个节点出错,只需修复该节点;Agent 中一次错误的工具选择,可能让整个上下文被污染,后续每一步决策都建立在错误前提之上。
一个反直觉的事实是:Agent 的核心循环抽象后其实非常简单,通用示意如下(伪代码,模型与工具均为通用抽象):
const messages = [{ role: "user", content: userInput }];while (true) {const response = await llmClient.chat({model: "通用大语言模型",maxTokens: 8096,tools: toolDefinitions,messages,});if (response.stopReason === "tool_use") {// 并发执行模型选择的工具,并把结果回填进对话const toolResults = await Promise.all(response.content.filter((b) => b.type === "tool_use").map(async (b) => ({type: "tool_result",toolUseId: b.id,content: await executeTool(b.name, b.input),})));messages.push({ role: "assistant", content: response.content });messages.push({ role: "user", content: toolResults });} else {return response.text; // 模型返回纯文本,循环结束}}
对应的控制流是“感知 → 决策 → 行动 → 反馈”四个阶段的不断循环,直到模型返回纯文本为止。观察过不少 Agent 实现和官方 SDK 后会发现,循环本身相当稳定:从最小实现一路扩展到支持子 Agent、上下文压缩、能力模块动态加载,主循环基本没有变化,新能力通常是叠加在循环外部,而不是改动循环内部。
新能力接入基本只有三种方式:
一条重要的工程纪律是:不应该让循环体本身膨胀成一个巨大的状态机。模型负责推理,外部系统负责状态和边界,一旦这个分工确定下来,核心循环逻辑就很少需要频繁调整。
相比之下,Workflow 的复杂度集中在流程图/状态机本身。扩展一个 Workflow 通常意味着增加节点、修改分支条件、重新部署,扩展是“改代码”,而 Agent 的扩展更多是“改配置和提示”。
这是实践中的重灾区,也是两类架构调试思路差别最大的地方:
| 对比维度 | Workflow(工作流编排) | Agent(智能体) |
|---|---|---|
| 控制权归属 | 代码预先写死 | 模型动态决定 |
| 执行路径 | 确定性,可枚举 | 概率性,运行时生成 |
| 核心复杂度 | 流程图/状态机本身 | 循环外部的能力叠加 |
| 扩展方式 | 增加节点、改代码、重新部署 | 扩工具集、调系统提示、状态外化 |
| 状态管理 | 节点间显式变量传递 | 对话上下文 + 外化存储 + 记忆机制 |
| 可预测性 | 高,易写回归用例 | 低,需护栏与熔断 |
| 调试重点 | 节点输入输出与分支条件 | 工具定义准确性、评测系统健康度 |
| 成本可预估性 | 高(调用次数固定) | 低(循环次数不定) |
| 安全与审计 | 边界写死,审计容易 | 需权限最小化与全链路审计 |
| 适用任务 | 流程稳定、路径可枚举 | 开放式、需动态规划 |
把这条单独拿出来,是因为它直接影响技术团队的投入方向。工程效果大致由四个层次共同决定:模型能力、Harness 质量、验证测试严格度、评测体系健康度。
实践中反复出现的模式是:模型升级带来的成功率提升,常常低于把工具描述改准确、把验证测试补完整所带来的提升。因此更合理的资源排序是:先夯实工具定义与输出校验,再建设可信的评测基线,最后才考虑通过更换或升级模型获取边际收益。如果一直在 Agent 代码上反复调整而效果不明显,很可能问题根本不在模型侧,而在评测信号的可靠性上——评测系统本身的问题,往往比 Agent 的问题更隐蔽。
以下判断均为条件化建议,不存在普适最优解:
从 Workflow 演进到 Agent 时:
从 Agent 收敛到 Workflow 时:
两条路线共同的注意事项:
Agent 与 Workflow 的全部差异,可以收敛为一句话:控制权在代码手里,还是在模型手里。前者换来确定性与可审计性,后者换来灵活性与对开放任务的覆盖能力。选择的关键不是追随趋势,而是诚实地评估任务结构:路径可枚举就画流程,路径无法枚举就交给循环。同时记住两条实践规律:工程框架和验证测试的质量,往往比更贵的模型更能决定成功率;当反复调整却收效甚微时,先检查工具定义是否准确、评测系统是否可信——答案常常不在你以为的地方。