渐进 發表於 2026-4-10 13:54:00

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

<h2 id="前言">前言</h2>
<p>一个agent,一个workflow。很多朋友在群里一聊就是“我搞了个 agent”,结果仔细一看,其实只是配了个固定流程;也有老哥把本该交给 workflow 的事,硬塞给 agent,最后调了半天,成本起飞,效果还不稳定</p>
<p>所以这篇文章,笔者就把 agent 和 workflow 的区别掰开揉碎了讲清楚</p>
<h2 id="基本概念">基本概念</h2>
<h4 id="workflow-是什么">workflow 是什么</h4>
<p>说白了,它像流水线。第一步做什么,第二步做什么,什么条件走哪个分支,基本都是提前写死的。它不会自己思考,也不会临场发挥,只会按规则执行</p>
<p>比如一个很常见的自动化流程:</p>
<p>1)收到 Git 提交 -&gt; 2)执行单元测试 -&gt; 3)构建镜像 -&gt; 4)推送镜像仓库 -&gt; 5)部署到测试环境 -&gt; 6)发送部署通知</p>
<p>这个流程里,每一步都是明确的。前一步成功,才继续下一步;中间某一步失败,就按预设逻辑告警或者终止。整个过程可预测、可审计、可复现</p>
<h4 id="agent-是什么">Agent 是什么</h4>
<p>Agent 更像一个带目标的执行者。你给它的不是一串固定步骤,而是一个目标,它自己去拆任务、做判断、选工具、尝试执行,必要时还会根据结果动态调整</p>
<p>比如你跟一个 Agent 说:</p>
<blockquote>
<p>帮笔者分析昨晚线上接口报警的原因,整理成一份简短结论</p>
</blockquote>
<p>1)先去读告警信息 -&gt; 2)定位涉及的服务和时间段 -&gt; 3)拉取对应日志 -&gt; 4)分析异常栈和高频错误 -&gt; 5)结合最近发布记录判断是否和变更有关 -&gt; 6)输出结论</p>
<p>这里面的步骤不是一开始逐条写死的,而是 Agent 根据目标自己规划出来的。如果日志位置变了,它可能会先找路径;如果发现异常信息不够,它可能会继续查链路或调用别的工具。目标是给定的,但路径是动态生成的</p>
<h2 id="最大区别">最大区别</h2>
<p>workflow 负责按既定流程执行,agent 负责为了完成目标做决策。之所以容易混淆,是因为它们表面上都像自动化。但实际上,这俩自动化完全不同</p>
<p>Workflow 更像地铁:</p>
<ul>
<li>站点固定</li>
<li>路线固定</li>
<li>到站顺序固定</li>
<li>你只要别出轨,它就稳稳往前跑</li>
</ul>
<p>Agent 更像打车:</p>
<ul>
<li>起点和终点给定</li>
<li>具体走哪条路,它自己判断</li>
<li>路堵了会绕</li>
<li>司机甚至可能根据实时情况换高架、走辅路、避开施工</li>
<li>甚至去到陌生的城市,司机会强行绕路-_-(投诉他)</li>
</ul>
<p><img alt="illustration-01" loading="lazy" src="https://img2024.cnblogs.com/blog/1416773/202604/1416773-20260410134509321-509588255.png" class="lazyload"></p>
<p>所以,真正的区别不是有没有自动化,而是执行过程里,谁在做判断:</p>
<ul>
<li>如果判断都由人提前设计好,那大概率是 workflow</li>
<li>如果系统在运行时自己做判断,那才更接近 agent</li>
</ul>
<h2 id="差异对比">差异对比</h2>
<table>
<thead>
<tr>
<th>对比维度</th>
<th>workflow</th>
<th>agent</th>
</tr>
</thead>
<tbody>
<tr>
<td>核心驱动</td>
<td>固定流程</td>
<td>目标驱动</td>
</tr>
<tr>
<td>决策能力</td>
<td>基本没有</td>
<td>有,且通常是核心能力</td>
</tr>
<tr>
<td>执行路径</td>
<td>预定义</td>
<td>动态生成</td>
</tr>
<tr>
<td>灵活性</td>
<td>低</td>
<td>高</td>
</tr>
<tr>
<td>可控性</td>
<td>很强</td>
<td>相对弱</td>
</tr>
<tr>
<td>可解释性</td>
<td>高,步骤清楚</td>
<td>一般,过程可能不稳定</td>
</tr>
<tr>
<td>容错方式</td>
<td>失败后走预设分支</td>
<td>遇到问题可尝试调整策略</td>
</tr>
<tr>
<td>成本</td>
<td>通常更低</td>
<td>通常更高</td>
</tr>
<tr>
<td>适合场景</td>
<td>重复、规则清晰的任务</td>
<td>复杂、开放、非结构化任务</td>
</tr>
</tbody>
</table>
<p><img alt="illustration-02" loading="lazy" src="https://img2024.cnblogs.com/blog/1416773/202604/1416773-20260410134521881-1622737967.png" class="lazyload"></p>
<p>workflow 赢在稳定,agent 胜在灵活</p>
<h2 id="workflow-的-场景">workflow 的 场景</h2>
<p>很多任务,Workflow 才是性价比最高的方案。尤其是下面几类。</p>
<h4 id="规则清晰的重复任务">规则清晰的重复任务</h4>
<p>1)定时同步数据<br>
2)日报生成后自动发送<br>
3)代码提交后自动测试和部署<br>
4)订单支付成功后触发短信、发票、库存更新</p>
<p>这类事情最大的特点就是:</p>
<ul>
<li>输入结构明确</li>
<li>处理步骤固定</li>
<li>输出形式稳定</li>
</ul>
<p>这种场景下,你让 Agent 来做,多少有点大炮打蚊子的意思。不但不一定更稳,还可能平白增加模型成本和不确定性</p>
<h4 id="需审计合规的流程">需审计、合规的流程</h4>
<p>1)审批流<br>
2)财务流<br>
3)发版流</p>
<p>审批顺序,哪个节点必须卡住,哪个条件下必须中断,这些都要清晰明了。每个节点流程都可以追责、审计、复盘</p>
<ul>
<li>路径固定</li>
<li>节点清晰</li>
<li>每一步都能记录日志</li>
<li>出问题也容易定位</li>
</ul>
<h4 id="结果必须高度一致的任务">结果必须高度一致的任务</h4>
<p>1)固定格式的数据清洗<br>
2)固定模板的通知发送<br>
3)标准化报表导出</p>
<h2 id="agent-的场景">Agent 的场景</h2>
<p>任务目标明确,但实现路径不明确。就像旅长把独立团交给李云龙带,目标就是要快速有战斗力,怎么搞枪、搞补给,只要不违反纪律,旅长一概不管(当然不允许有骑兵营-_-)</p>
<p>只要符合这个特征,Agent 往往就有发挥空间。</p>
<h4 id="需要理解上下文的任务">需要理解上下文的任务</h4>
<p>1)根据一堆聊天记录总结结论<br>
2)根据用户反馈归类问题<br>
3)从日志、监控、发布记录里推测异常原因</p>
<p>这类任务的难点不在执行步骤,而在理解内容和动态判断。workflow 很难搞定,agent 更适合</p>
<h4 id="需要多工具协同的任务">需要多工具协同的任务</h4>
<p>1)查文档<br>
2)调接口<br>
3)读数据库<br>
4)看日志<br>
5)生成结论</p>
<p>如果这些步骤之间的顺序、次数、条件都不固定,agent 就比较合适。它可以根据当前结果决定下一步要调哪个工具</p>
<h4 id="需要试错和回退的任务">需要试错和回退的任务</h4>
<p>比如将复杂需求整理成技术方案草稿:</p>
<ul>
<li>先提炼需求</li>
<li>再补背景资料</li>
<li>再形成初稿</li>
<li>再检查是否有冲突</li>
<li>最后做一次压缩和润色</li>
</ul>
<p><img alt="illustration-03" loading="lazy" src="https://img2024.cnblogs.com/blog/1416773/202604/1416773-20260410134531126-930960622.png" class="lazyload"></p>
<h2 id="实际使用">实际使用</h2>
<p>agent 不等于 更高级的 workflow</p>
<p>workflow 和 agent 不是简单的升级关系,更像是两种不同的解决问题范式。</p>
<p>如果你把一个纯固定流程交给 agent:</p>
<ul>
<li>成本会上去</li>
<li>延迟会上去</li>
<li>结果波动会上去</li>
<li>排障难度也会上去</li>
</ul>
<p>反过来,如果你把一个高不确定性的任务硬塞进 workflow:</p>
<ul>
<li>分支会越写越多</li>
<li>规则会越补越乱</li>
</ul>
<p>很多成熟方案其实都不是二选一,而是一起使用,互补的关系。用 workflow 保证主流程可控,用 agent 处理高不确定性的局部任务</p>
<p>比如一个告警排查</p>
<p>1)判断线上是否有告警<br>
2)获取告警日志内容<br>
3)分析所有关联日志<br>
4)出具分析报告<br>
5)解决问题</p>
<ul>
<li>第 1、2、5 步非常适合 workflow</li>
<li>第 3、4 步则很适合 agent</li>
</ul>
<h2 id="怎么选">怎么选</h2>
<p>1)这个任务的步骤能不能提前写死?<br>
2)执行过程中需不需要动态判断?<br>
3)结果是不是必须高度稳定一致?<br>
4)出了问题以后,是不是很需要完整审计链路?</p>
<p>如果答案偏向下面这组:</p>
<ul>
<li>能写死</li>
<li>不太需要判断</li>
<li>要求稳定一致</li>
<li>特别需要审计</li>
</ul>
<p>那优先选 workflow</p>
<p>如果答案偏向下面这组:</p>
<ul>
<li>很难提前写死</li>
<li>需要边做边判断</li>
<li>允许一定波动</li>
<li>更重视完成目标而不是固定路径</li>
</ul>
<p>那优先考虑 Agent</p>
<p>如果一半一半,那大概率就该上混合架构了</p>
<h2 id="总结">总结</h2>
<p><img alt="illustration-04" loading="lazy" src="https://img2024.cnblogs.com/blog/1416773/202604/1416773-20260410134537937-1437592377.png" class="lazyload"></p>
<p>agent 和 workflow,最大的区别不在有没有自动化,而在系统是否需要自己做决策。workflow 更像严格执行的流水线,agent 更像为了完成目标而自主决策的执行者</p>
<p>如果任务规则清晰、路径固定、审计要求高,那就老老实实上 workflow;如果任务目标明确但过程充满不确定性,那 agent 才能真正发挥价值。很多生产级方案,最后都会走向混合方法:外层用 workflow 控节奏,内层用 agent 解 复杂</p>
<h2 id="联系我">联系我</h2>
<ul>
<li>联系我,做深入的交流</li>
</ul>
<p><img alt="" width="500" height="200" loading="lazy" src="https://img2024.cnblogs.com/blog/1416773/202411/1416773-20241121135740959-1907948957.png#" class="lazyload"></p>
<p>至此,本文结束</p>
<p>在下才疏学浅,有撒汤漏水的,请各位不吝赐教...</p>


</div>
<div id="MySignature" role="contentinfo">
    <p>本文来自博客园,作者:it排球君,转载请注明原文链接:https://www.cnblogs.com/MrVolleyball/p/19846474</p>
<div>本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。 </div><br><br>
来源:https://www.cnblogs.com/MrVolleyball/p/19846474
頁: [1]
查看完整版本: 别再混着用了:agent 和 workflow 到底有什么区别?