TL;DR: 追问协议用七个条件给 AI 的 5-Why 过程设规矩:T1-T3 是地板(不满足不许停),HC1-HC4 是护栏(防止过程失控)。其中 T2 的预防性反事实检验是最关键的设计——预防性 framing 迫使追问走深,同时反事实提问专门构造否定情境来对冲确认偏差。
← 上一篇 上篇诊断了 AI 用 5-Why 时的三个问题:浅尝辄止(深度不够)、单线追踪(广度不够)、确认偏差(推理偏误)。三个问题独立但往往一起出现——浅层结论形成锚定后,会同时压缩探索空间和引导证据筛选偏好。这篇设计追问协议——把人类专家判断「什么时候该停、什么时候该继续」的经验编码成显式规则,让 AI 的思考质量达到 5-Why 正常工作所需的标准。
追问协议的三个终止条件
上篇拆出了三个问题:深度不够、广度不够、推理偏误。三个问题的性质不同,对应的控制方向也不同。
深度不够是 AI 的默认行为——它就是会停早。应对方式是往下推:设一个最低门槛,不满足就不许停。这类条件我叫地板条件(T1–T3)——三个同时满足才能终止,保证 AI 走得够深。
广度不够和推理偏误是追问过程中的跑偏风险——追问越深,越容易钻牛角尖或只找支持证据。应对方式是往内收:限制追问的范围和证据的使用方式,防止过程失控。这类条件我叫护栏(HC1–HC4)。
两组条件解决的问题方向不同:地板是向下推,护栏是向内收。下面先讲三个地板条件。
T1 可执行性
根因必须对应一个具体的修复动作。
这个条件主要约束浅尝辄止。如果得到的结论没有对应的具体修复动作,就说明还没追到位。比如你得出"开发者不仔细"的结论——这个结论没有对应的具体修复动作,就不能停。
T2 预防性反事实检验
T2 要求用反事实提问来检验追到的结论够不够深——“如果 X 不存在,这个 bug 还会发生吗”。但提问的角度决定了检验能不能起到作用。
假设追到的根因是"没有加 null check"。你可以这样问:
“如果加了 null check,还会报这个错吗?”
答案肯定是不会。检验通过了——但根因根本没到。这个提问只是在修补这一个问题,下次还会出现其他类似的空指针错误。
换一个问法:
“如果我们有系统性的空值校验机制(比如类型系统),这类空指针 bug 还会发生吗?”
如果答案是不会,才说明到了系统层的根因。如果答案是"还是会,因为空指针不是校验能防的"——那说明当前追到的根因不够深,或者追错了方向。
这两种提问角度的区别在于:一种从修补层面提问,只看眼前这个 bug;一种从预防层面提问,看的是这类 bug。我管前者叫修补性 framing,后者叫预防性 framing。T2 要求必须用预防性 framing。
T2 怎么对冲确认偏差。 反事实提问的思路来自因果推理中的反事实框架[1]。确认偏差让人只找支持当前结论的证据,而反事实提问专门构造否定情境——迫使 AI 去找能推翻当前结论的信息。比如 AI 得出"模型不遵循 SKILL.md 指令"的结论,T2 要求它反过来想:如果指令格式才是问题呢?如果同一个文件里有能被遵循的段落呢?这种提问是 human expert 做 5-Why 时自然会做的,但 AI 不会主动做。
设计注意:必须用预防性 framing。 如果用修补性 framing(“加了 null check 就好了吗”),T2 在浅层就能通过,起不到检验作用。所以必须明确要求用预防性 framing。
边界情况。 预防性 framing 的目的不是要求所有根因都是系统级重构。有时候预防性 framing 的回答会让你发现根因不在当前追的路径上。举个例子:你追到"缺少并发锁"是根因,预防性 framing 问"如果有完善的锁机制,这类 bug 还会发生吗",回答是"锁能防竞态,但这个 bug 的真正原因是事件处理顺序不对,跟锁无关"——这说明根因在另一个维度,当前路径追得再深也没用,应该换方向。
T3 解释力
根因必须能解释所有已经观察到的症状,不能只解释一部分。
这个条件主要约束单线追踪。如果还有症状解释不通,就说明遗漏了其他分支,必须继续追问。
但要注意,T3 只能检查根因对已观察到症状的解释力。如果症状清单本身不完整,T3 可能给出虚假的通过信号——下一篇会讨论怎么补上这个漏洞。
三个条件必须同时满足,才允许停止追问。这是地板——保证走得够深。
四个护栏
但追问过程本身可能跑偏:追得太深停不下来、分支无限发散、越追越没证据还在硬追、跳到不相关的层面追。四个护栏就是拦这些跑偏的。
HC1 深度上限 5 层
5 层是天花板,不是目标。如果追了 5 层还没满足 T1-T3 的条件,说明当前路径不对,要换方向重新追。
HC2 分支上限 3 条
防止追问无限发散,限制搜索空间。同一层的原因分支最多允许追 3 条。这个数字来自经验——有研究发现人类自然列举的因果数量平均约 3 个[2],3 条分支既覆盖了常见的分支需求,又不超出调查者能有效追踪的范围。
HC3 证据锚定
连续 2 个 Why 没有新的证据支撑,就必须停止。
要注意的是,HC3 只保证每一步追问都有证据,不保证证据的深度。证据的深度还是靠 T1-T3 的门槛来保证。比如"复现实验确认了竞态条件存在"是具体证据,满足 HC3,但只靠这个还过不了 T1-T3 的门槛——还没追到为什么会发生竞态。
HC4 层面限制
根因必须落在代码、架构、配置、流程这四个层里,不允许追到"认知"“文化"这类不可落地的层面。
这个规则排除不可落地的层面,防止 AI 在"认知"“文化"这类听起来深刻但无法操作的层面宣称找到了根因。比如得出"模型能力不足"的结论,不属于这四个允许的层面,就必须继续往下追。
简单说,每个条件约束什么:
| 条件 | 约束什么 |
|---|---|
| T1 可执行性 | 浅尝辄止(深度不够) |
| T2 预防性反事实 | 确认偏差(推理偏误) |
| T3 解释力 | 单线追踪(广度不够) |
| HC1 深度上限 | 防止过深 |
| HC2 分支上限 | 防止发散 |
| HC3 证据锚定 | 防止无证据推测 |
| HC4 层面限制 | 防止浅尝辄止(停在不可落地的层面) |
下篇预告:七个条件能防止追问过程失控,但 AI 自己查自己有没有盲区?这套协议又是怎么从实践中长出来的?下一篇 →
参考文献
- Pearl 1999, “Probabilities of Causation: Three Counterfactual Interpretations and Their Identification”, Synthese, vol. 121, https://doi.org/10.1023/A:1005233831499
- Kováč 2009, “Causal reasoning: the ‘magical number’ three”, EMBO Reports, vol. 10, no. 5, https://doi.org/10.1038/embor.2009.75
交叉引用
- 上篇:AI 用不好 5-Why:浅尝辄止、单线追踪与确认偏差
- 下篇:追问的最后一道防线:独立确认与协议的自反性
- 之前的文章《修不完的 bug 与逃不出的循环》讲的是四条根因诊断的经验总结
- tdd-pipeline 项目:https://github.com/alexwwang/tdd-pipeline
