乐于分享
好东西不私藏

一人成军_从零搭建基于 OpenClaw 的功能安全 Agent(9)FMEA & FMEA-MSR 实操技巧篇(Hermes&Open Claw全兼容)

一人成军_从零搭建基于 OpenClaw 的功能安全 Agent(9)FMEA & FMEA-MSR 实操技巧篇(Hermes&Open Claw全兼容)

FM 识别 · Cause 定义 · Effect 推导 · 上下文管理 · B.1a 本质 · 活动卡体系

前两章讲完了方法论和打分,又用真实数据走完了执行层。这一章换个角度——不讲”怎么做”,讲”怎么做对”。

这些技巧不是某个项目的专属经验,是从多轮 FMEA 执行、几十次 VR 翻车、几百条 Cause 修正中提炼出来的——换一个项目、换一个架构,它们一样适用。

──────────────────────────────────────────────────

一、技巧一:怎么正确识别失效模式(FM)

FMEA 的质量从 FM 定下来的那一刻就基本确定。FM 定错了——后面 Cause 白写、Effect 白推、AP 白算。

1.1 FM 来源三阶梯,不要自己编

FM 只有一个合法入口:标准。任何”我觉得这个接口可能会 xxxx”都是错误的。

三阶梯从权威到工程:

第一阶梯——IC 安全手册(P1 元件专用)。如果你分析的是 MCU、OSD IC、TDDI IC 等有安全手册的元件,FM 从手册里取。手册里说 GPIO 有哪些 FM 就用哪些,不要自己加。如果手册只描述检测机制没列 FM(比如 MCU I/O Port Diagnosis 管所有 GPIO),就从接口功能推导 FM,但 Detection 列引用手册中的机制。

第二阶梯——ISO 26262-11 Table 30/36(P2 元件主力)。通信外设看 Table 30,模拟/电源/振荡器看 Table 36。这两张表是 FM 的”官方字典”——不在表里的 FM,要么你理解错了接口类型,要么这个失效场景不存在。

第三阶梯——HAZOP guide words(GPIO/PWM 等通用数字接口的 P2 兜底)。丧失、多于预期、少于预期、方向相反、非预期激活、卡滞。六个词覆盖所有数字 I/O 失效形态。

1.2 同类别同 FM 集,一个都不能少

有一条铁律:同类别所有 P2 接口必须用完全相同的 FM 集。Cat 2 的 A 接口用了 6 个 HAZOP guide words,B 接口就也得是 6 个——不能说 B 接口”那俩 FM 用不上”就删掉。不适用就显式标注”N/A — 原因”。

这个规则不是追求形式整齐——VR 会逐类检查。Cat 2 有 18 个 GPIO 接口,只要有一个少了一个 FM,Manager 直接判 R3 违规。真实案例:Des_LOCK 用了 5 个 HAZOP words,Des_PASS 只用了 3 个——VR 抓出来了。

1.3 Cat 4 通信接口记住两条:双向 + Table 30 四组 FM

通信接口(I2C/SPI/CAN 等)是 FMEA 里最容易漏分析的一类,因为大部分人下意识只分析输出方向。但标准要求双向——TX 和 RX 两端各一行,各自独立分析。

Table 30 定义了四组 FM:COM_TX_FM1~FM4 用于发送端,COM_RX_FM1~FM4 用于接收端。SPI TX 行用 TX 组,SPI RX 行用 RX 组——两组 FM 描述不同,不能混用。

一条实用的自检:B.1a 提交前,grep Cat 4 的 TX 和 RX 条目数,必须相等。每条总线的 TX 和 RX 必须配对。

──────────────────────────────────────────────────

二、技巧二:怎么正确定义失效原因(Cause)

FM 回答”什么会坏”,Cause 回答”为什么会坏”。Cause 写不好有三个常见病:太细(越级到 IC 内部)、太散(同 FM 不同 Cause)、太快(传递链路跟 FM 对不上)。

2.1 三段式编号——Cause 列就这一个格式

1. 输出端IC 故障:[元件名] 故障 — [功能表现]          2. 传递链路:[链路类型] 异常 — [功能表现]          3. 接收端IC 故障:[元件名] 故障 — [功能表现]

三段涵盖了从源到目的地的完整故障传播路径。具体写法示例:

# GPIO 输出常高          1. 输出端IC 故障:MCU GPIO 故障 — 持续输出高电平          2. 传递链路:引脚对 VDD 短路 — 强制拉高          3. 接收端IC 故障:接收端 IC 收到不应有的高电平 — 误判为有效信号          # SPI TX 消息丢失          1. 输出端IC 故障:发送端 IC 故障 — 消息未发出          2. 传递链路:SPI 总线信号中断 — 数据未到达          3. 接收端IC 故障:接收端 IC 故障 — 未收到预期消息

不涉及的段标 `—`。比如电源输出接口没有”接收端 IC 故障”的概念——第三段写 `—`。

2.2 系统级锁死——别跨过硬件安全分析的边界

FMEA 是系统级活动。IC 内部的故障机理——电容短路、晶体管开路、寄存器翻转——这些留给硬件 FMEDA。FMEA 的 Cause 只描述到元件功能失效层面。

 越级(留给 FMEDA 的)

 系统级

MCU GPIO 输出驱动管开路

MCU GPIO 故障 — 无输出信号

电压调节器反馈电阻网络开路

电压调节器 IC 故障 — 输出电压升高

发送端 TX FIFO 溢出

发送端 IC 故障 — 消息未发出

时钟源晶振断裂

时钟源 IC 故障 — 无时钟输出

一条经验规则:只要你的 Cause 里出现了电容、电阻、晶体管、寄存器、SEU、FIFO、PLL 这些词——判断越级了,往上提一层。

2.3 传递链路必须跟 FM 物理一致

这是最容易犯的错——从模板里复制了 Cause 描述,但传递链路跟 FM 互斥。典型案例:

FM = 输出常高→ 传递链路:”开路” 开路导致丧失,不是拉高          FM = 输出常高→ 传递链路:”对 VDD 短路” FM = 输出丧失→ 传递链路:”对 VDD 短路” FM = 输出丧失→ 传递链路:”开路” 

一条自检:读完 FM 名字后问自己”这个失效在物理上是怎么发生的”,然后看传递链路那一段是否跟这个物理图景一致。不一致就改——不要因为模板里写的是”开路”就照搬。

2.4 同 FM 必须同 Cause——不要逐行”重新思考”

同一条 FM(比如”COM_RX_FM4: message masquerading”)在不同接口上出现时,Cause 必须完全一致。Agent 逐行生成会产生一个现象:F302 和 F326 同为 COM_RX_FM4,Cause 却写成两套不相关的故障描述。

这不是 Agent 的错——是约束没给到。对策:建立 Cause Lookup Table,每个 FM 对应一条标准 Cause 模板。P2 接口全部从表中取,P1 接口用安全手册覆盖对应段。VR 检查时逐 FM 核对 Consistency。

──────────────────────────────────────────────────

三、技巧三:怎么正确推导失效影响(Effect)

Effect 是 FMEA 表里最长的一列——它要回答”这个失效最终对驾驶员意味着什么”。Effect 写浅了等于没分析,写错了会误导 AP 判定。

3.1 四级链——Effect 不是一个结果,是一个因果链条

L1: [FM 表现] → L2: [局部失效影响] → L3: [系统级功能影响] → L4: [驾驶员/车辆影响] → L5: [SG 判定]           每一层一个 `→`。有效链长 3~5 次跳转。太短(2 跳)说明你没追到终点,太长(6+ 跳)说明你掺了不必要中间状态。

实例:

# 不跳层、追踪到 SG          3V3 输出过压 → 下游 IC 承受过压永久损坏 → 全系统功能丧失 → 无安全图标显示 → [SG: OTA_SG01 violated]          # 跳层了——中间元件被跳过          3V3 输出过压 → 无安全图标显示 

3.2 起点固定 + 终点三态判定

Effect 的起点(这个 FM 发生在哪个接口、接口的源端和目标端是谁)由 B.1a 锁定,B.2 不推翻。终点必须是 SG 判定——且是三态之一,不是模糊的”有安全影响”:

·`[SG: xxx violated]` — 确认违背安全目标

·`[SG: xxx not violated]` — 确认不违背(需要因果链证明为什么不违背)

·`[SG: xxx 待确认]` — 信息不足无法判定(列在 Open Items)

“无影响”也需要完整因果链。不能简写成”无影响”三个字——必须给出推导过程证明它真的无影响。

3.3 元件名具体化,不写”下游 IC”

Effect 链里不能用”下游 IC”这种模糊表述。架构里有具体元件名——MCU、OSD IC、TDDI IC、Deserializer——就用它们。换个项目、换个架构,元件名换了,Effect 链跟着换。这条也适用于 Cause——三段式里的”输出端 IC”要替换为具体元件名。

3.4 Effect 推导最常踩的坑

第一坑:把检测机制的缓解效果写到 Effect 里。Effect 问的是”如果没有任何检测,这个失效会导致什么”——跟有没有 E2E、有没有看门狗没关系。检测有效性通过 D &M列体现。

第二坑:在一个无安全影响的接口上推导出了 SG 违背。比如背光亮度 PWM 上了 110% 占空比——驾驶员看到屏幕更亮了,但没有安全图标丢失。这时候 Effect 链追到 L4(驾驶员感知到亮度异常)后,L5 应该判 `[SG: xxx not violated]`。

第三坑:Effect 停在中间元件不再往下追。通信接口最常见——Effect 写到”OSD IC 收到错误配置数据”就停了。它收到错误数据之后呢?配置错了会导致什么?图标不更新?安全图标丢了?继续追。

──────────────────────────────────────────────────

四、技巧四:怎么在查文档的同时避免上下文溢出

FMEA 需要参考的文档量很大——ISO 26262-4/5/9/11、AIAG & VDA Handbook、FMEA Cause Lookup Table、Effect Charter、接口失效模式基线、项目架构图、FSR 表、TSR 表……单是 ISO 26262-11 一个文件就轻松超过 100KB。

如果把这些全部灌入 Agent 的上下文,只有一个结果:超时。deepseek-v4-pro 子 Agent 处理 50KB+ 的单文件就进入超时风险区——已验证数据:10~13 接口 FMEA 行耗时 320~452s,600s 硬超时近在咫尺。

以下是在不牺牲分析质量的前提下控制上下文大小的四个技巧——每个都来自真实执行教训。

4.1 P1/P2 预判定——不把整个安全手册灌给 Agent

P1(有安全手册的 IC)和 P2(无安全手册的元件)的判定不需要 Agent 读安全手册来做——调度者(Head)提前判好,用短列表传入:

P1: MCU, OSD IC, TDDI IC          P2: Host System, Deserializer, ROM Flash, Backlight Driver, PMIC

Agent 收到这个列表后,P1 接口就知道要按安全手册路径处理,P2 接口走标准化 FM 集。不需要掏几十 KB 的安全手册全文。

4.2 规则预注入——不让 Agent 自己去发现规则

FMEA 活动卡里有 R1~R11 共十一条强制规则。如果只给 Agent 一个活动卡路径让它”自己读”——它能读,但读完生成时不会逐条遵守。因为在逐行生成 Cause 和 Effect 时,上下文里的规则会被生成压力挤掉。

对策:分派 Agent 时,在 context 里直接注入规则的压缩版(不是全文,是速查清单):

R5: S 值依据 FSR→违背类型→Table D1 五级映射 (10/8/6/5/4)。禁止二值化”违背SG→S=10″          R7: Effect 追踪到 SG 终点 + [SG:xxx] 标注          R8: Cause 三段式,系统级锁死,同 FM 同 Cause          R9: Effect 四级链 L1→L5,不跳层,元件名具体化          R10: MSR 仅用 TSR 已声明机制;无 TSR→DC=N/A, D=10, M=10

十条规则压缩后不到 1KB 上下文开销,但能避免大量格式违规。

4.3 大文件预消化——两级压缩法(97% 压缩比验证有效)

当输入文件超过 100KB 时,不要直接把原文灌给 Agent。用两级压缩:

第一级——方法论文档→模板映射:把指南/Handbook 等长文档按模板页逐页提取方法核心,输出每个模板页”做什么、参考哪条标准”的精简版。99KB 的指南可以压缩到 ~4.5KB。

第二级——架构文档→结构化提取:按子功能拆解架构,逐路径提取触发信号、数据流、安全机制。209KB 的架构可以压缩到 ~5.4KB。

Agent 用摘要工作,只在需要核验某个具体接口的时序或信号名时,才用 read_file(offset, limit) 回读原始文件的具体小节。

4.4 大任务分批 delegate——不要一次喂太多

如果 FMEA 全量有 40+ 接口 300+ 行,不要一次 delegate。按元件/子系统拆成 3~4 批,每批 10~13 接口。每批给 Agent 只发它负责的那段——不给全量 FM 列表,不灌全量架构。

真实验证数据:46 接口 350 行拆 4 批,每批耗时 319~452s,全部在 600s 超时内完成。如果一次 delegate 全部 46 接口,必超时。

──────────────────────────────────────────────────

五、B.1a 活动——FMEA 里最被低估的一步

B.1a 在活动卡里就一段话,但它决定了整个 FMEA 的分析边界。它的本质不是”做分析”,而是”锁基础”。

5.1 B.1a 到底在干什么

一句话:把架构里每个输出和通信接口找出来,逐条确定——这个接口是什么类型(Cat 1~7)、信号从哪来到哪去、功能是什么。

产出就一张表。每行一个接口:

IF#

接口名称

Cat

方向

源端 → 目标端

功能描述

IF01

3V3_OUT

1 (Power)

输出

PMIC → MCU/OSD

3.3V 主供电,额定 500mA

IF02

SPI_CSIH

4 (Comm)

TX

MCU → OSD IC

图标位图数据和寄存器配置命令

IF08

LVDS_A

6 (Image)

输出

TDDI IC → TFT_LCD

四通道 LVDS 仪表显示画面

5.2 B.1a 为什么必须设一个确认点——不设会出什么后果

B.1a 之后用户必须确认才能进 B.2。这不是流程繁琐——是代价计算。接口分类如果出错,后面 300+ 条 FMEA 行的每一条都会歪。

真实教训:TFT_Fail 归属归错了——归给了 TFT_LCD 而不是 TDDI IC。这个错误如果带到 B.2,所有 TFT_Fail 相关的 16 条 FMEA 行的 Cause 和 Effect 全部要返工。

B.1a 阶段改一行分类表只要 30 秒。B.2 阶段改同样一个错误要重写 16 行。

5.3 B.1a 不做什么

有一个误区是把 B.1a 当成”预先分析”步骤——给它加上 Downstream Impact 列、预判 Effect 链、预分配 S 值。

B.1a 只做三件事:

·接口分类(Cat 1~7)

·接口方向锁定(源端 → 目标端)

·功能描述

不做 Effect 推导,不做 S 值分配,不做影响链路预判。这些是 B.2 的工作。

理由很直接——B.1a 的数据基础只是架构图。你需要看到完整的失效模式和 Cause 才能准确判断 Effect。就跟你不可能只看医院平面图就诊断病情一样——你还需要检验报告。

5.4 不确定怎么办——列出并逐个向用户询问,绝不瞎猜

B.1a 分类时对接口属性不确定的——方向、Cat 编号、信号归属、源端目标端——逐条列出提交用户确认。不要猜。猜错一个信号归属就是 16 行返工。猜对是侥幸,猜错是常态。

常见的需要确认项:信号名相同但出现在多个元件上的接口(LVDS 出现在 TDDI 和 TFT 两端——源端是谁?)、信号名暗示方向但实际方向相反(DSI_INT 看起来是 Des 中断输出,实际可能是 MCU 触发的输入)、通信总线是同一条物理链路的透传还是两条独立总线。

──────────────────────────────────────────────────

六、活动卡体系——三角色怎么分工

FMEA & FMEA-MSR 流水线由三个角色、四张活动卡覆盖全链路。下面的描述不绑定具体项目,任何 ISO 26262 系统级安全分析活动都适用这套分工。

6.1 Engineer 活动卡——产出分析

Engineer 是唯一产出分析内容的角色。它的活动卡直接定义了 B.1a(接口分类)和 B.2(FMEA 分析)的执行流程。

B.1a 段规定了:

·扫描架构所有要素的输出和通信接口

·逐接口判定类型(Cat 1 Power / Cat 2 GPIO / Cat 3 Analog / Cat 4 Communication / Cat 5 PWM / Cat 6 Image Stream / Cat 7 Oscillator)

·确定 P1/P2 归属(P1 = 有安全手册的 IC,P2 = 无安全手册的元件)

·为每个接口补充功能描述(信号名自描述的简写,有歧义的必须完整描述)

·对 Cat 4 通信接口执行双向分类(TX + RX 各一行)

·暂停,提交确认——不继续 B.2

B.2 段规定了:

·按 AIAG & VDA 7-Step 方法论执行完整分析

·读取 B.1a 确认表,锁定接口分类和功能描述

·P1 接口从安全手册取 FM,P2 接口从标准源取 FM

·逐接口生成 FMEA + MSR 合并行(FMEA 段在前,MSR 段在后)

·遵守 R1~R11 全部强制规则

6.2 Manager 活动卡——VR 技术审查

Manager 不产出内容,只审查 Engineer 的交付物。VR 活动卡的核心是检查清单——逐项对照标准要求和活动卡规则。

FMEA 的 VR 检查项包括但不限于:

·范围完整性——架构中所有要素是否全部覆盖(R1)

·接口方向——是否排除了输入接口(R2)

·FM 来源合法性——P1 是否引用了安全手册、P2 是否使用了标准源(R3)

·表格结构——FMEA 和 MSR 是否在同一行、DC 是否在 MSR 段(R4)

·S 值判定——是否按 FSR→违背类型→Table D1 五级映射、是否存在二值化(R5)

·DC 值来源——是否标注了 Annex D 依据或安全手册章节(R6)

·Effect 完整性——是否追踪到 SG 终点并标注 [SG:xxx](R7)

·Cause 一致性——同 FM 是否同 Cause、三段式是否完整、系统级锁死是否遵守、传递链路与 FM 物理逻辑是否一致(R8)

·Effect 四级链——是否逐级推导不跳层、元件名是否具体化(R9)

·MSR 机制来源——是否全部来自 TSR 已声明机制、无 TSR 是否标记(R10)

Manager 返回 VR 报告:(通过)/ ⚠️(Flag)/ (不通过)。不通过项必须修复后重新 VR。

6.3 Head 活动卡——CR 认可评审与调度

Head 是总控。它做三件事:

·调度——将任务分派给 Engineer 和 Manager

·汇总——将 VR 结果上报用户

·CR 认可评审——在 VR 通过后、交付前,做最后一道技术审查

Head 的 CR 检查项侧重在交付物的完整性和自洽性:

·文件结构是否完整(Planning → Structure → Function → Per-Element → Summary 五段齐全)

·Summary 自检计数是否与实际一致(FMEA 条目数 = MSR 条目数 = grep 出来的行数)

·上下游一致性——输入需求到输出满足没有矛盾

·假设是否明确陈述

·AP 分布和 SG 覆盖矩阵是否合理

Head 不亲自修改任何产出文件。CR 发现的问题列成”不符合项清单”→ 派回 Engineer 修改 → Manager VR 复查 → 循环到通过。

──────────────────────────────────────────────────

七、这些技巧的通用性边界

七个技巧全部设计为项目无关——但有一条前提:你走的是 ISO 26262 系统级 FMEA(AIAG & VDA 7-Step 方法论),且你的分析对象是嵌入式系统的硬件-软件接口边界。

如果你的分析不涉及通信接口(全部是纯机械结构),Cat 4 双向技巧不适用——但 Cat 4 本身就不在你的分类表里。如果你的元件全有安全手册(全是 P1),P1/P2 分级技巧退化为”P1 全覆盖”,其他技巧完整保留。如果你的 FMEA 规模很小(10 个以内接口),分批技巧不触发——不需要分。

这些技巧不是”必须全部照做”的绝对规则——是在你遇到对应问题时可以立刻用的解法。每一条背后都有一到两次翻车记录,翻车的项目不同、架构不同、问题本质相同。

──────────────────────────────────────────────────

八、总结

六个实操技巧——FM 怎么识别(三阶梯 + 同类别一致性 + Cat 4 双向)、Cause 怎么写(三段式 + 系统级锁死 + 物理一致性 + 查表去重)、Effect 怎么推(四级链 + SG 三态 + 元件具体化)、上下文怎么控(P1/P2 预判定 + 规则预注入 + 两级预消化 + 分批 delegate)、B.1a 的本质(锁基础不锁分析 + 不确定就问 + 不过度复杂化)、三角色活动卡体系(Engineer 产出 → Manager VR → Head CR 全链条)。

这些技巧不依赖具体项目架构——7 类接口、P1/P2 分级、三段式 Cause、四级 Effect 链、四卡流程,换了项目这些结构不变。

────────────────────────────────────────

© 2026 本文档内容受知识产权保护,未经作者许可,严禁以任何形式转载、复制或用于商业用途。