将传统熔断模式应用于 Agent,在错误、成本、操作次数或重试数越界时自动暂停,并要求人工授权恢复。文章还区分了熔断器、限流器和紧急停止开关的职责。
AI Agent 的断路器,是一种自动控制机制:一旦监测到某项指标越过阈值(错误过多、支出过高、操作过多或重试过多),它就会立刻暂停 Agent,并拒绝恢复运行,直到获得人类的重新授权。它不会等人发现问题后再采取行动。阈值始终处于监测状态,即使凌晨 3 点无人值守也不例外。断路器触发后,Agent 会自行停止造成进一步损害;重新启动也将成为人类有意识的决策,而不是自动重试。正是这种“自动触发、只能经人类同意后恢复”的特性,将断路器与其他停止机制区分开来。
本文将介绍断路器模式是什么,为什么 Agent 需要自动阈值而不能依赖人类持续关注,应当以哪些指标作为触发条件,恢复语义如何运作,AI Agent 断路器与 kill switch、rate limit 有何区别,以及它如何融入该框架所描述的 LoopRails 方法(Grade · Guard · Show · Prove)。文末还附有一份检查清单。
断路器是一个先后被三个领域借鉴的古老理念。它最早源于电气工程:当电流超过安全水平时,断路器会跳闸并切断电路,避免电线过热。其关键机制是:根据测量得到的阈值自动采取行动,过程中不需要人的参与。
软件可靠性领域直接借用了这个名称。服务之间的断路器会监测调用依赖服务时的失败率;一旦失败次数越过阈值,断路器就会“打开”并停止发送流量,避免用大量重试请求压垮已经不堪重负的下游服务,同时防止单点故障扩散至整个系统。
金融市场用不同的名字采用了同样的逻辑:暂停交易。当价格在短时间内波动过大时,交易所会自动暂停交易,以切断反馈循环。这三个领域的共同点是:循环失控的速度可能快到人类根本来不及干预,因此制动必须自动触发,恢复也必须受到管控。
对于 Agent 来说,这一模式的含义非常直接。AI Agent 断路器会监测那些表明 Agent 正在出错的信号。一旦某个信号越界,它就会停止 Agent,并让其保持停止状态,直到人类重新授权。Agent 自身失控的循环——tool call、返回结果、发起新的 tool call——恰恰就是断路器模式原本要遏制的那种高速反馈。
LoopRails 核心问题最诚实的版本,听起来并不舒服:人类真的能及时发现这个错误吗?对于高速运行的自主 Agent,答案通常是否定的。这也正是自动阈值胜过时刻保持警觉的人类的原因。
人类会错过快速级联故障。Agent 一旦出错,往往会迅速恶化:一次错误的工具执行结果被传给下一次调用,错误在几秒钟内不断累积。Knight Capital 就是同类事件中的警示案例。2012 年,发生故障的交易软件在没有有效自动停止机制的情况下持续发送订单,导致该公司在大约 45 分钟内损失约 4.4 亿美元。人类无论反应多快都无法填补这样的时间差,只有能够自行触发的阈值才做得到。
人类同样会错过缓慢的级联故障,也容易在告警洪流中迷失。并非所有失控都来得很快。有些问题更像缓慢滴水:每次操作多花一点钱、错误率逐渐上升,或者重试循环悄无声息地连续数小时消耗预算。人盯着 dashboard 时,会逐渐习惯这种缓慢变化,最终对它视而不见。而当许多信号同时出现时,真正的问题又会被噪声掩盖。在三里岛事故中,短短几分钟内触发了 100 多项警报,反而遮蔽了真正的故障。这正是采用自动阈值的理由:计数器不会形成习惯,也不会在告警洪流中丢失信号。
另一种选择就是 YOLO Cliff。YOLO Cliff 是一种反模式:Agent 以完全自主的方式运行,却没有任何机制遏制级联错误。在问题真正爆发之前,一切看起来都很正常;一旦出事,却没有任何刹车。断路器是挡在你的 Agent 与这道悬崖之间最基础的一层保护。当你无法及时发现错误时,就必须自动限制其后果。
断路器的有效性,取决于它所监测的信号。应选择能够表明“某些事情正在出错”的条件,并在服务端设置这些条件——而不是把它们写进 prompt,让 Agent 有机会忽略——然后将每个条件连接到强制自动停止机制。
错误率/失败率。这是最经典的触发条件。如果在某个时间窗口内,失败的操作、tool call 或遭拒绝的输出所占比例越过阈值,就打开断路器。失败率上升,往往是 Agent 已经偏离目标的最早迹象。
支出。对照预算追踪成本,包括 API 支出、token 消耗以及 Agent 调动的真实资金。一旦超过预算就触发断路器;当支出速率突然飙升时,更应采取严格措施,从而在失控行为耗尽预算前将其拦截。
操作量。统计单位时间内产生实质后果的操作数量。如果某个 Agent 突然发送 200 条消息或创建 50 个工单,它正在做的事情绝不是健康 Agent 的正常行为。操作量通常是循环失控最早出现的量化信号。
重复重试。紧密的重试循环——同一个操作不断失败,又被反复尝试——就是微型的失控循环。在同一操作重试 N 次时触发断路器,不要等到这个循环吞噬整个工作负载。
异常信号。任何偏离 Agent 正常活动范围的行为,例如异常目标、非工作时间的突发操作、预期类别之外的行为,以及大量小步骤累积形成的 blast radius。这些信号相对不那么确定,但能捕捉到硬性计数器遗漏的故障。
以上五类信号都遵循同一条规则:根据可测量的条件触发,而不是凭感觉。“我们应该能注意到”不是阈值,计数器才是。
这一模式的核心就是受管控的恢复,因此状态机非常重要。AI Agent 断路器借用了软件可靠性领域的设计,在三种状态之间切换:
Closed(正常)。操作正常流动,计数器在后台监测触发条件。
Open(已触发)。某项指标越过阈值,Agent 被停止,会产生实质后果的操作遭到阻止。断路器将保持 Open,不会等待一段时间后悄悄重试。
Half-open(探测)。进行一次受限且有人监督的试运行:仅允许少量操作通过,让人类能够在完全重新打开断路器之前,确认问题是否已经解决。
对于 Agent,有一条不可妥协的规则:恢复运行必须获得人类重新授权。软件断路器可能在冷却期结束后自动关闭,因为判断错误的代价不过是多几次失败调用。但在现实世界中采取行动的 Agent 不同,因为如果问题尚未解决,恢复运行可能造成不可逆的后果。因此,处于 Open 状态的断路器不会因超时而自动关闭;“恢复”必须是人类主动做出并记录在案的决定。Half-open 状态是帮助人类在限制范围内确认修复结果的工具,而不是允许系统自行重新开放的许可证。
因此,触发与恢复都必须 Logged:需要记录哪项指标越过了阈值、断路器打开时有哪些任务正在执行,以及由谁基于什么原因重新进行了授权。
这三种机制经常被混为一谈。实际上它们相互补充,一个成熟的 Agent 应该同时使用三者。它们的区别在于触发方式和各自承担的任务。
Circuit Breaker:自动触发,由阈值驱动,恢复时需要重新授权。当某项测量指标越界时,它会自行触发,然后让 Agent 保持停止状态,直到人类重新授权。它的任务是自动捕获已知故障模式,因为即使没有人类在场,阈值也始终在监测。
Kill Switch:由人类触发,在紧急情况下立即停止一切。人类——或者代表人类行动的监控程序——无需先完成诊断,就能立即停止整个 Agent,包括正在执行的工作。它与断路器的区别在于触发方式:kill switch 由人拉下,断路器则自行触发。
Rate limit/Blast-Radius Cap:始终生效的单次操作上限。rate limit 会限制任何单次操作的速度或规模,例如最大支出、最多接收者或每分钟最大请求数。它不会停止 Agent,而是缩小每次操作的规模,使错误的影响保持在较小范围。Blast-Radius Cap 持续运行,断路器则位于它的上层:即便各项操作都受到限制,但聚合后的趋势仍然异常,断路器就会彻底切断运行。
可以用一个清晰的心智模型来理解:rate limit 让每次操作都保持较小规模;当某项阈值被触发时,circuit breaker 自动停止整个 Agent;如果前两者都没能发现问题,kill switch 就是供人类使用的最终覆盖机制。
在 LoopRails 中,每一项受治理的操作都应具备四项属性,即 RAIL:Reversible、Authorized、Interruptible、Logged。断路器是 I,也就是 Interruptible 的核心体现。如果 Agent 越过危险阈值时无法被自动停止,它就不是真正可中断的,因为你唯一的停止方式依赖于人类碰巧正在监视。断路器让可中断性实现自动化。
它同样高度依赖 L,也就是 Logged:触发事件、执行中的状态、Half-open 探测以及重新授权,全都需要记录。这既是为了安全恢复,也是为了弄清究竟是什么触发了断路器。恢复运行本身还是一种 Authorized 行为,因此人类同意“重新打开”时,必须掌握充分的信息。
你需要多强的断路器,取决于 Agent 能够执行的操作等级。应按照可逆性、blast radius 和风险程度为每项操作分级;交互式 grader 可以替你完成这一过程:
G0 到 G1(微不足道/低风险):计数器与日志记录属于良好的基本实践;断路器很少会成为其中最主要的控制机制。
G2(高风险):应当配备断路器。git push、在预算范围内支出或修改共享状态等操作,执行速度都可能超过逐项审查的能力,因此自动阈值非常有价值。
G3(关键风险):必须配备断路器,同时还要结合预防措施——sandboxing、capability locks、blast-radius caps——以及经过测试的 kill switch。在 G3 等级,仅靠审查是一种陷阱;当人类无法及时发现错误时,断路器就是遏制后果的机制。
断路器属于这样一类控制措施:它不只是标记错误,而是切实遏制错误。随着 Agent 自主程度的提高,所需的遏制能力也会相应增强。
对任何能够执行 G2 或 G3 操作的 Agent,都应按照这份清单进行检查。
[ ] 已定义并测量相关阈值:错误率、支出及支出速率、操作量、重复重试和异常信号。
[ ] 触发条件在服务端、prompt 之外强制执行,确保 Agent 无法忽略这些条件,也无法通过语言说服系统绕过它们。
[ ] 阈值越界时,断路器会自动触发,无需等待人类作出反应。
[ ] 处于 Open 状态的断路器会保持 Open,不会按照定时器自动重试或自动关闭。
[ ] 恢复运行必须获得人类重新授权:这应是一个主动、独立的决定,绝不能成为默认行为。
[ ] Half-open 探测允许进行规模受限的试运行,以便在完全恢复前确认问题已经修复。
[ ] 触发过程有日志记录:包括哪项指标越过阈值、当时正在执行哪些任务,以及触发时间。
[ ] 恢复过程有日志记录:包括由谁、在何时以及基于什么原因重新授权。
[ ] 阈值经过调优,既能在真正出现问题时触发,也不会因过于频繁地误触发而最终被人忽视。
[ ] 断路器已经过测试。定期主动制造触发条件,确认它确实会触发并保持停止状态。
AI Agent 断路器会在某项测量指标——错误率、支出、操作量、重试次数或异常信号——越过阈值时自动暂停 Agent,并要求获得人类重新授权后才能恢复。
这一模式源自电气工程,后来被软件可靠性领域用于阻止服务之间的级联故障,也被金融市场用于暂停交易。它之所以存在,是因为反馈循环失控的速度可能快到人类根本来不及反应。
Agent 需要自动阈值,因为人类既会错过快速的级联故障,也会忽视缓慢积累的问题,还可能在告警洪流中丢失真正的信号。计数器不会。Knight Capital 在缺少有效自动停止机制的情况下,约 45 分钟内损失了约 4.4 亿美元。
这套模式的决定性规则是受管控的恢复:处于 Open 状态的断路器不会自动关闭;恢复运行由人类重新授权,并可选择先执行一次 Half-open 探测。
Circuit breaker 是自动触发机制,kill switch 是由人类触发的紧急停止机制,rate limit 则是始终生效的单次操作上限。三者应当一起使用。
断路器是 RAIL 中 I,也就是 Interruptible 的核心机制,同时依赖 Logged;在 G2 等级应当配备,在 G3 等级则必须配备。
使用交互式 grader 为 Agent 风险最高的操作分级,确定其中哪些操作需要断路器;随后通过 practitioner playbook 完成四项行动,并在下次审查 Agent 时把 cheatsheet 放在手边。支撑本文所有论点的证据都收录在 research codex 中。下次再有人提议发布一个没有自动停止机制的 Agent,只需要问那个唯一重要的问题:当它出错的速度快到所有人都来不及反应,而且当时无人监视时,究竟是什么机制会踩下刹车?
本文最初发表于 looprails.dev/article-circuit-breaker-ai-agents.html。LoopRails 是一个免费且有资料来源支撑的框架,用于设计 AI Agent 的 human-in-the-loop 监督机制。
如需采取进一步措施,你可以考虑屏蔽此人和/或举报滥用行为。