模式矩阵 /模式白皮书/F4

F4 · Self-Heal Loop · 自愈循环

字段
双轴坐标 反思 Reflection × 循环 Loop(转)
成本档 ②(每次修复多几轮调用,但省下人工排查时间)
课程对应 06-05
目录归属 全集 33 模式之一 · 反思模块 4 模式之一
一句话 agent 在 deterministic 失败信号触发时自动诊断、修复、验证、循环到收敛或熔断。

它解决什么问题

测试失败、lint 报错、build 挂掉、CI 红了——这些 deterministic 失败信号是 agent 最 valuable 的反馈,因为它们对错明确、不靠主观判断。但每次失败都让工程师手动排查、手动修,重复劳动量大,而且很多失败的修法是模式化的(依赖缺失、配置错位、明显的逻辑错),人来修是浪费。

Self-Heal Loop 让 agent 自动消化这些信号闭环修复:失败信号触发 → 诊断根因 → 生成修复 → 应用 → 重新验证,没修好就再来一轮。它是反思模式里最贴近"agent 自主"的形态,也是反思模块唯一一个 mandatory loop——失败一次没修好必须再来,不存在"single-pass self-heal"这种合法形态。Aider 把它做成命令行 flag,Spotify Honk 把它做到 production scale(每月 650+ merged AI PR),GitHub Copilot Rubber Duck 把它做成 cross-model dual-review。

为什么坐标是「反思 × 循环」

核心机制

一个 production-grade Self-Heal Loop 由六段流水线加三重停止机制构成。流水线:Test Fail → Diagnose → Generate Fix → Critic → Atomic Apply → Verify,验证失败时 git revert 回到 Diagnose 重做。

三重停止机制是把 Generator-Critic 升级成 Self-Heal 的关键,缺一就有"把 main branch 玩崩"的风险:

  1. max_iterations 硬熔断:loop 最多几轮(Aider 用 3)。防止 agent 无限打地鼠。
  2. dual-model critic verifier:用一个不同 model family 的 reviewer 审修复方案。同 family 的 LLM 有共同盲区,cross-family review 引入独立训练历史的视角打破 self-bias。GitHub Copilot Rubber Duck 在 3 个风险节点(plan 后、实现后、写测试但运行前)强制 cross-model 验证。
  3. stability check via signature:用 failure signature 比对,分辨"修了同一个问题"(hash 重复)还是"换了新问题",并做 regression detection(severity 升级或 affected files 翻倍即回归,全部 rollback)。

Spotify Honk 的 format/lint/build/test 四级 cascade 值得照搬——便宜信号先跑挡掉明显问题,贵信号留给真正的语义级问题。

适合的生产场景

容易出错的地方

关键指标

最小骨架

for i in range(MAX_ITERATIONS):           # MAX=3, Aider 同源
    diagnosis = diagnose(current_failure)
    fix = generate_fix(diagnosis)         # 只改 diagnosis 里的文件
    critique = cross_family_critic(fix)   # 不同 vendor, 打破 self-bias
    if critique.block:
        return "blocked_by_critic"        # 转 HITL
    commit = atomic_apply(fix)            # per-iteration atomic commit
    new_failure = verify()                # format/lint/build/test 四级 cascade
    if new_failure is None:
        return "fixed"
    if is_regression(current_failure, new_failure):   # severity 升 / files 翻倍
        rollback(all applied commits)
        return "rolled_back_regression"
    current_failure = new_failure
return "max_iterations_human_handoff"     # 触底转人审

四个工程要点:dual-model critic 用 cross-family 不用同 family 不同 size;regression detection 规则按业务定(可加性能、安全、覆盖率回归);atomic commit 必须真 atomic,一次别改 5 个文件否则 rollback 不回去;触底必须真有人看 HITL 队列。

企业落地一例

一家 DevTool 公司做 CI/CD 自动修复 Agent。第一版很激进——任何失败都自动修,最多 10 次 iteration,没有 critic、没有 rollback、没有 stability check。第二周 incident:测试失败 → agent 改代码 → 又失败但是不同错误 → 又改 → 改 9 次后把无关代码都改了一遍,main branch 一团糟,rollback 还原不到正确状态因为 9 次 commit 不是 atomic 的。复盘出三个根因:没有 stability check(在打地鼠)、没有 critic 验证(agent 自己说修了就 apply)、没有 git audit trail。第三版彻底重写,加三重停止机制——max iterations 硬熔断、dual-model critic(Sonnet 写、GPT-5.4 审,cross-family)、stability check via signature 比对。验证走 format/lint/build/test 四级 cascade,每轮 atomic commit 便于精确 rollback,触底转 HITL 人审 PR。修完 main branch incident 清零,自愈成功率 70%(剩 30% 转人工),代价是单次修复延迟从约 30 秒涨到约 90 秒——金融场景这点延迟换准确率值得。

与其他模式的关系

一句话记住它

Self-Heal Loop 不是简单的自动修代码,而是定义 agent 自主性的边界——能 self-heal 的领域(有 deterministic ground truth)agent 可以独立干,不能的领域(blast radius 不可逆)必须人介入,这条线跟 DevOps 几十年"什么能自动化、什么必须人审"的判断完全同源。


本页属于 ADPS 33 模式白皮书。返回 模式矩阵与白皮书目录, 或查看配套 可运行代码目录