看门狗熔断

本条目是「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 的失败率对照实验,此处应引用)

六、学习资源


核心要点

  • 一句话:看门狗熔断 = 常驻 Loop 外的管家,连重复即跳闸停 Loop。
  • 定位:= 断路器 + 存活检查的合体,且强调「外部独立」。
  • 铁律:放进程外,才不被 Loop 的 bug 一起带崩。
  • 血训:$47K 事故根因之一正是「没有 loop detection / 看门狗」。

参考来源(一手链接 · 可溯源深挖)

速记卡(面试闪卡)

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:看门狗守在圈外,连叫三声就熔断; 进程之外不被带崩,最后电闸最保险。 相同动作它识破,兜圈乱转它先断; 误杀抖动要排除,阈值去重两头管。

相关链接