其他
故障或异常有多个可能原因时,用可证伪假设差异法定位故障
当 bug、事故或异常存在多个看似合理的可证伪原因,且当前可通过代码、日志、diff、trace、测试、配置或数据观测时,用最便宜且最具区分度的检查先排除假设并定位故障。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 48/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 85/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 55/100 ×0.15
适用场景
故障或异常有多个可能原因时,用可证伪假设通用
解决思路
- 精确陈述症状:记录失败行为、范围、时机、环境和约束;把观测与解释分开。
- 枚举 2–5 个竞争假设:指出具体文件、函数、配置、输入条件或不变式;拒绝模糊类别(如“后端问题”)。如果经过刻意检查后没有严重替代假设,退出该差异法,直接测试或修复唯一有证据的原因;绝不为了继续流程而编造竞争假设。
- 先命名证伪条件和廉价观测再查看:对每个假设写明什么结果会淘汰它,以及现在能执行什么 read/grep/diff/log/test 检查。优先选择立即可用的观测,而不是部署、金丝雀发布或长时间等待。
- 按区分度 × 廉价度排序观测:运行最便宜且最能区分头部竞争假设的检查。不要先深挖最偏好的假设,如果便宜的交叉检查能排除其他假设。
- 每次观测后更新:剔除被证伪的假设。在仍符合所有证据的幸存者中,优先选择独立无支持假设最少的那个(额外组件、罕见时序、外部依赖)。简约原则只在证据拟合之后给幸存者排序;它绝不能拯救已被证据否定的更简单假设。只有当更简单的幸存者被排除时,才升级复杂度。
- 定位并停止:当一个假设有直接支持证据且关键替代假设被排除时,指出要修改的文件/函数/配置,以及定位它的证据。一旦定位是直接的,就停止分析。
- 按输出模板记录:症状(具体失败行为、范围、时机);假设(H1/H2/H3:具体原因 | 为何合理 | 观测 | 若……则证伪);测试顺序(最便宜且具区分度的检查);结果(每次观测显示什么);幸存假设(剩余假设;在符合者中选最少假设的工作解释);定位故障(文件/函数/配置 + 支持证据);已排除(被剔除的假设及原因)。
- 验证差异结论:若你在少于两个严肃假设时继续、若没有预先声明证伪条件、若跳过了更便宜的区分性检查、或证据已否定某说法却仍保留“更简单”的故事,则否定该差异结论。
- 满足停止条件:当故障被直接定位且重要替代假设被排除时停止;不要继续理论化。
- 防止过度应用:不要在没有竞争原因时叙述“观察→提问”;不要把最少假设当作证明;当单一明显原因已有证据时,不要运行此技能。
适用边界 · 注意事项
- 原因已从单个 stack、失败测试或最近 diff 显而易见,或只有一种合理假设存在时:直接修复或测试,不要为了仪式编造竞争假设。
- 目前无法进行任何观测,或需要数周实验、产品 A/B 测试、政策试验:先获取访问权限,或改用相应实验方法;本技能只适合 agent 当前可执行的检查。
- 故障已定位且需要系统性根因/预防深度、需要用 IS/IS-NOT 比较“仅在特定对象/时间”出现的缺陷、或怀疑文档/仪表盘与实际不一致时:分别改用 five-whys-plus、Kepner-Tregoe,或先用 map-territory 验证事实再恢复假设法。