Agent 可靠性专题总览

Agent 的价值不是“让模型自己做更多事”,而是在路径不固定、信息不完整、需要多次观察和调整时,把模型变成一个能规划、执行、检查和恢复的执行者。

问题也从这里开始。普通 Chat 说错一句话,通常还能人工纠正;Agent 一旦能调用工具、改数据、跑任务,就可能出现 plan drift、tool misuse、infinite loop、恢复失败等问题。它不是一次模型调用,而是一段会变化的执行过程。

Agent 可靠性的目标不是让 Agent 永远不犯错,而是让它的目标、边界、步骤、工具、状态和失败都可控、可见、可恢复。

本专题可以按四篇文章连起来读:这篇总览回答 Agent 为什么会失控;《Agent 控制边界》回答目标、工具、权限和预算怎么收住;《Workflow、Tool Calling 和 Agent 的决策边界》专门判断什么时候用 Workflow,什么时候只需要 Tool Calling,什么时候才值得引入 Agent;《Agent 的恢复、回放、断点续跑和 Eval》讨论失败后如何恢复和持续评估。

场景

先看一个企业内部运营 Agent。

运营同事每天要处理一批客户续费风险:读取 CRM 客户列表,查看最近工单和产品使用数据,判断风险原因,生成跟进建议,必要时创建任务给客户成功经理。

没有 AI 时,运营会手动筛选客户、打开多个后台、复制数据到表格、写备注、分配任务。流程耗时,但路径并不完全固定:不同客户可能需要查工单、看合同、对比用量、找最近沟通记录,甚至跳过某些步骤。

用户输入可能是:

帮我检查本周到期且过去 30 天活跃度下降的企业客户,找出最需要跟进的 20 个,并给每个客户生成一条 CS 跟进任务。

这个任务看起来适合 Agent,因为它需要动态决策。但失败样本也很具体:

  • Agent 原计划只分析“本周到期客户”,执行中被某个异常客户吸引,开始扩展到所有低活跃客户,出现 plan drift。
  • Agent 把 create_followup_task 当成查询工具使用,在未确认的情况下批量创建任务,属于 tool misuse。
  • Agent 查询 CRM 后发现字段缺失,不断改写查询条件、重复检索同一批客户,进入 infinite loop。
  • Agent 执行到第 14 个客户时工具超时,重新开始整批任务,导致前 13 个客户被重复创建任务,恢复失败。

这个场景的关键不是“模型能不能理解续费风险”,而是系统能否回答这些工程问题:

  • Agent 当前目标是否仍然是用户授权的目标?
  • 每一步工具调用是否在权限、成本和风险边界内?
  • 失败后能否知道执行到哪里、哪些动作已经生效?
  • 是否能从断点继续,而不是整段重跑?
  • 哪些动作必须人工确认?

问题类型

Agent 任务通常混合了规划、检索、判断和执行,不能只靠 prompt 描述“请谨慎”。

问题类型适合交给模型的部分应由程序处理的部分必须人工确认的部分
规划拆解动态步骤、根据观察调整下一步计划版本、步骤状态、预算限制目标变更、范围扩大
检索判断需要查哪些信息权限过滤、查询去重、证据引用越权或敏感数据访问
判断解释工具结果、比较候选方案规则优先级、阈值、结构化校验高影响业务结论
执行在低风险范围内选择工具工具契约、幂等、审计、回滚写入、发送、变更权益
恢复基于失败原因提出下一步checkpoint、重试策略、断点续跑不确定状态下继续执行

Agent 可靠性最容易出问题的四类故障是:

故障类型常见表现根因影响
Plan drift任务越做越偏,目标范围扩大或改变计划没有版本和边界,观察结果覆盖了原目标输出不符合用户授权,成本上升
Tool misuse调错工具、误解参数、把写入当查询工具描述不清,缺少权限和确认数据污染、重复通知、业务损失
Infinite loop重复检索、反复修正、一直等待不存在的信息没有步数、时间、成本和收敛条件延迟和费用失控,任务无法完成
恢复失败超时后重跑整批任务,重复执行副作用没有 checkpoint、幂等和动作日志重复写入、状态错乱、无法复盘

模型适合做动态判断,但不适合独自承担状态管理、权限、幂等、预算和恢复。Agent 工程的核心,就是把这些能力从 prompt 里拿出来,放到系统边界里。

收益和成本判断

Agent 的收益主要来自长尾和动态任务:

  • 减少人在多个系统之间切换。
  • 处理路径不固定的多步骤任务。
  • 根据工具结果调整下一步,而不是固定执行脚本。
  • 覆盖规则和 workflow 难以穷举的异常样本。
  • 将人工从信息搜集和重复判断中解放出来。

但成本也明显高于普通 Workflow:

  • 需要计划状态、步骤日志、工具调用记录和 checkpoint。
  • 需要更严格的工具权限、确认、幂等和回滚。
  • 需要限制步数、时间、token、工具调用次数和费用。
  • 需要为 plan drift、tool misuse、loop、恢复失败建立 eval。
  • 需要运维监控、人工接管和事故复盘机制。

低风险、路径固定、步骤稳定的流程,不应该为了“智能”强行做 Agent。Agent 只有在流程真的需要动态选择步骤,并且收益能覆盖可靠性成本时,才值得引入。

方案阶梯

Agent 可靠性也要从简单到复杂升级。

第一层不用 Agent。规则筛选、数据库查询、固定报表、表单流转能解决的问题,优先用确定性系统。

第二层是 prompt 或结构化输出。适合单步分类、抽取、摘要、草稿生成,输出可人工复核。

第三层是 Workflow。多步骤但路径稳定时,用状态机、任务队列和异常分支,比 Agent 更可靠。

第四层是 Workflow + 模型节点。流程由程序控制,模型只负责局部判断,例如判断客户风险原因或生成跟进建议。

第五层是受控 Agent。只有在下一步需要根据观察动态选择时,才开放有限工具,并加入预算、权限、计划校验、checkpoint 和人工确认。

第六层是多阶段 Agent。把 planner、executor、reviewer 分开,降低一个模型同时规划、执行和自我评价带来的风险。

第七层是 Agent Ops。上线后要能回放任务、评估失败类型、监控成本和循环、支持断点续跑与人工接管。

什么时候简单 Workflow 足够

以下情况通常不需要 Agent:

  • 步骤顺序固定,例如“筛选客户 -> 生成摘要 -> 人工确认 -> 创建任务”。
  • 分支条件清楚,可以写成规则或状态机。
  • 工具调用集合固定,不需要模型动态选择。
  • 失败可以在明确节点重试。
  • 输出会经过人工复核。
  • 任务频率高,稳定性和可预测性比覆盖长尾更重要。

例如续费风险流程中,如果公司已经定义了明确规则:到期时间、活跃度阈值、工单数量、套餐等级和负责人分配规则,那么 Workflow + 局部模型节点通常已经足够。

什么时候需要 Agent 工程

以下情况才值得进入 Agent 工程:

  • 用户目标开放,需要系统自主拆解步骤。
  • 信息来源不固定,Agent 需要决定查哪些系统。
  • 工具结果会改变后续计划。
  • 异常样本很多,固定分支会爆炸。
  • 任务跨越较长时间,需要保存状态并恢复。
  • Agent 会执行写入、通知、创建任务或修改数据。
  • 团队需要知道每一步为什么发生,并能复盘失败。

此时不能只写一个“你是一个可靠 Agent”的系统提示词。需要把目标边界、工具边界、执行预算、状态持久化、确认机制、回放和 eval 一起设计。

方案选型表

场景条件推荐方案不推荐方案判断理由额外成本
固定报表、固定查询规则 / SQL / 报表Agent没有动态规划需求常规权限和日志
单步判断或生成草稿Prompt + Schema多步 Agent输出可结构化且可复核schema、重试
多步骤但路径稳定Workflow开放 Agent状态机更可控、可恢复工作流配置、任务日志
流程稳定但局部判断复杂Workflow + 模型节点让 Agent 控制全流程只在不确定节点使用模型节点评估、人工复核
路径动态但工具低风险受控 Agent + 预算 + checkpoint无限自主 Agent需要动态选择,但风险可限制状态存储、工具审计
需要写入或对外通知Agent + 人工确认 + 幂等自动执行所有动作副作用必须可确认和可回滚确认 UI、动作日志
长任务需要中断恢复Agent Ops + 回放 + 断点续跑失败后整轮重跑重跑会重复动作或丢失状态checkpoint、恢复测试

反模式

第一种反模式:看到多步骤任务就直接做 Agent。

很多多步骤任务只是固定流程。用 Agent 会引入不必要的不确定性,让本来可以通过状态机解决的问题变成可靠性问题。

第二种反模式:把计划只放在自然语言里。

如果计划没有结构化步骤、状态、版本和完成条件,系统无法判断 Agent 是否偏离目标,也无法在失败后恢复。

第三种反模式:用 prompt 代替权限。

“不要调用高风险工具”不是边界。工具运行时必须控制哪些工具可用、哪些参数合法、哪些动作需要确认。

第四种反模式:没有循环预算。

Agent 可以不断观察、反思、再调用工具。如果没有最大步数、最大耗时、最大费用和重复调用检测,infinite loop 迟早会在线上出现。

第五种反模式:失败后整段重跑。

长任务中间可能已经创建任务、发送通知或写入备注。没有 checkpoint 和幂等,重跑会制造更多错误。

第六种反模式:只评估最终答案。

Agent 的最终答案可能看起来合理,但中间调用了错误工具、越权读取了数据或做了多余动作。Eval 必须覆盖计划、工具、状态和恢复过程。

工程清单

  • 场景边界:Agent 处理的用户、流程、输入、输出和失败代价是否明确。
  • 目标控制:用户目标是否被结构化记录,是否允许 Agent 扩大范围。
  • 计划状态:计划是否有步骤、状态、版本、完成条件和取消条件。
  • 工具边界:工具是否按查询、写入、高风险分级,是否有 schema、权限和确认。
  • 执行预算:是否限制步数、时间、token、工具次数和总费用。
  • 循环检测:是否检测重复工具调用、重复观察和无进展状态。
  • Checkpoint:每个关键步骤是否保存输入、输出、工具结果和副作用。
  • 幂等回滚:写入动作是否有 idempotency key、撤销或补偿路径。
  • 人工接管:不确定、高风险或多次失败时是否能转人工。
  • 可观测性:是否记录计划、工具调用、模型版本、错误和成本。
  • Eval:是否有 plan drift、tool misuse、loop 和恢复失败样本。
  • 回放恢复:线上事故是否能复现,并从断点继续或安全终止。

小结

Agent 可靠性不是一个模型能力问题,而是一个执行系统问题。

当流程固定、风险可控、分支可枚举时,Workflow 往往比 Agent 更合适。当路径动态、工具结果会改变下一步、异常样本很多时,Agent 才有价值。

一旦进入 Agent 工程,就必须把计划、工具、状态、预算、恢复和 eval 作为一套系统设计。否则 Agent 不是更聪明的自动化,而是更难复盘的不确定执行器。