别再傻傻分不清:Workflow 和 Agent 到底不是一回事

从一个纠结的下午说起

前阵子帮朋友搭一个简历初筛的小工具,我对着 LangChain 的文档坐了一下午,反复纠结一件事:这功能到底是用 Chain 拼个 Workflow 出来,还是直接上 Agent?

说出来有点丢人,那时候我真觉得这俩东西差不了多少 ------ 不都是让 AI 一步步把活干完吗?反正都要调用大模型,都要处理输入输出,叫什么名字不一样?

我先顺着直觉写了 Workflow 版本。就像平时搭 LangChain 的链那样,把 PDF 解析、信息提取、岗位匹配、打分排序几个节点用 pipe 串起来,输入一份简历,顺着流程跑一遍,直接出结果。跑通的时候我还挺得意,觉得这不就完事了,要 Agent 有啥用。

结果转头就被同事怼了一句:"这么简单的场景当然没区别,你让它去做个市场调研试试?Workflow 直接就卡死了。"

这句话给我整懵了。调研不也是一步步搜资料、整理、总结吗?为啥 Workflow 就不行?

先说说我理解的 Workflow:就是一条铺好的传送带

我先回头把 Workflow 的逻辑捋了一遍。

说白了,这东西就是一条工厂里的流水线。你提前把每一步要做什么、输入是什么、输出传给谁,全都规定死。启动之后,物料从入口进去,经过一道道工序,最后从出口出来就是成品。中间不会有意外,也不会走岔路,条件满足就进下一个节点,条件不满足就走分支,一切都在你的掌控里。

就像我写的那段最简单的链:

javascript 复制代码
const creativeChain = storyPrompt
  .pipe(creativeModel)
  .pipe(outputParser)
// 就这么三步:拼提示词 → 丢给大模型 → 解析输出
// 输入啥输出啥明明白白,不会多干一步也不会少干一步

creativeChain.invoke('写一个关于 AI 的故事')

这里的 pipe 就像传送带,把上一步的结果直接递到下一步手里。LangChain 本质上就是帮你快速搭这种流水线的框架,节点多了还能加上条件判断、循环,拼成更复杂的图谱。现在很多工程里的流程自动化,本质也都是这个思路,把重复性的工作串起来,人只需要关注核心逻辑。

放到简历筛选这个场景里就更直观了: 第一步收简历 PDF,解析成纯文本; 第二步从文本里抠出技能、工作经历、学历这些关键字段; 第三步拿着这些字段去跟岗位 JD 做匹配; 最后按匹配度打分排序。

整个流程全是我提前定义好的,它不会突然去查候选人的社交媒体,也不会自己加个面试题环节。好处就是稳定、可控、好调试,出了问题一查就知道是哪个节点出了错。

之前在 Coze 上搭过 AI 照相馆的工作流,也是一个道理 ------ 拖几个节点:用户上传照片、调用抠图工具、换背景、生成图片、返回结果。用户付费用的就是这个稳定的流程,你总不能让 AI 自由发挥,把人家照片 P 成奇奇怪怪的样子吧?

说实话,大部分企业里的 AI 提效场景,本质上都是 Workflow。把原来人工走的流程,换成 AI 节点来执行,快还不容易出错。这种场景你跟老板说要上 Agent,老板大概率会问你:"它万一瞎搞,你背锅?" 那 Agent 到底特殊在哪?

我之前总觉得,Agent 就是高级版的 Workflow,无非是多了工具调用能力。后来翻了 ReAct 的实现逻辑,又跑了几个 Demo 才发现,根本不是一回事 ------ 两者的底层逻辑从根上就不一样。

Workflow 是你把路铺好,它只管沿着路跑。 Agent 是你只告诉它目的地,路它自己找。

你就把 Agent 想象成一个代驾司机。你说 "去机场",剩下的事你不用管。它会自己看导航,选最近的路;遇到堵车就绕路;发现高速封了就改走国道;甚至你中途说 "不去机场了,改去高铁站",它也能立刻调整路线。

它不需要你提前把每一个转弯、每一条车道都规定死。它自己会感知当前的路况,自己规划路径,自己执行驾驶操作,走不通了还能随时调整。

从技术上说,一个能干活的 Agent,核心就三件事。 第一件是感知环境。它得知道现在是什么情况,手头有哪些工具能用,用户的需求到底是什么。就像司机得看路、看导航、知道车上有多少油。 第二件是规划路径。拿到需求之后,不是立刻就干,而是先在脑子里拆成几步,先做什么后做什么。而且这个规划不是一成不变的,走一步看一步,随时更新。 第三件是执行任务。想好下一步干嘛了,就去调用对应的工具,拿到结果之后,再回到第一步,重新感知、重新规划下一步。

就拿规划旅行这事举例子。 如果用 Workflow 做,你得提前把流程写死:先搜出发地到目的地的机票,再搜目的地的酒店,再查当地天气,最后算总价。用户改个需求,比如想中途多去一个城市,你就得改整个流程。

但你把这事交给 Agent 就完全不一样。你只需要说 "帮我规划一下下周去成都的旅行,预算五千,要去看熊猫"。它可能先去搜机票,发现直飞太贵,转头去查高铁;查酒店的时候发现熊猫基地附近的酒店满了,就自动换成地铁直达的区域;甚至还会顺手查一下下周成都会不会下雨,提醒你带伞。

整个过程它走的路径,可能你一开始根本想不到。这就是 Agent 的核心:自主性和适应性。它不是在执行你写好的剧本,而是真的在 "想办法完成任务"。

那 Agent 又是什么?像个会自己找路的司机

那 Agent 到底特殊在哪?

我之前总觉得,Agent 就是高级版的 Workflow,无非是多了工具调用能力。后来翻了 ReAct 的实现逻辑,又跑了几个 Demo 才发现,根本不是一回事 ------ 两者的底层逻辑从根上就不一样。

Workflow 是你把路铺好,它只管沿着路跑。 Agent 是你只告诉它目的地,路它自己找。

你就把 Agent 想象成一个代驾司机。你说 "去机场",剩下的事你不用管。它会自己看导航,选最近的路;遇到堵车就绕路;发现高速封了就改走国道;甚至你中途说 "不去机场了,改去高铁站",它也能立刻调整路线。

它不需要你提前把每一个转弯、每一条车道都规定死。它自己会感知当前的路况,自己规划路径,自己执行驾驶操作,走不通了还能随时调整。

从技术上说,一个能干活的 Agent,核心就三件事。 第一件是感知环境。它得知道现在是什么情况,手头有哪些工具能用,用户的需求到底是什么。就像司机得看路、看导航、知道车上有多少油。 第二件是规划路径。拿到需求之后,不是立刻就干,而是先在脑子里拆成几步,先做什么后做什么。而且这个规划不是一成不变的,走一步看一步,随时更新。 第三件是执行任务。想好下一步干嘛了,就去调用对应的工具,拿到结果之后,再回到第一步,重新感知、重新规划下一步。

就拿规划旅行这事举例子。 如果用 Workflow 做,你得提前把流程写死:先搜出发地到目的地的机票,再搜目的地的酒店,再查当地天气,最后算总价。用户改个需求,比如想中途多去一个城市,你就得改整个流程。

但你把这事交给 Agent 就完全不一样。你只需要说 "帮我规划一下下周去成都的旅行,预算五千,要去看熊猫"。它可能先去搜机票,发现直飞太贵,转头去查高铁;查酒店的时候发现熊猫基地附近的酒店满了,就自动换成地铁直达的区域;甚至还会顺手查一下下周成都会不会下雨,提醒你带伞。

整个过程它走的路径,可能你一开始根本想不到。这就是 Agent 的核心:自主性和适应性。它不是在执行你写好的剧本,而是真的在 "想办法完成任务"。

我当时特意画了张图给自己理清楚两者的区别,大概是这么个感觉:

写段代码就懂了:两者执行逻辑完全不一样

光说概念有点虚,咱们看代码最直观。

先看 Workflow 的执行,其实就是顺序调用,没什么花活:

javascript 复制代码
// 定义好每个节点的能力
const parsePdf = (file) => { /* 解析PDF返回文本 */ }
const extractInfo = (text) => { /* 提取简历核心字段 */ }
const matchJob = (info) => { /* 匹配岗位JD计算匹配度 */ }
const rankScore = (result) => { /* 按分数排序输出 */ }

// 串成一条完整流水线
const resumeWorkflow = parsePdf
  .pipe(extractInfo)
  .pipe(matchJob)
  .pipe(rankScore)

// 调用一次就跑完,路径完全固定
const result = await resumeWorkflow.invoke(resumeFile)

整个过程是线性的(复杂点的就是你定义好的有向无环图),从入口到出口,一遍就走完了。大模型在里面只是某个节点的执行者,不是决策者。

再看 Agent 的执行逻辑,本质上是一个循环:

javascript 复制代码
// 简化版伪代码,核心逻辑大差不差
async function agentRun(task, availableTools) {
  let history = []
  let finalAnswer = null

  while (true) {
    // 1. 让大模型思考:现在啥情况?下一步该干嘛?
    const nextStep = await llm.invoke({
      task,
      history,
      tools: availableTools.map(t => t.description)
    })
    // 注意这一行!每走一步都要调用一次大模型做决策
    // 别问我为什么知道这很费钱,试了三次账单懂的都懂

    if (nextStep.actionType === 'finish') {
      finalAnswer = nextStep.content
      break
    }

    // 2. 按大模型的决定去调用工具
    const toolResult = await availableTools[nextStep.toolName]
      .invoke(nextStep.params)

    // 3. 把结果记进历史,下一轮接着思考
    history.push({
      thought: nextStep.thought,
      action: nextStep.toolName,
      observation: toolResult
    })
  }

  return finalAnswer
}

看到没?它不是一次跑完,而是 "思考 → 行动 → 观察 → 再思考" 这么一圈一圈循环,直到大模型自己觉得任务做完了。

大模型在里面是决策者,每一步怎么走,全是它说了算。你只是给它提供工具,告诉它目标,具体怎么干你管不着。

这也是 Agent 最让人头疼的地方 你永远没法 100% 预测它下一步会干嘛。它可能突然去调用一个你没想到的工具,可能陷入死循环反复查同一个东西,甚至可能觉得任务做完了,但其实根本没达到你的要求。

我踩过的坑:别拿 Agent 当万能钥匙

说回最开始那个简历筛选的事。我当时不信邪,非要写个 Agent 版本试试,觉得 "智能" 一点总没错。

结果给我整破防了。

本来 Workflow 三秒钟就能出结果的事,Agent 来回调用了五六次工具,花了快半分钟。更离谱的是,有一份简历它居然觉得 "技能描述不够详细",自己去网上搜候选人的博客去了。

我看着控制台打出来的执行日志,人都傻了。

后来我才反应过来,我这是典型的拿着锤子找钉子。

Workflow 和 Agent,根本没有谁更高级一说,只是适用场景完全不同。

  • 任务是固定的、重复的、要求稳定可控的,就用 Workflow。比如数据清洗、表单处理、客服问答、审批流程。这种场景上 Agent,纯纯是增加成本和风险,收益约等于零。
  • 任务是开放的、复杂的、没有固定解法的,就用 Agent。比如市场调研、问题排查、方案设计、多步骤推理。这种场景你硬写 Workflow,光分支逻辑就能写到你怀疑人生。

我还踩过另一个坑:觉得 Workflow 就不能有智能。其实完全不是。Workflow 里的每个节点,都可以用大模型来做,比如信息提取、内容生成,这些都没问题。只是 "下一步走哪" 这件事,是规则定的,不是大模型定的。

反过来,Agent 也不是完全不受控。你可以给它划定边界,告诉它只能用哪些工具,必须遵守哪些规则,只是它在边界里面,是自由的。

最后说句实在的:两者从来不是二选一

聊到这可能有人会问,那实际做项目,到底选哪个?

说实话,现在稍微复杂一点的 AI 应用,根本就不是二选一,而是两者混着用。

我最近看到的很多工程化方案,都是这么个思路:底层用 Workflow 搭骨架,保证核心流程的稳定和可控;关键节点上放 Agent,让它去处理灵活多变的部分。

就拿招聘系统举例子。整体的简历筛选、初评、邀约流程,肯定是 Workflow 定死的,不能乱。但其中 "匹配岗位需求" 这个节点,你可以交给 Agent 去做 ------ 它可以灵活地根据候选人的经历,去判断适配度,甚至给出具体的面试建议,而不是死板地按关键词匹配。

再比如客服系统。大部分常见问题,走 Workflow 自动回复就够了,稳还快。只有遇到复杂的、没见过的问题,才转交给 Agent 去处理,让它去查知识库、查订单、协调人工。

说白了就是:Workflow 是骨架,负责稳;Agent 是大脑,负责活。 Workflow 没什么创造力,但靠谱、省心、成本低。 Agent 有想象力,但不可控、贵、容易出幺蛾子。 把两者结合起来,才是工程上最务实的做法。

最后唠两句我这趟琢磨下来最深的三个感受: 第一,别迷信 Agent。不是什么场景加上 Agent 就变高级了,很多时候一个简单的 Workflow 就能解决问题,又快又稳。 第二,别混淆本质。两者最核心的区别,从来不是有没有工具调用,而是 "谁来决定下一步"------ 是人定的规则,还是大模型自己。 第三,别非黑即白。真实的业务里,永远是混合架构最香,该稳的地方稳,该活的地方活。

你平时做项目的时候,更常用 Workflow 还是 Agent?有没有踩过什么有意思的坑?评论区聊聊,我也长长见识。

相关推荐
触底反弹2 小时前
🔥 2026 大模型选择指南:别再只看 Benchmark 了,这些维度才是关键!
人工智能·面试
神奇霸王龙3 小时前
GB/T 46886 闭环屠夫:5 旗舰多模态 LLM 工业质检实测
人工智能·计算机视觉·ai·开源·ai编程·本地部署
smartfish_liu3 小时前
LLM.deepseek: 2026-7-24工作总结
llm·agent
南讯股份Nascent3 小时前
洽洽全域会员项目启动会圆满召开
大数据·人工智能
大郭鹏宇3 小时前
基于 LangGraph 构建智能分诊系统(一):项目概述与环境搭建
大数据·人工智能·microsoft·langchain
小林ixn3 小时前
大模型的“高考成绩单”:读懂Benchmark,选对真·生产力模型
人工智能·llm·测试
冬奇Lab3 小时前
AI 评测系列(04):RAG 评测——RAGAS 四指标实战与一个反直觉发现
人工智能·llm·agent
三声三视3 小时前
uni-app 鸿蒙端传参变成 [object Object]?顺着源码追到 ArkTS router 底层才搞明白
人工智能·ai·uni-app·aigc·ai编程·harmonyos
fthux4 小时前
“装闭”,让装修套路“装”不下去
人工智能·ai·开源·github·open source