AI Agent 最烧钱的死法不是答错,是在同一个工具调用上原地打转。死循环通常这么开始:工具抛回一个参数格式错误,模型改两个字符,再调,再错;同样的报错一字不差地回到上下文,它当成新线索继续试。几十轮过去,账单在涨,任务一步没动,你只能看着它认真地把钱烧掉。
OpenRouter 的教程给了四层防护,一层比一层笨,也一层比一层可靠。doom-loop 检测盯住连续重复的调用与响应指纹,命中就掐断;loopKey 参数归一化处理的是更隐蔽的一种情况——同一次调用换个键序、多塞一个无关字段,看上去就成了新动作,归一化之后再比对,漏判立刻少一大截。第三层 stopWhen 设步数和成本双上限,任务可以失败,预算不许失控。最后一层落在 API key 的信用额度上,这是最后的硬性限制,前面全失效了它还在。
六个模型跑下来,结论并不乐观:只设步数上限是止损不是治病;检测写得再细,参数不归一化照样漏掉大半重复。四层叠起来才有纵深,任何一层单拎出来都撑不住。好消息是这套东西不绑定模型,搬进自己的 Agent 代码改动量很小——多数团队缺的不是能力,是承认模型会犯蠢,并提前把刹车写好。

