ray-rca — 事故根本原因分析与报告
把一次事故(或未遂事件)的零散信息,系统化地追到管理系统层面的根因,并输出一份可落地、能防止复发的根因分析报告。
认知骨架(先记住这六条,胜过背步骤)
- 因果是分层的,不是平的:
事件/症状 → 因果因子 → 中间原因 → 根因。停在"事件"或"症状"就是调查过早停止(CCPS:"Events are not root causes")。 - 根因 = 管理系统弱点,且是组织可控的。重力是"基本原因"但不是根因——因为组织控制不了重力,只能控制屋顶的承重设计(ABS Handbook)。
- 人因失误几乎从来不是根因。说"操作工违规"就像说"坠落是因为重力"(Trevor Kletz)。要追问:什么工作环境/管理系统为这次失误创造了机会。
- 一次事故几乎必有多个根因。找"唯一根因"或"主根因"会漏掉重要贡献者——多层保护屏障同时失效才会酿成事故。
- 只纠正因果因子 = 只防同一地点的同一事故重演;纠正根因 = 防一批类似事故。报告的价值在根因层。
- 因果是正面的(Causality is Positive):只有实际发生的行动和实际存在的条件才是原因,"缺席"(没做)不是原因。写"镁粉持续积聚达爆炸极限",不写"未及时清理吸尘器"。调查始终用因果推理(实际发生了什么);防御性推理(什么没做/错了)与解决方案推理(怎么办)只在原因查明后才用。
执行流程(六步)
第 1 步 · 界定问题与调查边界
- 用问题陈述三段式定义要回答的问题(Expected / Actual / Impact):
- Expected 预期:事发前人们本会预期发生什么(不是"应该"发生什么);
- Actual 实际:实际发生了什么(不是"没发生什么",用正面陈述);
- Impact 后果:实际或潜在的后果(近失事件的潜在后果可能比实际更严重)。
- 例:预期"工具留在平台、人员禁止进入下方"/实际"扳手坠落击中下方人员"/后果"1 人重伤"。Actual 即因果分析的顶事件。
- 判定事故类型与投入:
- 急性事故(低频高后果)→ 正式 RCA;
- 慢性问题(高频低后果,如反复的轻微泄漏/划痕)→ 先趋势分析再定性;
- 轻微事件可用表象原因分析(ACA),不必挖到根因层。
- 明确调查范围,避免"范围蔓延"——应急响应、公关等与事故无直接因果的议题单独立项。
第 2 步 · 建立事实与时间线
- 按五类证据收集并保全:人(访谈)、纸(程序/记录/许可)、电子(DCS/报警历史)、物(残片/设备)、位置(事发时人/物/阀门的方位)。
- 时间线只记经数据证实的事实,不记假设。证人说几点就记几点,DCS 记录几点就记几点;时间偏移校正属于"分析",与原始记录分开保存。
- 每个时间线节点标注「事件」或「条件」:
- 事件(event):离散的、一次性发生的动作/状态改变(如"吸尘器被抬上二层平台""闪爆发生");
- 条件(condition):持续存在、跨越一段时间的状态(如"吸尘器未接地""镁粉积聚达爆炸极限")。
- 条件类节点最容易被漏掉,却是因果因子的重要来源——识别因果因子时务必把时间线上的条件节点纳入审查。
- 每个事实标注来源,便于识别和解决相互矛盾的事实。
第 3 步 · 识别因果因子(关键动作)
- 定义:因果因子 = 重大的、非计划的贡献(负面事件或不良条件),消除它就能预防事故或降低其严重度/频率。ABS 术语分两类:设备绩效差距(EPG) 和 一线人员绩效差距(FLPPG)。
- 识别方法:逐个审查时间线上的每个事件/条件,反复问——"如果这件事当时不存在,结果会不会显著不同?" 答"是"即为因果因子。
- 两道质检(务必做):
- 充分性检验:相邻两个事实之间问"事实 B 发生是否必然导致事实 A?中间有没有保护层本该拦截?A 是否还有 B 之外的其他原因?"(火灾必须集齐燃料+氧+点火三要素才算充分)。
- 完整性检验:通览全序列找缺口,用屏障分析(哪些物理/行政/人因屏障失效了?失效屏障通常是因果因子)和变更分析补漏。
- 措辞必须精确 + 正面陈述:因果因子只写"实际发生的行动/存在的条件",避免"未 / 没 / 没有"等缺席表述(缺席不是原因,是防御性推理)。
- ❌ "检修工未按规定安装锁具挂牌" → ✅ "检修工在泵未隔离时进行了拆卸作业"
- ❌ "吸尘器未及时清理" → ✅ "吸尘器内镁粉持续积聚达到爆炸极限"
- 缺席表述会把追问带偏到"该做而没做",停在人员疏忽;正面陈述则把追问导向"实际发生了什么让这件事发生"。
第 4 步 · 确定根因(用科学方法,避开三大陷阱)
对每一个因果因子,独立执行:
- 头脑风暴:该因果因子背后可能存在哪些管理系统绩效差距(此步不用工具)。
- 假设-检验:对每个候选根因用演绎推理检验(科学方法第五步),用事实/假设矩阵(
+支持 /−反驳 /NA无关 /?信息不足)逐个打分;刻意去"证伪"而不是找支持证据,克服确认偏误。 - 深度自检:反复问"为什么"直到触及管理系统缺陷为止——如果某层很容易回答"为什么",说明还没挖够;如果还没到管理系统就停了,就是停在症状上。
- 根因编码:用
references/root-cause-map.md把每个根因编码到分类节点(如FLPPG → 公司人员 → 程序问题 → 程序不正确/不完整 → 步骤顺序错误)。多数因果因子会编出多个根因路径。 - 判别问题逐条验证:对每个候选根因,回到
references/root-cause-map.md里对应节点的判别问题,逐条回答「是 / 否 + 证据」——只有判别问题成立(且能给出证据)的根因才确认为真。这是防止"凭印象归因"的最后一道闸(对应 CCPS 的假设检验)。 - 证据强度标注(数据质量阶梯):给每个根因标注证据确定性,按 4 级阶梯:
- Fact 事实(可验证/精确)> Inference 推断(基于事实的逻辑演绎)> Hypothesis 假设(能解释全部事实的因果理论)> Assumption 臆断(个人经验感知,无证据)。
- 低于 Inference 的根因标注为候选并列入"待补充证据"清单(如"缺接地电阻检测记录 → 需补测"),不得当作确认结论。
屏障有效性双向分析(防"只见失效"偏见):根因确定后,补一段起效的屏障——本事故中哪些保护层确实拦住了本该更糟的后果(如盘锦"应急处置评估良好、未引发次生灾害")。只写失效屏障会让报告呈现"这个系统一无是处"的失真图景;列出起效屏障既是对事实的尊重,也提示建议应"补强"而非"另起炉灶"。落点在报告"非促成因素/屏障分析"节。
三大 RCA 陷阱(必须避开):
- 陷阱 1 设备问题:"零件就是会磨损"→ 改问:检验/测试/维护能否预防?质保流程能否识别坏件?
- 陷阱 2 人因问题:"就他犯这个错"→ 改问:他怎么被招进来的?程序准确吗?培训充分吗?以前犯过吗?——通常该改的是工作环境,不是个人。
- 陷阱 3 外部事件:"自然现象不可控"→ 改问:能否制定计划把后果最小化?(雪压塌屋顶 → 屋顶承重设计/维护问题)
第 5 步 · 开发建议(对应根因,而非症状)
- 建议必须逐条对应第 4 步的根因,质量 > 数量。
- 每条建议用 SMART 检验(具体/可衡量/可达成/现实相关/有时间表),写成独立陈述,说清三件事:做什么、为什么(要避免的后果)、达到什么状态才算完成。
- 每条建议标注责任人(Owner)与目标完成日期,形成可追踪的整改闭环(对应
report-template.md的对照表)。 - 按控制层级排序并优先选择高层级措施:①消除/替代 → ②工程控制 → ③管理控制 → ④PPE;不以 PPE 作为主要手段(如"禁止干式吹扫、改用湿式/惰化清理"优先于"佩戴防尘口罩")。
- 两类写法:规定性("按 XYZ 标准把不锈钢枢轴螺栓换成钛螺栓")和绩效型("开发并实施降低侵蚀潜力的设计/工艺变更")。
- 避免模糊词("适当的安全措施""提高培训质量");涉及设备/工艺安全信息变更的建议须走变更管理(MOC)评估。
- 建议应增加或强化一层保护,并区分短期/中期/长期;重启前的关键动作单独标注。
- 纠正措施双测试(每条建议通过后再定稿):
- 回到过去:如果该措施事发前已就位,会在时间线哪一点打断事故链?会产生什么替代结果?
- 面向未来:它对未来类似事故有多有效?在当前系统里能否持续?会不会产生新的意外后果?
- 过不了双测试的建议只治症状不治因,需回到第 4 步重挖根因。
第 6 步 · 撰写报告(回答五问,三种输出形式)
按 references/report-template.md 的结构成文,核心是回答五个问题:
发生了什么 → 怎么发生的 → 为什么发生 → 管理系统根因有哪些 → 如何防止复发/降险。
除回答五问外,还要补上学习维度——从因果链中提炼关键学习要点(可迁移的洞察,非建议式,供同类组织自检),用 OIC 表(观察 Observation/洞见 Insight/结论 Conclusion 三行分离)呈现,让每条学习要点可追溯回证据;并落成两张专业表格:数据质量评估表(关键因果陈述逐条标注证据等级)和建议双测试表(回溯 + 前瞻)。
因果链分析图(RCA Map)必须画——按 references/rca-map-drawing.md 的三级图体系:
- L2 CED 因果图:HTML 报告必含内嵌 SVG(总体图:顶事件+一级分支;纵深图:每个因果因子一条分支链到根因),顶事件=Actual 原文、每框一句完整过去时正向陈述、AND/OR 门显式标注、Hypothesis 虚线框、根因红色标出。Word/PPT 用文本树(├─ └─ 缩进)降级。
- L1 E&CF 图:重大事故的 HTML 报告建议含(时间线转绘:事件=矩形、条件=椭圆虚线挂靠)。
- L3 根因路径链:根因编码表加"完整路径链"列(如 CF1 → EPG → 变更控制 #119 → 未做变更评估 #121)。
- 画完做反向质检:任一根因能否沿图走回顶事件?每个 AND 门遮住一支结果是否仍成立?全图有无"未/没"缺席表述?
内容骨架统一,输出形式按场景三选一:
| 形式 | 适用场景 | 生成方式 |
|---|---|---|
| HTML 报告 | 屏幕阅读、内部分享、快速预览 | 自包含单文件 HTML(离线可用,含时间线 + CED 因果链图内嵌 SVG,不引外部库) |
| Word 报告 | 正式存档、上报监管、打印分发 | 生成 .docx(docx-js 或 python-docx,表格为主) |
| PPT 报告 | 领导汇报、培训宣讲、事故警示教育 | 生成 .pptx(python-pptx,每页一主题,6–8 页要点) |
三种形式的章节映射与取舍见 references/report-template.md 的「三种输出形式」。
语气上描述事实、指向预防,而非归咎个人;有不确定处要在措辞中如实体现。报告要能"激励行动",而不只是记录。
关键模型速查
| 模型 | 一句话 | 用途 |
|---|---|---|
| 三阶段事故模型 | 正常→异常(偏差)→失控(屏障失效)→能量失控 | 理解事故演进 |
| 瑞士奶酪模型 | 主动失效 + 潜在失效穿透多层屏障 | 找所有失效的屏障 |
| 科学方法(6 步) | 定义问题→收集→分析→提假设→检验→选定 | 保证"发生了什么"判断正确 |
| 因果因子图(E&CF) | 事件=矩形、条件=椭圆、实线=事件序、虚线=条件 | 组织证据、识别因果因子 |
| 逻辑树 | 顶事件 + AND/OR 门逐层下推"为什么" | 结构化搜索多因 |
| 5 Whys | 反复问"为什么"直到管理系统缺陷 | 简单事故的快速法 |
| Root Cause Map | 233 节点编码树,因果因子→管理系统根因 | 一致化根因分类与趋势 |
| 三种推理类型 | 因果(实际发生)/ 防御(没做什么)/ 解决方案(怎么办) | 调查主用因果推理 |
| 数据质量阶梯 | Fact→Inference→Hypothesis→Assumption | 标注根因证据确定性 |
何时不适用 / 边界
- 证据不足时不要硬推根因——回到第 2/3 步补数据("无法确定"是合法结论,不是失败)。
- 故意破坏/恶意行为:仍需审查安保、人员筛选等管理系统的薄弱点,但不走常规人因分析。
- 超出组织可控范围的根本因素(如物理定律、供应商原料)只能编码到"组织如何应对该因素"的管理系统层,不可编码为根因。
- 本 skill 面向化工/过程安全事故;设备可靠性、质量、业务损失类调查可复用同一逻辑,但根因分类侧重不同。
参考
references/root-cause-map.md— Root Cause Map 根因分类词典(精炼主干,含判别问题)references/causal-logic-structures.md— 化工因果逻辑结构库(泄漏/爆炸/过压/BLEVE/粉尘爆炸等)references/rca-map-drawing.md— RCA Map 三级图绘制规范(L1 E&CF / L2 CED / L3 路径链 + HTML SVG 要点)references/report-template.md— 根因分析报告模板(章节结构 + 对照表 + 三种输出形式)references/出处索引.md— 关键模型与原始材料章节的对应关系
维护记录
| 日期 | 版本 | 变更 |
|---|---|---|
| 2026-08-15 | 1.1.0 | 进化轮(对比 SkillHub/GitHub 7 个同类 skill:root-cause-analysis、rca-framework、incident-fupan、5-whys-skill 等,均为通用/软件向,深度不及本地)。吸收 2 项通用机制:①屏障有效性双向分析(失效+起效,防"只见失效"偏见);②条件句反向验证(根因→顶事件逐环断开)。另补齐 frontmatter 三件套(slug/displayName/version)。明确不学:SEV 分级、Bug 症状映射、事故成本计算器、MTTD/MTTR 指标(均为领域专属) |