明白什么时候不该用 Agent

📑 文章目录

前言:Agent 不是万能药

现在 AI 圈有个怪现象:啥都往 Agent 上靠。

做一个客服机器人?上 Agent!做一个定时任务?也上 Agent!批量处理数据?还是 Agent!

这跟当年微服务泛滥是一个病——手里拿着锤子,看啥都是钉子。

Agent 确实强大,但它带来灵活性的同时,也带来了不确定性、高成本和调试难度。很多时候,Workflow 甚至普通脚本就能搞定的事,非要用 Agent,纯属自找麻烦。

今天就说清楚:什么时候不该用 Agent,以及什么场景真的需要 Agent。


一、场景一:任务可预测 → 不需要 Agent

1.1 什么是「任务可预测」?

输入确定、输出确定、过程确定——你闭着眼都能说出每一步该做什么,这就叫可预测。

1.2 典型例子

场景流程为什么不需要 Agent
每日生成报表读数据 → 统计 → 生成图表 → 发邮件流程固定,不需要 AI 判断
RAG 知识库问答用户提问 → 检索文档 → 组装 Prompt → 生成回答检索和生成步骤固定
文档翻译读取原文 → 分段 → 翻译 → 合并翻译逻辑明确,不需要决策
SEO 文章生成输入关键词 → 生成标题 → 写正文 → 优化模板化流程,步骤不变

1.3 用 Agent 会怎样?

❌ Agent 版报表生成:
Thought: 用户要生成报表,我需要先连接数据库...(想了一堆废话)
Action: 连接数据库
Obs: 连接成功
Thought: 数据库连上了,接下来要查询数据...(又想了一堆)
Action: 执行 SQL
Obs: 返回 1000 条数据
Thought: 数据查到了...(继续想)
...
总计:5 次循环,3000 Token,耗时 15 秒

✅ Workflow 版报表生成:
Step 1: 连接数据库 → 执行 SQL(1 秒)
Step 2: 统计数据 → 生成图表(2 秒)
Step 3: 发送邮件(1 秒)
总计:0 次推理,50 Token,耗时 4 秒

Agent 在可预测任务上的问题:多了一层「思考」,每步都要推理,成本高、速度慢、结果还不一定对。


二、场景二:流程稳定 → 不需要 Agent

2.1 什么是「流程稳定」?

不管输入什么,执行路径基本不变,最多是在某一步做个简单判断(if-else 就能搞定)。

2.2 典型例子

客服工单处理

Workflow 版(清晰稳定):
  用户输入 → 意图识别 → 
    if 退款 → 走退款流程
    if 咨询 → 走知识库查询
    if 投诉 → 转人工
  → 生成回复

Agent 版(画蛇添足):
  用户输入 → Agent 思考 → 
    "用户似乎想退款?让我查一下退款政策" → 调用工具
    "查到了退款政策,让我再想想怎么回复" → 又一轮思考
    "好的,我来回复用户" → 生成回复
    ...3 次循环才完成 Workflow 1 步搞定的事

2.3 稳定流程用 Agent 的风险

风险说明
不确定性同样的问题,Agent 可能走不同的路径,回答不一致
幻觉Agent 可能「自作主张」编造信息,而不是走标准流程
效率低简单判断 Agent 要推理好几轮,Workflow 一行 if-else
难以审计Workflow 的每一步都清晰可追踪,Agent 的决策过程像黑盒

三、场景三:普通脚本能解决 → 不需要 Agent

3.1 什么是「普通脚本能解决」?

不需要 AI 参与的任务。纯逻辑、纯计算、纯 IO 操作,Python/Shell 脚本就能搞定,强行加 AI 只是增加了故障点。

3.2 典型例子

场景脚本方案Agent 方案(多此一举)
批量重命名文件for f in *.txt; do mv "$f" "prefix_$f"; doneAgent 思考每个文件该不该改、改成什么名
服务器健康检查curl -s health_endpointAgent 先思考要不要检查,再决定怎么检查
数据库备份mysqldump > backup.sqlAgent 思考备份策略、选择工具…
日志分析grep "ERROR" app.logAgent 逐行读日志、分析、再搜索

3.3 一个真实案例

我见过有人用 Agent 做文件格式转换:上传图片 → Agent 判断格式 → 选择工具 → 执行转换。

一行命令的事ffmpeg -i input.png output.webp

Agent 版本:3 次 API 调用,500 Token,耗时 8 秒。脚本版本:0.1 秒。


四、Agent 反而增加不确定性的三个原因

4.1 LLM 本身就有随机性

同样的输入,LLM 可能给出不同的输出。Temperature > 0 就有随机性,Temperature = 0 也不是完全确定。

第一次运行:
  Thought: 我需要查询数据库
  Action: query_db(sql="SELECT * FROM users")

第二次运行(相同输入):
  Thought: 让我先看看有没有缓存
  Action: check_cache(key="users")

同个任务,不同路径。Workflow 永远不会这样。

4.2 错误会放大

Agent 的循环特性意味着:一次错误判断,后续所有步骤都会跟着偏。

Step 1: Agent 误判了用户意图(把"退款"理解成"换货")
Step 2: 基于错误意图走了换货流程
Step 3: 返回了换货信息给用户
结果:用户要退款,你给了换货指引

Workflow 不会出现这种问题,因为意图识别和流程路由是分开的,每一步都是确定性逻辑。

4.3 调试是噩梦

Workflow 出了问题,看日志就知道哪一步卡住了。Agent 出了问题,你可能要翻几十轮 Thought-Action-Observation 的日志,才能找到它是在哪一步走偏了。


五、那什么场景真的需要 Agent?

说了这么多不该用的场景,那什么时候该用 Agent?

5.1 核心判断标准

如果任务的下一步取决于上一步的结果,而且你无法提前预测所有可能的路径,就需要 Agent。

简单来说:路径不确定 = 需要 Agent

5.2 需要 Agent 的真实场景

场景 A:自动化调试

用户:这个 Python 脚本报错了,帮我修

Agent 思考:
  1. 看报错信息 → ImportError: No module named 'pandas'
  2. 分析:缺少 pandas 库
  3. 行动:pip install pandas
  4. 观察:安装成功
  5. 再运行 → 又报错:SyntaxError: invalid syntax on line 42
  6. 分析:语法错误,需要看代码
  7. 行动:读取 line 42 附近的代码
  8. 分析:少了冒号
  9. 行动:修复代码
  10. 再运行 → 成功!

为什么 Workflow 不行? 因为错误类型不可预测,修复策略取决于具体报错,你没法预设所有可能的修复路径。

场景 B:研究分析

用户:帮我调研一下当前主流的向量数据库,做一个对比分析

Agent 思考:
  1. 搜索向量数据库 → 发现 Pinecone、Milvus、Weaviate、Qdrant
  2. 逐个查询特性 → 需要根据每个产品的文档调整查询策略
  3. 发现信息不够 → 搜索性能基准测试
  4. 对比价格 → 需要访问不同定价页面
  5. 综合分析 → 生成报告

为什么 Workflow 不行? 调研方向随发现而变,可能搜到 A 后发现需要深入调查 B,这种动态调整 Workflow 做不到。

场景 C:多步代码生成

用户:帮我写一个 REST API,包含用户注册、登录、权限管理

Agent 思考:
  1. 设计 API 结构 → 生成路由定义
  2. 写数据库模型 → 需要看路由定义来决定字段
  3. 实现业务逻辑 → 需要看模型来写逻辑
  4. 写测试 → 需要看实现来写测试用例
  5. 运行测试 → 发现问题,自动修复

为什么 Workflow 不行? 每一步的输出是下一步的输入,而且中间可能出现错误需要自动修复,这个反馈循环是 Workflow 无法处理的。

5.3 需要不需要 Agent 的判断表

判断维度不需要 Agent需要 Agent
路径可预测,固定不可预测,取决于中间结果
决策if-else 能搞定需要 AI 推理判断
工具固定调用 1-2 个需要根据情况选择不同工具
错误处理不需要或很简单的重试需要智能调整策略
迭代一次性完成需要多轮反馈循环

六、我的场景为什么需要 Agent?

说完了通用原则,说说我自己为什么选择 Agent 而不是 Workflow。

6.1 我的场景

我需要构建一个技术调研助手:给一个技术主题,自动搜索资料、阅读文档、对比分析、生成调研报告。

6.2 为什么 Workflow 不够用

1. 搜索策略需要动态调整

有时候搜一次就找到了核心资料,有时候需要换关键词、换搜索引擎、甚至去 GitHub 找源码。搜索策略取决于每次搜索的结果,Workflow 做不到「搜到 A 后发现需要深入查 B」。

2. 信息量不确定

有些主题资料很少,需要深度挖掘每一条;有些主题资料泛滥,需要筛选过滤。这需要 AI 根据实际情况判断「信息够不够」,而不是机械地执行 N 步。

3. 需要跨工具协作

搜索用 Web API,读代码用 GitHub API,查文档用向量检索,生成报告用 LLM。哪些工具组合、什么顺序调用,都取决于调研过程中发现的内容。

4. 需要反思和补充

初版报告生成后,可能发现某个维度的信息不够,需要回去补充调研。这种「生成→审查→补充→再生成」的循环,只有 Agent 能做。

6.3 如果我硬用 Workflow

Step 1: 搜索技术主题(关键词固定?不行,不同主题关键词不同)
Step 2: 阅读搜索结果(读几条?5 条?10 条?信息量不确定)
Step 3: 对比分析(维度固定?不行,不同主题对比维度不同)
Step 4: 生成报告(模板固定?不行,报告结构随主题变化)

每一步都充满了「不确定」,Workflow 的固定流程根本兜不住。强行用 Workflow,要么只能覆盖有限场景,要么需要几十个分支判断——那跟写代码有啥区别?

6.4 最终方案

我选择了 Agent + 受限工具集 的方案:

  • Agent 自主决策搜索策略和工具调用顺序
  • 但工具集受限(只有搜索、文档检索、代码阅读、报告生成四个工具)
  • 设置 max_iterations=15 防止死循环
  • 关键节点加人审核(生成最终报告前确认)

这不是纯 Agent,也不是纯 Workflow,而是在可控范围内给 Agent 足够的自主性


参考链接

  1. LangChain - Agents Concepts — LangChain 官方 Agent 概念文档,详解何时使用 Agent
  2. OpenAI - Agents Guide — OpenAI 官方 Agent 实践指南
  3. Lilian Weng - LLM Powered Autonomous Agents — Agent 架构权威综述
  4. Andrew Ng - AI Agentic Design Patterns — 吴恩达 Agent 设计模式
  5. Dify - Workflow vs Agent — Dify 官方工作流和 Agent 平台

未经作者禁止转载!


本文链接: https://hyuzz-nuc.github.io/posts/when-not-to-use-agent/

未经作者禁止转载!