zcbot/skills/analyze/references/root_cause.md

96 lines
3.5 KiB
Markdown

# 根因分析(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 阶段就要并列多个高优先项