Agent vs Workflow:什么时候根本不需要Agent?
不是所有的任务都需要Agent,很多场景硬上Agent,反而是在给系统制造不稳定
流程能写死,就优先Workflow
Workflow不是低级方案,他是步骤固定、规则明确、输入输出稳定的流程安排
先做什么后做什么,异常如何处理,都能提前写出来,这种场景,你根本不需要让模型每次都自由发挥
如果流程能稳定写死,就优先用Workflow,不要硬上Agent
Workflow解决的是"按照固定步骤稳定执行"
Workflow的核心价值,是把业务流程变成一条可控链路
它关注的问题是:
- 每一步做什么
- 每一步依赖什么输入
- 每一步失败怎么重试
- 哪些节点需要人工审批
- 哪些结果需要记录和追踪
尽管流程有分支,但是它仍然是Workflow
因为分支规则是确定的,这些规则都可以写进代码里面
这种任务让Agent来判断,反而会增加风险
因为Agent可能解释错规则,也可能在边界上犯错
而Workflow的好处是:规则一旦写清楚,每次都会稳定执行
Agent解决的是"路径不确定时动态决策"
那Agent什么时候有价值?
当任务目标明确,但执行路径不确定时
比如:
"帮我定位线上接口变慢的原因"
这个任务没办法提前写死
可能是数据库慢
可能是缓存击穿
可能是第三方接口超时
这个时候Agent的价值就出来了
它可以根据中间结果动态调整下一步:
- 先检查接口延迟曲线
- 发现从12点开始变慢
- 再查12点附近有没有发布
- 再检查支付服务日志
- 发现下游支付回调大量超时
- 再检查第三方接口状态
- 最后形成结论和依据
这个过程不是固定流程
他是不断"观察结果"->再决定下一步
这个就是Agent更适合的地方
所以第二条规则:
路径不确定,需要中途判断、需要多工具探索,才考虑Agent
别把有分支误判成需要Agent
有分支不等于需要Agent
比如退款流程:
- 未发货->自动退款
- 已发货->人工审核
- 超过退款期->拒绝退款
这叫规则分支,这也是Workflow
因为判断条件清楚,规则边界明确
真正需要Agent的是那种你没法提前列出来完整的任务
所以判断的标准不是有没有分支,而是:分支能不能提前写清楚
过渡Agent化,是很多项目翻车的开始
现在Agent太热了,很多项目为了显得智能,也会把简单流程包装成Agent
这就是过渡Agent化
常见的问题有四个:
成本更高
Workflow执行一次,可能就是几次接口调用
Agent执行一次,可能要多轮模型调用、多次工具调用、反复观察和总结
同样一个任务,如果Workflow 0.5秒能跑完,Agent跑20秒,还消耗一堆token
这不是智能,这是把简单问题复杂化
延迟更长
用户只是想查一个订单状态,Workflow直接查数据库就行
如果你让Agent先理解意图、再规划、再调用工具、再总结,用户体验只会变差
能直接返回,就不要绕一圈
稳定性更差
Workflow的路径是固定的
Agent的路径是模型动态决定的
动态决策意味着更灵活,也意味着不稳定
他可能选错工具,可能重复调用,可能提前总结,可能跑偏
在高风险的业务里面,这种不稳定不是小问题
调试更难
Workflow出问题,可以看节点日志
哪个节点失败,输入是什么,输出是什么,一眼就能定位
Agent出问题,经常要看整条trace
为什么选这个工具?
为什么忽略哪个结果?
所以不是"Agent"更高级
而是,Agent的自由度更高,也意味着你付出更多的成本去约束它
一个简单的判断:这件事能不能画成固定的流程图
项目里面怎么快速判断用Workflow还是Agent?
先问自己:这件事能不能画成固定的流程图
如果能画出来,而且大多数情况都覆盖了,那就优先Workflow
比如:
- 发票审核
- 订单退款
- 简历四要素检查
- 工单状态流转
这些都适合Workflow
如果你画不出来,或者画出来之后发现分支爆炸,说明它可能更适合Agent
最稳定的方案,往往是Workflow+Agent
真实的项目里面,不一定是二选一
很多时候,最靠谱的是混合架构
外层用Workflow控制主流程,里面某些开放节点交给Agent
所以更合理的框架是:Workflow负责边界和流程,Agent负责开放问题求解
这样既有稳定性又有灵活性
不要让Agent接管整个系统。让它在真正需要判断的地方发挥作用