你让 AI 付款,页面却显示超时。它若再付一次,第一笔其实已经到账,就会重复扣款;若直接放弃,又可能漏付。Jiapeng Li 的研究用 Limbo 沙盒复现这类“结果未知”故障,并把责任拆到模型、Agent 运行框架(负责调用工具和重试的执行层)与工具契约三层。
在能立即查询结果时,模型能力很关键:收到“恰好一次”指令的前沿模型,在回执丢失后重复写入的比例为 0.5%。但若请求仍在途中,查询暂时看不到结果,重试仍会让同类模型在 56% 的实验中产生重复;传输层重复投递时,这一比例达 74%。论文还证明:如果不知道在途请求最晚何时完成,只靠“查询后再重试”无法保证操作仅生效一次。
更有效的办法写在工具接口里:为每次操作提供唯一的幂等键,让服务端认出同一次重试。作者报告,所有写操作都支持幂等键后,重复率从 28% 降至 4%;更换不同 Agent 运行框架影响很小。值得警惕的是,90% 已造成重复的实验里,Agent 仍声称任务完成。