看门狗熔断
本条目是「Loop Engineering」的第 15 部分,对应学习清单条目 6.3.5。
前置依赖:Closed Loop脚本 为以下铺垫:Agent产品化
一、核心观点
给 Loop 加一只「看门狗」 = 发现它在原地兜圈子就熔断:记录每次 action,连续重复即跳闸停 Loop。
真·看门狗不跟你讲道理——它不管你是不是「在思考」,只知道「你刚才一模一样叫了三声,不对劲,咬停」。
二、定义与原理
看门狗(watchdog) 是常驻在 Loop 外的监控者,融合前面两道保险:存活检查(还动不动,见 13)+ 断路器(是不是在重复,见 12),并在判定异常时直接熔断。
- 记录 action:每次执行后把 action 存入历史。
- 检测重复:近期 action 连续相同 → 可能卡住。
- 触发熔断:抛异常、停 Loop、报警,必要时自动复位重试。
graph TD Loop["Loop 执行"] --> A["记录 action 到历史"] Watch["🐕 Watchdog 检查"] --> D{"连续 N 次<br/>相同 action?"} D -->|是| Fuse["⚡ 熔断<br/>停 Loop + 告警"] D -->|否| Alive["✅ 继续"] Fuse --> Reset["🔧 复位 / 人工介入"]
和断路器区别:断路器常内嵌在 Loop 逻辑里;看门狗更强调「常驻、独立、外部」——它不被 Loop 的bug 一起带崩,对应 预算护栏 的「进程外强制」原则。两者可并存:看门狗是管家,断路器是家里某路电闸。
三、实践与示例
看门狗骨架(概念极简):
class Watchdog:
def __init__(self, threshold=3):
self.history = []; self.threshold = threshold
def check(self, action):
self.history.append(action)
recent = self.history[-self.threshold:]
if len(recent) == self.threshold and len(set(recent)) == 1:
raise LoopStuck("检测到重复 action,熔断")
def reset(self): self.history = []四、优势与局限
- ✅ 最后一道闸:即使验证器松、预算大,看门狗也能在「兜圈子」时断电。
- ✅ 外部独立:不在 Loop 信任边界内,更难被同一 bug 绕过。
- ❌ 只看「完全相同」:参数略变仍兜圈会漏,需配无进展检测 + 存活检查三件套。
- ❌ 误杀正常重试:网络抖动导致的重发要排除,阈值与去重逻辑要调。
五、最新研究与企业数据(2024–2026)
- $47K 事故的终极对照:那套系统「No loop detection、No cost controls、No human checkpoint」——若有一只看门狗在「两 Agent 连续互发同类消息」时熔断,11 天的
$47,000第一天就能止住(supervaize.com)。 - 外部强制是共识:把熔断 / 预算放到 Agent 进程之外(网关、钱包级),才能挡住「本地计数器被同一 bug 绕过」的失效模式(binary.ph)。
- 关于「看门狗熔断对长程 Loop 失败率的实际降幅」缺少一手量化——(来源待核实:若有带 / 不带 watchdog 的失败率对照实验,此处应引用)。
六、学习资源
- Supervaize (2025-10) $47K Agent Loop 复盘
- binary.ph (2026-03) 外部强制预算与熔断
- 进阶:断路器 · 存活检查 · Closed Loop 脚本
核心要点
- 一句话:看门狗熔断 = 常驻 Loop 外的管家,连重复即跳闸停 Loop。
- 定位:= 断路器 + 存活检查的合体,且强调「外部独立」。
- 铁律:放进程外,才不被 Loop 的 bug 一起带崩。
- 血训:$47K 事故根因之一正是「没有 loop detection / 看门狗」。
参考来源(一手链接 · 可溯源深挖)
- Supervaize (2025-10) $47K Agent Loop 复盘(缺 loop detection):supervaize.com/fr/blog/20251016-47k-agent-loop
- binary.ph (2026-03)《How ampersend Prevents $47K Agent Loop Overruns》(进程外强制):binary.ph/2026/03/21/ai-api-cost-control-how-ampersend-prevents-47k-agent-loop-overruns
速记卡(面试闪卡)
Q1:一句话讲清「看门狗熔断」到底是什么? A:看门狗是常驻 Loop 外的监控,发现连续重复 action 就熔断停 Loop 防兜圈子。
Q2:一、核心观点 —— 怎么理解? A:像真·看门狗不跟你讲道理:它不管你是不是”在思考”,只知道”你刚才一模一样叫了三声,不对劲,咬停”。记录每次 action,连续重复即跳闸,比任何讲理的护栏都干脆。
Q3:二、定义与原理 —— 怎么理解? A:像合体的双保险:看门狗(watchdog)融合存活检查(还动不动)+断路器(是不是在重复),判定异常直接熔断。记录 action→检测近期连续相同→抛异常停 Loop 报警,必要时自动复位重试。
Q4:三、实践与示例 —— 怎么理解? A:像设了”连叫三次就断电”的管家:代码里维护 history 列表,取最近 threshold 个 action,若全相同就 raise LoopStuck 熔断。它常驻 Loop 外,不被 Loop 的 bug 一起带崩——对应”进程外强制”原则。
Q5:四、优势与局限 —— 怎么理解? A:像最后一道电闸:即使验证器松、预算大,兜圈子时也能断电,且外部独立难绕过。局限是只盯”完全相同”——参数略变仍兜圈会漏,需配无进展检测;还要排除网络抖动的误杀。
Q6:核心速记主线有哪些?
- 定位:常驻 Loop 外的看门狗,融合存活检查+断路器,异常即熔断
- 机制:记录 action → 连续 N 次相同 → 抛异常停 Loop+告警+复位
- 铁律:放进程外,才不被 Loop 的 bug 一起带崩
- 局限:只看完全相同,需配无进展检测+存活检查三件套
口诀 A:看门狗守在圈外,连叫三声就熔断; 进程之外不被带崩,最后电闸最保险。 相同动作它识破,兜圈乱转它先断; 误杀抖动要排除,阈值去重两头管。
相关链接
- 系列清单:Agent 方法论与产品思维学习路线图
- 上一层级:Loop Engineering · 索引
- 同系列:断路器 · 存活检查 · Closed Loop 脚本
- 下一层:Agent 产品化