Agent 实战

防呆设计:怎么让循环自己停下来

知道了 Agent 会怎么卡死,下一步就是设计防护。好的防呆是三层网,让系统既不会失控,又不会轻易放弃。

三类防护策略
硬限制
无条件的刹车,不管什么情况都会触发
迭代上限
设定最大循环次数(如 50 轮),到了就强制停止。简单粗暴但有效,是最后一道防线。
展开
总超时
设定任务最大执行时间(如 3 分钟)。不管跑了多少轮,超时就中断,防止无限占用资源。
展开
单工具次数上限
同一个工具最多调用 N 次(如同一接口最多 5 次)。防止 Agent 对一个工具上瘾。
展开
检测类
监控运行状态,发现异常模式时发出预警
同参数检测
检测连续 N 次是否用完全相同的参数调用同一工具。如果是,说明 Agent 在原地打转。
展开
同工具名检测
最近 N 轮是否只在调同一个工具。如果是,可能陷入了执念,需要引导它换条路。
展开
收益递减检测
对比最近几轮的产出增量。如果跑了 10 轮但新内容不到 50 字,判定为低效空转。
展开
降级类
带伤继续或优雅退出,先不直接停
注入纠错提示
在上下文中注入一条系统消息:「你已经重复了 3 次,请换一种方法」,让模型自己调整策略。
展开
禁用故障工具
某工具连续失败时,从可用列表中暂时移除。逼迫 Agent 走其他路径完成任务。
展开
强制总结当前进度
触发条件时,强制 Agent 总结当前已做的事、已得到的结果,带着残缺的进度返回用户。
展开
三层防护的层次关系

防呆不是一道墙,是三层网

降级类 — 优雅续命,尽量完成任务
发现异常 → 尝试自救
检测类 — 及时发现,提前预警
监控模式 → 触发降级
硬限制 — 最后兜底,绝对不失控
无条件刹车 → 保证安全
设计原则:先让降级尝试自救 → 自救失败由检测上报 → 最终由硬限制兜底。
大多数情况下,Agent 应该被温柔地纠正,粗暴杀死是下策:对用户来说,带着半成品回来比空手而归好得多。
防呆不是一道墙,是三层网:硬限制兜底、检测预警、降级续命。好的防护设计让 Agent 既不会失控,又不会轻易放弃,尽可能带着成果回来。