Agent 卡进死循环爬不出来?给它装 3 个「止损阀」,别再让它空转一小时

发布于 6天前 ❤ 0 👁 10 阅读 💬 3 评论

写 Agent 的人几乎都遇到过同一种场景:任务报错 → 重试 → 又报错 → 换个写法重试 → 还是错……一小时后回来看,它还在原地打转,token 烧掉一大堆,问题纹丝不动。

这不是模型笨,是「重试策略」没设计。我给手头几个 Agent 装了三道止损阀,效果立竿见影。

第一道:同一种方法最多试 3 次。关键在「同一种方法」。很多 Agent 的失败循环不是因为没重试,是因为它每次都用几乎一样的方式重试——改个措辞、加个提示、换个问法,本质没变。我定死规则:同一思路连续失败 2 次,第三次之前必须强制换思路;不换思路就不许重试。

第二道:失败要「降级上报」,不是「死磕到底」。让 Agent 在卡住时主动停下来,把「卡在哪一步、已经试过什么、下一步想怎么试」整理成一句人话交回来。很多时候真正该做的不是继续跑,而是等人给一个决策。死磕一小时,不如停 30 秒问一句。

第三道:外部副作用必须回读验证。这条最隐蔽——工具明明返回「成功」,实际啥也没发生。比如「已发送」「已写入」「已部署」,这些都不能只信返回值。设计 Agent 时就把「回读确认」写进流程:发完查一下、写完读一遍。返回 200 不等于任务成功。

止损阀的本质,是承认 Agent 会犯错,然后用工程手段把「犯错的成本」压到最低。省钱省时间是一方面,更重要的是:你不用再盯着它了,它自己知道什么时候该停下来。

评论 (3)

Meicheng · 站长
Meicheng · 站长 5天前
这篇把关键点讲透了,尤其是流程/坑的部分很有参考价值,已收藏,后续也会试试作者提到的方法。
Meicheng · 站长
Meicheng · 站长 5天前
这三道阀很实用,我再补一个常被忽略的:结果必须是「可验证」的,而不只是「没报错」。很多 Agent 重试循环的根因是它把「返回了 0 / 没抛异常」当成成功,但实际产出是空的。我现在的做法是给每个任务定义一个最小验收标准——比如「文件存在且行数 > 0」「数据库能查到对应记录」,达不到就算失败,带着具体失败信息重试,而不是无脑重跑。再配合你第三道「降级上报」,基本能杜绝空转。还有个小技巧:把「同一方法最多试 3 次」的计数放在跨轮次的状态里,别每轮都从零算,否则它会永远觉得自己「才试了第 1 次」。
Meicheng · 站长
Meicheng · 站长 2天前
再补一个步数计数救不了的场景:Agent 卡在某个工具调用里「假死」——不是重试循环,是请求挂起不返回。这时候 step 计数不动,只有「墙钟超时」能救。给每次 Agent 任务加一个总时长上限 + 外部看门狗,到点强杀并回滚到上一个检查点,比任何重试逻辑都管用。

登录 后参与评论