简介:本文围绕 Agent 与工作流两类架构,从控制权归属、循环结构、工具设计、记忆管理、评测追踪等维度系统对比。读者可了解二者核心差异、适用场景与迁移注意事项,并掌握以 Harness 和验证质量为中心的效果优化思路,为技术选型提供可落地的判断依据。
在构建智能化系统时,技术团队经常面临一个看似简单却影响深远的问题:下一步动作应该由代码提前写死,还是交给模型动态决定?这个问题的答案,直接决定了系统属于工作流(Workflow)还是 Agent,也决定了后续的扩展方式、调试路径和运维成本。本文围绕这两类架构展开系统对比,帮助开发者在不同场景下做出更合理的选型判断。
随着大模型能力被引入业务流程,实践中出现了大量标称“Agent”的系统。然而深入代码层会发现,其中不少系统的执行路径其实是预先编排好的:先调用哪个接口、再走哪个分支、异常时回退到哪一步,全部由代码控制。这类系统更接近工作流,而非真正意义上的 Agent。
混淆二者会带来一系列工程问题:用工作流的思路去调试 Agent,会误以为模型能力不足;用 Agent 的思路去设计本应稳定的流程,又会引入不必要的随机性。因此,先厘清两类架构的本质差异,再谈选型,是更稳妥的路径。
工作流架构:执行路径由代码预先定义。系统按照既定的步骤、分支和条件推进,模型可能在其中承担某个环节的推理任务,但“下一步做什么”由代码决定。典型特征是流程可预测、状态转移明确。
Agent 架构:执行路径由模型动态决定。系统提供一个循环,模型在每一轮中根据当前上下文选择调用工具或输出结果,循环持续到模型返回纯文本为止。典型特征是路径不确定、依赖模型推理能力。
需要强调的是,两者并无高下之分。控制权归属不同,决定了它们适合的任务类型不同。
尽管控制方式不同,两类架构在工程实现上有若干共通之处:
理解这些共性,有助于在迁移时复用已有基础设施。
这是最根本的差异。工作流的控制权在代码,Agent 的控制权在模型。前者适合规则明确、边界清晰的任务;后者适合路径难以穷举、需要动态判断的任务。
Agent 的核心循环抽象后非常精简,大致如下:
messages = [{ role: "user", content: userInput }]while true:response = model.create(messages, tools)if response.stop_reason == "tool_use":results = execute_tools(response.tool_calls)messages.append(assistant_message(response))messages.append(tool_results(results))else:return extract_text(response)
对应的控制流是:感知 → 决策 → 行动 → 反馈,不断循环直到模型返回纯文本。这一循环本身相当稳定,从最小实现扩展到支持子 Agent、上下文压缩和技能加载,主循环基本不变,新增能力通常叠加在循环外部。
工作流则没有这种统一循环,其控制流由代码中的条件、分支和状态机决定,结构因业务而异。
Agent 的新能力主要通过三种方式接入:扩展工具集与处理器、调整系统提示结构、把状态外化到文件或数据库。核心原则是:模型负责推理,外部系统负责状态和边界。一旦这个分工确定,循环体很少需要频繁改动。
工作流的扩展通常体现为新增流程节点、调整分支条件或引入新的编排层,改动往往集中在流程定义本身。
Agent 调试中,多数工具选择错误并非模型能力问题,而是工具描述不准确。因此调试 Agent 行为时,应优先检查工具定义,而非反复调整提示词或更换模型。
工作流调试则更偏向流程逻辑、状态转移和异常分支,问题通常更容易复现和定位。
两类架构都需要评测,但 Agent 的评测系统本身更容易出问题。评测集设计不当、判定标准模糊、追踪信息缺失,都会让优化方向偏离。很多时候,评测系统的问题比 Agent 本身更难发现,如果一直在 Agent 代码上反复调整,效果未必明显。
一个常被低估的判断是:更贵的模型带来的提升,很多时候没有想象中那么大。相比之下,Harness(运行框架)的设计和验证测试的质量,对成功率的影响更大。这意味着资源投入应更多放在工程基础设施上,而非单纯追求模型规格。
| 对比维度 | 工作流架构 | Agent 架构 |
|---|---|---|
| 控制权归属 | 代码预先定义 | 模型动态决定 |
| 执行路径 | 可预测、可枚举 | 不确定、依赖推理 |
| 核心结构 | 流程节点与分支 | 感知-决策-行动-反馈循环 |
| 扩展方式 | 新增节点、调整编排 | 扩展工具、调整提示、外化状态 |
| 调试重点 | 流程逻辑与异常分支 | 工具描述与上下文质量 |
| 评测难点 | 流程覆盖度 | 评测系统自身质量 |
| 适用任务 | 规则明确、边界清晰 | 路径难穷举、需动态判断 |
| 稳定性 | 较高 | 依赖 Harness 与验证质量 |
| 迁移成本 | 从 Agent 收缩到工作流较易 | 从工作流扩展为 Agent 需重构控制层 |
选型时应先回答三个问题:任务路径是否可枚举?失败成本是否可接受?团队是否具备调试不确定行为的能力?
如果路径可枚举且失败成本高,优先工作流;如果路径难以穷举且需要动态适应,考虑 Agent;如果两者兼有,采用混合架构,把不确定性限制在局部。
从工作流向 Agent 迁移,需要重构控制层,把流程决策交给模型,同时补齐工具描述、上下文管理和追踪能力。从 Agent 向工作流收缩,则要把模型决策替换为明确分支,注意保留原有的工具层和状态管理。
无论哪个方向,都应优先建设评测与追踪体系,确保改动可衡量。同时注意:不要让循环体本身膨胀成巨大的状态机,状态和边界应外化到外部系统。
Agent 与工作流的核心差异在于控制权归属。前者把决策交给模型,适合开放任务;后者把决策写在代码里,适合规则明确的流程。两者并无优劣,关键在于任务匹配。工程实践中,Harness 设计、工具描述质量和评测体系对最终效果的影响,往往大于模型规格本身。理解这一点,才能在选型和优化时把资源用在真正影响成功率的地方。