上线前一周,我还在跟人演示:点一下,Agent 自己读材料、自己拆任务、自己调工具,最后把结果交回来。演示很顺,顺到我真觉得“全自动”就是产品的下一站。

结果第一次跑真实任务,它就给我上了一课。

任务跑到一半停住了。页面一直显示“处理中”,用户不敢刷新,我也不敢重启。查日志才发现,Agent 在某个中间步骤认为“信息不够”,又回头调了一次检索;检索结果和上一次差不多,它继续换关键词,来回三次,token 烧了不少,结论却没往前推。

那一刻我才明白:Agent 会思考,不等于它会收敛。

一开始,我想把整条流程都交给它

这个需求看起来很适合 Agent:读一份材料,判断质量,查相关资料,最后生成一份结构化的意见。步骤多、判断多、每份材料还不一样。用固定流程写,代码会变成一大串 if-else;用 Agent,似乎可以“让它自己看着办”。

我最初的设计是:给一个大目标,配一组工具,让模型自己规划、自己执行、自己决定什么时候结束。Demo 阶段确实很惊艳,因为演示材料是我挑过的,路径短,工具也少。

但真实任务一上来,问题就暴露了:

  • 有的任务只需要两步,它走了七步;
  • 有的任务明明查到了资料,它又换关键词重查;
  • 有的任务在“继续查”和“直接回答”之间反复横跳;
  • 失败之后没有明确的停点,用户只能等。

这不是模型笨,是我把“不确定性”当成了“自主性”。

我把任务拆开,才发现大部分步骤根本不需要 Agent

我拿真实任务做了一次笨办法:把每一步人工走一遍,记录“这一步有没有唯一正确的下一步”。

结果很意外:大概八成步骤是固定的。先读材料,再抽取关键信息,再按维度检查,最后生成报告。真正需要模型判断的,只有两三个点:

  • 这份材料属于哪一类,该走哪套检查规则;
  • 某条证据够不够支撑结论,要不要继续查;
  • 生成的意见有没有明显跑偏,要不要重写。

剩下的步骤,用固定流程更稳、更快、也更容易测试。

于是我把它改了:

  • 外层是 workflow,步骤固定,状态可查;
  • 只在两三个决策点放 Agent,让它做选择;
  • 每个决策点都有兜底:选不出来就走默认路径;
  • 写操作、对外发送、扣费这类动作,必须人工确认;
  • 整个过程有明确的结束条件,不靠模型“觉得自己完成了”。

改完之后,演示没那么“科幻”了,但任务完成率上去了,失败也能说清楚失败在哪一步。

我学到的三个判断

第一,Agent 适合“路径不确定”,不适合“责任不确定”。

路径不确定,可以让它探索;责任不确定,必须由系统和人来兜底。尤其是写数据、发消息、扣钱、对外承诺,不能让模型自己签字。

第二,不要用“自动”当卖点,用“完成”当卖点。

用户不关心你用了几个 Agent、有没有多步推理。他关心的是:这件事能不能做完,做不完能不能告诉我为什么,能不能让我接手。

第三,workflow 不丢人。

很多人觉得 workflow 是“传统软件”,Agent 才是“智能”。但生产系统里,workflow 的可预测性就是价值。Agent 应该是 workflow 里的一个聪明节点,而不是把整个 workflow 吃掉。

现在再有人问我“你这个是不是全自动”,我会说:不是,该自动的自动,该让人确认的让人确认。 这句话听起来没那么酷,但它能上线。