Lazy loaded image
生产 agent 的恢复力,不是多重试,而是敢于终止、回退和替换
字数 1351阅读时长 4 分钟
2026-4-29
2026-4-29
在生产系统里,“再试一次”常常是一句很有诱惑力的话。
它看起来积极,也容易让人误以为系统足够顽强:失败了没关系,重试就好。但做过一段时间生产级 agent 之后会发现,很多问题并不是重试次数不够,而是系统没有把失败、回退和替代路径设计清楚。**真正的恢复力,不是无限重试,而是知道什么时候该停、什么时候该换路、什么时候该把智能步骤彻底改写成确定性流程。**

为什么 retry 常常不是 recovery

把同一件事反复交给模型再做一次,很多时候只是在延长不确定性。
主模型额度耗尽时,真正有恢复价值的动作不是继续撞同一堵墙,而是切到可用模型,把链路继续跑通。批量发布撞上 429 限流时,真正负责的处理方式也不是在限流窗口里继续猛打 API,而是承认当前状态不可用,明确落到 failed,让后续流程基于真实状态继续决策。
这背后的差别很关键:重试关注的是“要不要再来一次”,恢复关注的是“系统接下来该处在什么状态”。如果状态机没有和真实世界同步,再多重试也只会把问题藏进时间里。

恢复能力本质上是状态设计

生产环境里最难的,从来不是让系统显得更顽强,而是让系统对自己的处境足够诚实。
持续 400 的坏消息,不应该被伪装成瞬时故障;文件编辑冲突、权限失配、上游资源失效,也不应该都被统一包装成“稍后再试”。这些问题真正需要的是明确终态、退避策略、最大重试次数,以及必要时的隔离队列。
failed 并不代表系统脆弱,很多时候恰恰代表系统成熟。因为只有当失败被清晰标记出来,后续的 fallback、人工介入和替代路径才有准确起点。相反,如果系统总想维持一种“也许下一次就能成功”的幻觉,状态机就会慢慢脱离真实世界,最后把局部故障扩散成全局混乱。

回退不是妥协,而是预先设计好的退路

不少团队把 fallback 看成临时补丁,好像只有主路径失败了才勉强启用。但在生产级 agent 里,回退能力本来就应该是主设计的一部分。
可用模型替换、能力降级、人工接管、隔离处理,这些都不是“失败之后才临时想出来的补救”,而是系统在一开始就该准备好的第二条路。真正可靠的架构不会把所有希望压在单一路径上,更不会假设模型永远在线、额度永远充足、外部依赖永远稳定。
恢复能力最强的系统,往往不是最会硬扛的系统,而是最会换路的系统。

更高阶的做法:把不必智能的步骤拿出智能链路

再往前走一步,很多恢复问题的根源,其实来自“让模型参与了太多不该由它参与的步骤”。
cron 和 CI 的经验已经反复说明,高频、稳定、可预测的环节,越早改写成确定性脚本,系统越稳。一个需要不断重试才勉强通过的流程,看起来像在恢复,实际上只是把慢和脏藏进了绿色状态里。真正的优化不是让模型更努力地补救,而是减少它必须补救的地方。
这也是 agent 系统很容易忽略的一点:并不是所有问题都值得继续智能化。很多步骤一旦已经足够明确,就应该尽快脚本化、规则化、确定化,把失败面从根上缩小。

生产系统真正需要的恢复观

如果要把这件事收束成一句判断,那就是:生产 agent 的稳定性提升,往往不是来自更长的重试链,而是来自更清晰的终态、更可靠的回退,以及更果断的确定性替代。
重试当然有价值,但它只能是恢复体系里最靠后的一层。排在它前面的,应该是对失败的诚实定义、对 fallback 的提前设计,以及对哪些环节不该继续依赖模型的清醒判断。
当系统知道什么时候该终止、什么时候该回退、什么时候该换成确定性流程,它才算真正具备恢复力。否则,“再试一次”只是在推迟问题被看见的时间。
上一篇
生产 agent 的排障效率,往往取决于能不能先判层
下一篇
Agent 安全真正的边界,不在验证链里,而在模型之外

评论
Loading...