作者的研究 Agent 因错误重试循环产生单日37美元费用,原有调用限制未覆盖所有端点。文章提出按探索、项目和超额审批分配预算,并在任务开始前设定支出边界。
最初发表于 dyordo.com。
上个月,我给一个做调研的 Agent 配了一把设有共享限额的 API key,让它去监测竞争对手。任务不大:每天最多调用 50 次,每次费用不到一美分。
第三天晚上,账单显示,单日花费 37 美元。
一个子任务陷入了错误循环:调用失败,Agent 调整一个参数,再次尝试,然后又失败。我设定的 50 次调用上限没能拦住它,因为每个 endpoint 都有自己的配额,而我的限额没有覆盖所有 endpoint。
37 美元算不上灾难。但这让我意识到,我从来没有认真设计过 Agent 该怎么花钱。我给每个 Agent 的,只是一张能刷的卡,而不是一个有预算的账户。
下面是我现在的做法,都不需要添置新的基础设施。
每个 Agent 只设一个月度总额度,太粗糙了。我把预算分成三类:
在 Agent 启动前就设好限额。等它超支后再削减预算,它什么也学不到。
以前,我默认允许访问所有服务,等发现有问题的服务再封禁。每出现一个新服务,就多一份风险,而我总是慢半拍。
现在,默认不允许访问任何服务:
允许名单里还要写清具体限额。我会限制每次调用和每天的支出。像「每天最多 5 美元、每天最多调用 200 次」这样的规则,就能让那次重试循环在第三轮被叫停。
总支出正常,并不代表每一笔交易都正常。我运行的每个 Agent 账户都有一条硬性规则:任何超过 2 美元的单笔扣款,都要交给人工处理。
除此之外,调用频率、失败率或花钱速度出现异常时,账户就会被冻结。最省事的实现方式,就是设置一个条件:只有满足 budget > 0,并且没有设置异常标记时,Agent 才能花钱。
Agent 调用第三方服务时,应该表明自己在为谁工作,比如使用 yourname.cloudflare.pay 这样的标识,而不是以匿名账户的身份出现。
对于有明确负责人的 Agent,商家更愿意提供试用额度;发现异常时,也更可能先发邮件联系你,而不是直接封禁。这和人们更信任 yourname.com,而不是一个光秃秃的 IP 地址加端口号,是同一个道理。
这些事不到一个小时就能完成。
设好 10 美元的上限,我就能让一个 Agent 尝试 50 项服务,不用逐个盯着。如果账户里有 1,000 美元,却没设上限,我就会在凌晨两点查看账单。
这就是我喜欢 Cloudflare 双层钱包设计的原因:它把「我信不信任这个 Agent?」变成了「限额是多少?」
正常情况下,一个限额设置得当的 Agent 系统,偶尔会出现一条 "budget exhausted, paused" 提示。你给它补充额度,或者调整预算,然后继续做事。你不必一觉醒来,第一件事就是打开账单。
价格和政策会变化。购买任何服务前,请查阅官方文档。
如需采取进一步措施,你可以考虑屏蔽此人和/或举报滥用行为。