简介:本文系统对比AI编程中Workflow(预定义编排)与Agent(动态自主决策)两种模式的差异:从控制流归属、确定性、调试观测、成本延迟、安全边界等维度展开分析,并延伸解读Prompt Engineering向Context Engineering演进的原因与落地方式。帮助读者按任务确定性与复杂度选择合适模式,掌握迁移过程中的规格约束与护栏建设要点。
早期的AI辅助编程,本质上是“问一句、答一段”:开发者写好提示词,模型返回一段代码,正确与否由人来判断。随着模型能力与工具调用机制的成熟,软件组织开始把“一个目标”而不是“一个问题”交给模型:定位缺陷、完成重构、跑通测试、提交评审。要让模型真正围绕目标持续行动,必须回答两个问题:
业界一种有影响力的划分方式是:Workflow指LLM与工具被预定义代码路径编排的系统;Agent则指由LLM动态决定自身流程和工具使用的系统。这一区分揭示了两者最本质的差异,控制权在代码还是在模型。
与此同时,资产形态也在变化:未来软件组织最重要的资产可能不再是某一版代码本身,而是让任何一代模型都能安全重写、迁移、验证和接管系统的规格约束体系。这一判断会直接影响两种模式的选择与迁移策略,后文展开。
Workflow模式下,LLM和工具被预先写好的代码路径串联起来:先做什么、后做什么、失败走哪个分支、何时终止,全部由开发者在代码中显式设计。模型只负责路径中特定的“智能环节”(理解需求、生成代码、判断结果),不决定整体流程。
Agent模式下,模型拿到的是一个目标而非一份流程图。它可以围绕目标自行调用工具:读文件、搜索代码、修改文件、运行测试、查看日志、调用浏览器查资料、提交合并请求、复盘失败结果,并基于反馈继续行动。控制流在运行时由模型生成,开发者只提供工具集、约束和目标。
Prompt Engineering关注单次指令的措辞与结构优化;Context Engineering关注系统性管理模型在整个任务周期内可见的全部信息,系统约束、检索到的代码片段、工具返回结果、历史记忆、验收标准等。前者是“写好一句话”,后者是“设计一个信息供给系统”。这一演进是两种模式落地的共同基础。
Workflow的控制流是静态资产,写在哪一行代码里一目了然,代码评审即可完成流程审计;Agent的控制流在运行时由模型生成,无法预先穷举,只能依靠约束声明、工具权限和观测体系来治理。这决定了两者后续所有差异。
Workflow相同输入基本走相同路径,可以做回归测试、可以预估行为边界;Agent的执行路径随输入和中间结果动态变化,可复现性弱,验证方式需要从“路径验收”转向“结果验收”——以测试是否通过、目标是否达成作为判据。
Workflow出错时可以定位到具体节点,修一个提示词或一个分支即可;Agent出错时需要回放完整轨迹:每一步的决策依据、工具调用参数、返回结果。没有完善的轨迹记录,Agent的问题几乎无法复盘。
Workflow的步骤数量固定,耗时和资源消耗可预估、可预算;Agent的循环次数由模型决定,可能反复试错,token消耗和执行时长波动较大,必须设置步数与预算上限,超限后降级或转人工。
Workflow中错误被代码路径隔离,失败即终止或走人工兜底;Agent中一步错误的搜索结论可能引出一连串错误的修改,错误会被后续步骤放大,因此需要检查点、可回滚的写操作和阶段性验证。
Workflow可以按节点精确授权:这个节点只读、那个节点只写指定目录;Agent需要整体性的沙箱执行环境、最小权限工具集、危险操作人工审批和全程审计记录,否则模型的自主决策可能带来不可控的副作用。
Workflow前期流程设计成本高,但运行稳定、维护路径清晰;Agent前期搭建快(给目标、给工具即可跑起来),但长期的调优成本持续存在,工具描述、约束规则、上下文组织都需要随任务反馈不断迭代。
Workflow遇到预设路径之外的情形即失效,能力上限等于设计者的预见范围;Agent能处理开放式问题,探索上限更高,但可靠性方差也更大。
| 维度 | Workflow(预定义编排) | Agent(动态自主决策) |
|---|---|---|
| 控制流归属 | 代码预定义 | 模型运行时决定 |
| 可复现性 | 高,路径可枚举 | 较低,路径随输入变化 |
| 调试方式 | 节点级定位 | 轨迹级复盘 |
| 延迟与成本 | 可预估、稳定 | 波动大,需预算上限 |
| 错误处理 | 路径内捕获、人工兜底 | 检查点、回滚、护栏约束 |
| 安全治理 | 按节点授权 | 沙箱+最小权限+审批+审计 |
| 适用任务 | 高频、路径固定 | 开放式、路径未知 |
| 能力上限 | 受限于预设路径 | 上限更高、方差更大 |
# Workflow:控制流写在代码里def fix_bug_workflow(issue):analysis = llm("定位问题:" + issue) # 步骤固定patch = apply_patch(analysis) # 步骤固定result = run_tests() # 步骤固定if not result.passed:return escalate_to_human(result) # 失败即人工接管return submit_for_review(patch)# Agent:控制流由模型动态决定def run_agent(goal):state = init(goal)while not is_done(state):action = llm_decide(state) # 模型自行决定下一步:# 读文件 / 搜索代码 / 修改文件 /# 运行测试 / 查看日志 / 复盘失败结果state = execute(action, state)return submit_for_review(state)
这段伪代码说明:Workflow是把智能“装进”固定流程的格子里;Agent则是流程本身由模型生成。两者不是对立关系,而是控制权分配程度上的连续谱。
两种模式对上下文工程的要求也不同:
落地时,可以借助平台化的通用能力降低建设成本。例如在百度智能云上,开发者可以结合其大模型服务、知识库检索类产品与智能体开发相关组件,把上下文工程沉淀为可维护的系统模块,而不是散落在各处的提示词字符串。
更适合Workflow的场景:固定的代码评审流水线、批量生成文档或注释、按明确规范执行的接口替换、持续集成流程中每一步都确定的自动修复。共同特征是路径可枚举、执行高频、对确定性和成本可控性敏感。
更适合Agent的场景:缺陷根因定位(需要跨文件搜索、查看日志、多轮假设验证)、大型重构前的调研评估、跨系统迁移方案的探索。共同特征是解决路径事先未知、需要多步探索并基于反馈修正方向。
生产系统中最常见的是混合模式:用Workflow骨架保证整体确定性,在关键开放步骤嵌入受控的Agent任务;或将Agent的敏感动作收敛为白名单工具,兼顾探索能力与可控性。
Workflow与Agent的分野在于控制权归属:前者由代码预定义,后者由模型动态决定。确定性、成本、调试方式、安全治理上的所有差异都由此派生。而从Prompt Engineering到Context Engineering的演进说明,竞争力正从“写好一句指令”转移到“设计信息与约束体系”。选型上没有绝对答案:路径可枚举、高频重复的任务适合Workflow;路径未知、需要探索的任务更能发挥Agent价值;生产系统往往采用混合模式。而无论选择哪条路线,测试、契约、验收标准构成的规格约束体系,才是软件组织在AI编程时代最值得长期投资的真正资产。