别再混着用了:agent 和 workflow 到底有什么区别?

前言

一个agent,一个workflow。很多朋友在群里一聊就是"我搞了个 agent",结果仔细一看,其实只是配了个固定流程;也有老哥把本该交给 workflow 的事,硬塞给 agent,最后调了半天,成本起飞,效果还不稳定

所以这篇文章,笔者就把 agent 和 workflow 的区别掰开揉碎了讲清楚

基本概念

workflow 是什么

说白了,它像流水线。第一步做什么,第二步做什么,什么条件走哪个分支,基本都是提前写死的。它不会自己思考,也不会临场发挥,只会按规则执行

比如一个很常见的自动化流程:

1)收到 Git 提交 -> 2)执行单元测试 -> 3)构建镜像 -> 4)推送镜像仓库 -> 5)部署到测试环境 -> 6)发送部署通知

这个流程里,每一步都是明确的。前一步成功,才继续下一步;中间某一步失败,就按预设逻辑告警或者终止。整个过程可预测、可审计、可复现

Agent 是什么

Agent 更像一个带目标的执行者。你给它的不是一串固定步骤,而是一个目标,它自己去拆任务、做判断、选工具、尝试执行,必要时还会根据结果动态调整

比如你跟一个 Agent 说:

帮笔者分析昨晚线上接口报警的原因,整理成一份简短结论

1)先去读告警信息 -> 2)定位涉及的服务和时间段 -> 3)拉取对应日志 -> 4)分析异常栈和高频错误 -> 5)结合最近发布记录判断是否和变更有关 -> 6)输出结论

这里面的步骤不是一开始逐条写死的,而是 Agent 根据目标自己规划出来的。如果日志位置变了,它可能会先找路径;如果发现异常信息不够,它可能会继续查链路或调用别的工具。目标是给定的,但路径是动态生成的

最大区别

workflow 负责按既定流程执行,agent 负责为了完成目标做决策。之所以容易混淆,是因为它们表面上都像自动化。但实际上,这俩自动化完全不同

Workflow 更像地铁:

  • 站点固定
  • 路线固定
  • 到站顺序固定
  • 你只要别出轨,它就稳稳往前跑

Agent 更像打车:

  • 起点和终点给定
  • 具体走哪条路,它自己判断
  • 路堵了会绕
  • 司机甚至可能根据实时情况换高架、走辅路、避开施工
  • 甚至去到陌生的城市,司机会强行绕路-_-(投诉他)

所以,真正的区别不是有没有自动化,而是执行过程里,谁在做判断:

  • 如果判断都由人提前设计好,那大概率是 workflow
  • 如果系统在运行时自己做判断,那才更接近 agent

差异对比

对比维度 workflow agent
核心驱动 固定流程 目标驱动
决策能力 基本没有 有,且通常是核心能力
执行路径 预定义 动态生成
灵活性
可控性 很强 相对弱
可解释性 高,步骤清楚 一般,过程可能不稳定
容错方式 失败后走预设分支 遇到问题可尝试调整策略
成本 通常更低 通常更高
适合场景 重复、规则清晰的任务 复杂、开放、非结构化任务

workflow 赢在稳定,agent 胜在灵活

workflow 的 场景

很多任务,Workflow 才是性价比最高的方案。尤其是下面几类。

规则清晰的重复任务

1)定时同步数据

2)日报生成后自动发送

3)代码提交后自动测试和部署

4)订单支付成功后触发短信、发票、库存更新

这类事情最大的特点就是:

  • 输入结构明确
  • 处理步骤固定
  • 输出形式稳定

这种场景下,你让 Agent 来做,多少有点大炮打蚊子的意思。不但不一定更稳,还可能平白增加模型成本和不确定性

需审计、合规的流程

1)审批流

2)财务流

3)发版流

审批顺序,哪个节点必须卡住,哪个条件下必须中断,这些都要清晰明了。每个节点流程都可以追责、审计、复盘

  • 路径固定
  • 节点清晰
  • 每一步都能记录日志
  • 出问题也容易定位

结果必须高度一致的任务

1)固定格式的数据清洗

2)固定模板的通知发送

3)标准化报表导出

Agent 的场景

任务目标明确,但实现路径不明确。就像旅长把独立团交给李云龙带,目标就是要快速有战斗力,怎么搞枪、搞补给,只要不违反纪律,旅长一概不管(当然不允许有骑兵营-_-)

只要符合这个特征,Agent 往往就有发挥空间。

需要理解上下文的任务

1)根据一堆聊天记录总结结论

2)根据用户反馈归类问题

3)从日志、监控、发布记录里推测异常原因

这类任务的难点不在执行步骤,而在理解内容和动态判断。workflow 很难搞定,agent 更适合

需要多工具协同的任务

1)查文档

2)调接口

3)读数据库

4)看日志

5)生成结论

如果这些步骤之间的顺序、次数、条件都不固定,agent 就比较合适。它可以根据当前结果决定下一步要调哪个工具

需要试错和回退的任务

比如将复杂需求整理成技术方案草稿:

  • 先提炼需求
  • 再补背景资料
  • 再形成初稿
  • 再检查是否有冲突
  • 最后做一次压缩和润色

实际使用

agent 不等于 更高级的 workflow

workflow 和 agent 不是简单的升级关系,更像是两种不同的解决问题范式。

如果你把一个纯固定流程交给 agent:

  • 成本会上去
  • 延迟会上去
  • 结果波动会上去
  • 排障难度也会上去

反过来,如果你把一个高不确定性的任务硬塞进 workflow:

  • 分支会越写越多
  • 规则会越补越乱

很多成熟方案其实都不是二选一,而是一起使用,互补的关系。用 workflow 保证主流程可控,用 agent 处理高不确定性的局部任务

比如一个告警排查

1)判断线上是否有告警

2)获取告警日志内容

3)分析所有关联日志

4)出具分析报告

5)解决问题

  • 第 1、2、5 步非常适合 workflow
  • 第 3、4 步则很适合 agent

怎么选

1)这个任务的步骤能不能提前写死?

2)执行过程中需不需要动态判断?

3)结果是不是必须高度稳定一致?

4)出了问题以后,是不是很需要完整审计链路?

如果答案偏向下面这组:

  • 能写死
  • 不太需要判断
  • 要求稳定一致
  • 特别需要审计

那优先选 workflow

如果答案偏向下面这组:

  • 很难提前写死
  • 需要边做边判断
  • 允许一定波动
  • 更重视完成目标而不是固定路径

那优先考虑 Agent

如果一半一半,那大概率就该上混合架构了

总结

agent 和 workflow,最大的区别不在有没有自动化,而在系统是否需要自己做决策。workflow 更像严格执行的流水线,agent 更像为了完成目标而自主决策的执行者

如果任务规则清晰、路径固定、审计要求高,那就老老实实上 workflow;如果任务目标明确但过程充满不确定性,那 agent 才能真正发挥价值。很多生产级方案,最后都会走向混合方法:外层用 workflow 控节奏,内层用 agent 解 复杂

联系我

  • 联系我,做深入的交流

至此,本文结束

在下才疏学浅,有撒汤漏水的,请各位不吝赐教...