zcbot/skills/analyze/references/root_cause.md

3.5 KiB

根因分析(Fishbone + 5 Whys)

何时启动:叶子节点类型 = 根因型。典型场景:已知现象异常("早强低 / 不合格率高 / 批次方差大 / 局部开裂"),需要找根因。

Fishbone(石川图 / 鱼骨图)

把可能原因按大类列广,先求穷尽,后求深度。建材 R&D 改造后六大支:

包含
材料 原料组成 / 粒度 / 含水率 / 杂质 / 批次差异 / 储存时间
工艺 配料比 / 温度曲线 / 时间 / 搅拌速度 / 养护条件 / 成型压力
设备 磨机磨损 / 窑炉密封 / 模具精度 / 控温精度 / 校准状态 / 振动台均匀性
检测 取样方法 / 仪器校准 / 标准选用 / 数据处理 / 主观误差 / 试件养护
环境 温度 / 湿度 / 季节性 / CO2 浓度 / 原料季节性波动
人员 操作差异 / 班次 / 培训水平 / SOP 执行 / 经验

输出格式(放进 analysis.md §5 对应叶子的小节):

## 叶子 X: <问题描述>

### Fishbone 列广

| 大类 | 可能原因 | 优先 |
|---|---|---|
| 材料 | 原料 A 粒度变化 | 高 |
| 材料 | 原料 B 含水率波动 | 中 |
| 工艺 | 烧成温度漂移 | 高 |
| 工艺 | 配料秤精度 | 低 |
| 设备 | 磨机内衬磨损 | 中 |
| ... | ... | ... |

穷尽 6 大支后,挑 2-3 个高优先项进 5 Whys。

5 Whys

对 Fishbone 选出的高优先项,连续问 5 次为什么,直到拆到可干预的机理层 / 工艺参数 / 设备状态,不要拆到哲学层。

例:

现象: 某批 P42.5 1d 抗压只有 9 MPa(应 ≥ 12 MPa)

Why 1: 为什么 1d 强度低?
       → 水化反应早期速率慢

Why 2: 为什么早期水化慢?
       → C3S 水化贡献不足

Why 3: 为什么 C3S 水化贡献不足?
       → 熟料中 C3S 含量偏低(实测 48%, 设计 55%)

Why 4: 为什么 C3S 含量低?
       → 烧成时 C3S 形成不充分,大量游离 CaO 残留(实测 fCaO 2.1%, 正常 < 1.5%)

Why 5: 为什么 C3S 形成不充分?
       → 烧成温度未达 1450°C(实测 1430°C,在线热电偶老化漂移)

[停] 拆到了可干预参数(温度 + 热电偶状态),不要再问"为什么热电偶老化"

输出格式:

### 5 Whys: <高优先项>

Why 1: ... → ...
Why 2: ... → ...
Why 3: ... → ...
Why 4: ... → ...
Why 5: ... → ...

[停在此层的理由]: 已落到可干预参数 <X>

[建议验证]: <怎么验证这条因果链是否真实存在,接续什么能力>

Fishbone + 5Whys 协同节奏

  1. 先 Fishbone 求广:6 大支各列 2-5 条,标优先级
  2. 挑 2-3 条高优先:既是"高"又物理意义清晰
  3. 每条走 5 Whys 深挖:拆到可干预层就停
  4. 给出验证建议:每条根因要标"接续什么能力验证"(测物相 / 查工艺记录 / 做对照实验 / 查文献...)

反模式

  • 跳过 Fishbone 直接 5Whys(只问一支,漏掉其他显然该查的支)
  • 5Whys 问到哲学层("为什么我们院的设备老化快?" → "因为预算少") —— 拆到可干预层就停
  • Fishbone 列了 30 条 —— 大杂烩,失去优先级意义;每支 2-5 条,总数 < 20
  • "原因"和"现象"混用(原因是过程:"温度漂移",不是名词标签:"温度") —— 拆错粒度
  • 标"高优先"但没给优先理由 —— 写一句"为什么这条优先"
  • 在 analyze skill 内部自己跑 5 Whys 自圆其说(模型自答自证) —— 验证步骤交棒下游(research 查文献 / 实验设计走 DoE)
  • 假设单根因(只有一条原因) —— 工程问题常多根因叠加,Fishbone 阶段就要并列多个高优先项