AI Agent 和工作流的边界:我是在两次自动化项目里把这个问题看清的

0 阅读

这半年里我连续碰到过两个 AI 自动化项目,表面上看都很适合做 Agent,最后做出来的路子却完全不同。也是在这两个项目里,我才真正把“Agent 和工作流的边界”想明白。

第一个项目是内部知识处理流程。输入是文档,输出是摘要、标签、结构化字段,再把结果入库。第二个项目是一个运维助手,目标是接收自然语言指令后去查资料、调用工具、生成处理建议。

最开始团队对这两个项目的直觉差不多:都上 Agent 吧,毕竟多步骤、会调用工具、看起来很智能。

后来回头看,第一个项目如果真按 Agent 做,八成会越做越乱;第二个项目如果只做死工作流,又会显得特别笨。这就是我现在越来越在意的判断点:不是任务里有没有模型,而是路径到底稳不稳。

第一个项目教会我的,是“很多流程根本不需要自主规划”

文档处理那个项目刚开始时,也有人提议让模型自动决定每一步怎么做。听上去很先进:先读文档,再判断要不要抽摘要、要不要分类、要不要纠错、最后决定怎么入库。

但我们真正把流程梳理完之后发现,这件事根本没那么开放。

它的真实链路其实很固定:

  1. 读文档
  2. 提取正文
  3. 做字段清洗
  4. 生成摘要和标签
  5. 输出固定结构
  6. 入库

这里面真正需要模型判断的,其实只有个别节点,比如分类和摘要;主流程完全是确定的。

我们后来没有做 Agent,而是把主干写成工作流,再在少数节点上接大模型。结果非常稳。日志清楚,失败能重跑,出了问题也知道卡在哪一步。

这次经历让我第一次明确地感觉到:多步骤不等于 Agent。一个任务就算有六七步,只要路径稳定,它本质上还是流程编排问题。

第二个项目让我看到,工作流也会有明显上限

运维助手那次就不一样了。

用户会问:

  • “帮我看看这个服务为什么最近报警变多了”
  • “对比一下昨天和今天的错误日志趋势”
  • “如果我要排查支付回调失败,应该先看哪几个系统”

这种任务的特点是目标清楚,但路径不固定。不同问题,第一步就可能完全不同:

  • 有的要先搜知识库
  • 有的要先查监控
  • 有的要先拉日志
  • 有的还得根据前一步结果再决定下一步

我们最早也尝试过工作流化,结果非常别扭。因为你很难提前把所有路径都列出来。流程一旦写死,助手就会表现得像一个菜单系统:能做的事都在预设分支里,一旦用户问法稍微拐一点,就开始答非所问。

这时候 Agent 的价值才真正出来。不是因为它“更高级”,而是它确实更适合这种需要边走边判断的任务。

我现在判断 Agent 和工作流,基本看三件事

第一,看路径是不是稳定。

如果一个任务 80% 情况都走同样的步骤,那优先工作流。别为了“智能感”把稳定流程交给模型自由发挥。

第二,看失败成本高不高。

如果一步错了会影响订单、权限、资金、客户数据,那主干流程必须尽量写死。模型可以辅助判断,但不该掌握整个执行权。

第三,看任务是否要求探索未知信息。

如果模型需要先去搜、再比对、再决定下一步,甚至中途可能修正原计划,那才更像 Agent。

这三个问题我现在几乎每次都会问一遍,因为它们能很快帮我把“看起来都像 AI 自动化”的需求拆开。

很多团队会误把“多步工具调用”当成 Agent

这是我最近最常看到的一个偏差。

有些系统本质上只是:

  1. 读输入
  2. 调一个接口
  3. 调另一个接口
  4. 按模板输出结果

这当然是多步,但不等于 Agent。它没有动态规划,也没有真正的路径选择,只是流程比单步长了一点。

如果把这类流程也包装成 Agent,短期可能显得很先进,长期问题很多。因为一旦让模型自由控制原本可以确定的步骤,你就会开始面对一连串新问题:

  • 工具参数为什么变了
  • 为啥这次少走了一步
  • 为什么昨天成功今天失败
  • 失败后该从哪儿恢复

这些问题本来可以靠流程约束直接规避。

Agent 真正难的地方,从来都不是“会不会想”,而是“出了事怎么兜”

这个认知也是我做第二个项目时被逼出来的。

在 Demo 环境里,Agent 往往看起来很聪明。它会拆任务,会总结,还会自己决定先调哪个工具。可一旦进入真实系统,你马上会碰到完全不同的问题:

  • 工具返回半结构化垃圾怎么办
  • 上一步失败后,状态存在谁那里
  • 一个任务执行到一半中断,能不能恢复
  • 模型选错工具时,系统能不能兜底

这些问题不是“提示词再写好一点”就能解决的,它们属于工程治理问题。

所以我现在看一个 Agent 系统,会特别关注这些东西:

  • 工具是不是封得干净
  • 每一步是否可观测
  • 中间状态有没有地方落
  • 失败后是否能人工接管

这些事情如果没做好,Agent 再能说,也只是一个容易失控的黑盒。

后来我越来越接受一种更务实的做法

很多项目其实不需要在“纯工作流”和“全自主 Agent”之间二选一。

更实用的方式通常是:

  • 主干流程写死
  • 把模型放在少数确实需要语义判断的位置
  • 在开放型环节里再放开自主规划

比如文档项目就是工作流主导,分类和抽取节点交给模型。运维助手则是 Agent 主导,但工具权限、执行范围、输出格式仍然受系统约束。

这种做法没有那么“酷”,但很符合真实交付环境。它既不把模型压成死模板,也不把可控性一把丢掉。

写在最后

我现在对 Agent 和工作流的看法已经很简单了:稳定路径别装成智能,自由探索也别硬写成流程。

很多项目不是做不出 AI,而是选错了自动化层级。主干应该被写死的地方,就老老实实写死;真正需要模型判断和规划的地方,再给它空间。边界一旦分清,系统会比“全都交给模型”稳得多,也比“什么都手搓流程”灵活得多。