2026年11月12日,OpenRouter 发布了一份智能体防死循环指南,给出四层防护:死循环检测、参数归一化、步数与成本上限,以及 API 密钥额度。起因很现实:工具反复失败时,模型会用同样参数一遍遍重试,每轮还要把整段对话重新发一遍,跑一夜能烧掉上千美元。
实测数据是这份指南最硬的部分。六款模型各跑三遍:没防护时,18 次运行共调用工具 314 次,花费 0.29 美元,Mistral Large 4 和 Grok 4.7 各有两次撞上 40 步上限,单次跑出 41 次调用。打开检测后,调用降到 64 次,花费 0.05 美元,16 次运行只做了两次真实工具调用就收尾。检测的规则是第三次相同调用直接拦截,第六次强制结束。
四层防护怎么配
第一层在 Agent SDK 里打开 doomLoop: true,重复调用按“观察—拦截—停止”逐级处理;第二层用 loopKey 把参数归一化,比如把 INV-2291、inv-2291、2291 都算成同一笔,避免模型改个大小写就绕过检测;第三层用 stopWhen 同时卡步数和成本,比如 15 步或 0.01 美元,哪个先到就停;第四层给 API 密钥设额度,由 OpenRouter 服务端执行,代码出 bug 也兜得住,超限的请求直接返回 402。
谁最该马上加上
这套防护瞄准的是跑工具调用型智能体的开发者,尤其是计费、订票这类会调外部服务的场景。OpenRouter 的自动路由器已经在按成本选模型,这次补的是运行时的刹车。边界同样要看清:检测只认重复调用,模型每轮换新花样就拦不住,这时要靠步数与成本上限;轮询类工具要把 loopKey 设为 false,别误伤正常重复。OpenRouter 建议按日常用量定上限:自家正常任务一般 4 到 6 步、花 0.0018 到 0.0053 美元,15 步加 0.01 美元留有余地。下一步看各家 SDK 会不会把这类防护做成默认项——在此之前,先给自己的智能体加上再说。