🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

HAZOP 工作表核对 PerryLink/dsh-hazplan-check

DeepSeek Harness
PerryLink26 天前有提交已提供中文文档扫描:含敏感能力

逐行检查 HAZOP 工作表字段完整与偏差推导一致性

30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/9 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add PerryLink/dsh-hazplan-check
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · tool
装得上吗
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 26 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
⚠︎ 实装验证未通过(unknown · 2026/11/3) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件
查看扫描证据(共 1 处,展示前 1 条)
  • 读取本地文件
    samples/quickstart/run.mjs:7
    const material = await readFile(join(here, 'input', "HZ-001-unsafe.json"), 'utf8')
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-package-manifest@deepseek-ai/dsh-tools@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 逐行检查字段完整性
  • 核对偏差推导一致性
  • 仅提示差异

HAZOP 分析表核对:依据《危险与可操作性分析(HAZOP分析)应用指南》(GB/T 35320-2017、GB/T 27921-2023)。仅提示差异,不作出定性结论。

README

由 DeepSeek 最新模型翻译生成
dsh-hazplan-check — HAZOP 工作表元素完整性检查与偏差推导一致性检查 dsh-hazplan-check 读取一份 HAZOP 工作表 —— 行以工作表自己的列名为键,中英文皆可,另有一个可选表头写明分析对象 —— 然后检查同一张表的完整性与内部可追溯性:每一行是否填齐了模板要求的字段(默认是 偏差 和 原因),每一行是否记录了它的 节点,引导词 是否来自标准表 1 和表 2,或者来自研究事先声明的清单,每一行是否写明它的偏差来自哪个元素,风险等级 是否来自你自己的风险词表,工作表是否写明了分析对象,以及每个 偏差 是否字面上等于 工艺参数 通过其 引导词 读出来的结果;某项检查因为缺列而跑不起来时,会记入 skipped,而不是悄悄放过。 它能回答什么 | 你问 | 它怎么答 | | 某行记了偏差,原因却空着。这会被报出来吗? | 会。HZ-001 要求填齐每一行必填的字段;出厂时未设置,就回退到条款本身点名的两个字段,偏差 和 原因,所以 原因 空着本身就是一处缺口。它只检查该列是否填了,不检查问题清单是否完整,也不检查原因在技术上是否站得住。 | | 有三行完全没写节点。检查会说什么吗?会评判节点是怎么划分的吗? | HZ-002 会把这些行一起报出来,并列出它们的行号,因为一条记录没有节点,就产不出条款要求的节点清单。
展开完整文档(README 剩余 1 节)
dsh-hazplan-check — HAZOP 工作表元素完整性检查与偏差推导一致性检查

dsh-hazplan-check 读取一份 HAZOP 工作表 —— 行以工作表自己的列名为键,中英文皆可,另有一个可选表头写明分析对象 —— 然后检查同一张表的完整性与内部可追溯性:每一行是否填齐了模板要求的字段(默认是 偏差 和 原因),每一行是否记录了它的 节点,引导词 是否来自标准表 1 和表 2,或者来自研究事先声明的清单,每一行是否写明它的偏差来自哪个元素,风险等级 是否来自你自己的风险词表,工作表是否写明了分析对象,以及每个 偏差 是否字面上等于 工艺参数 通过其 引导词 读出来的结果;某项检查因为缺列而跑不起来时,会记入 skipped,而不是悄悄放过。

它能回答什么

| 你问 | 它怎么答 |
| 某行记了偏差,原因却空着。这会被报出来吗? | 会。HZ-001 要求填齐每一行必填的字段;出厂时未设置,就回退到条款本身点名的两个字段,偏差 和 原因,所以 原因 空着本身就是一处缺口。它只检查该列是否填了,不检查问题清单是否完整,也不检查原因在技术上是否站得住。 |
| 有三行完全没写节点。检查会说什么吗?会评判节点是怎么划分的吗? | HZ-002 会把这些行一起报出来,并列出它们的行号,因为一条记录没有节点,就产不出条款要求的节点清单。它只检查 节点 是否填了;不评判节点粒度是否合适,因为条款 4.2 没给判据,也不判断是否有节点漏了分析。 |
| 我们的研究在 引导词 列里写了「相逆」。这会被标出来吗? | HZ-003 会把它报成清单之外的引导词:标准自己的措辞是「相反」,不是「相逆」,表 1 和表 2 给出的是 无/多/少/伴随/部分/相反/异常 和 早/晚/先/后。这条发现是提示,不是判定,因为研究在分析之前定义并归档的引导词是允许的 —— 这也是该规则定在 warn 的原因。部署方也可以改为声明自己的清单,那样就只有清单之外的词会被报出来。 |
| 偏差 列写的是「无流量」,而 工艺参数 写的是「温度」,引导词 写的是「无」。这会被抓出来吗? | 写下的 偏差 若不包含 工艺参数 通过其 引导词 读出的结果(两种词序都算),HZ-007 就会报出该行;空白和常见分隔符(例如 +、、、/、-、—、的、:)会被忽略,所以「流量无」「流量 + 无」「无流量」都算一致。只有三列都在时它才运行 —— 否则会出现在 skipped 里 —— 命中意味着很可能是复制粘贴留下的痕迹,不代表偏差在技术上错了。 |
| 风险等级 列填的是中,但我们从没配置过风险词表。会返回什么? | HZ-005 把自己报进 skipped,而不是当作通过:标准没有规定风险等级量表,等级只能来自你自己的风险准则,而随附的列表是空的。配置好等级之后,它也只检查取值是否在列表里,不检查评级是否正确,严重级别上限为 info。 |
| 工作表里没有一行写明它分析的是什么单元。这算缺口吗? | HZ-006 只在顶层报一次:没有分析对象,结论就无法追溯到所分析的边界。它依据的表头清单来自资料性附录——只是建议,不是要求——所以规则停在 warn,而 requireHeader: false 可以为确实不带表头的工作表关掉它。 |

遵循的标准

| 文件 | 编号 | 引用它的规则 |
| 《危险与可操作性分析(HAZOP分析)应用指南》 | GB/T 35320-2017 | HZ-001, HZ-002, HZ-003, HZ-004, HZ-005, HZ-006, HZ-007 |
| 《风险管理 风险评估技术》 | GB/T 27921-2023 | HZ-005 |

边界: 这个插件检查一份 HAZOP 工作表能被要求做到什么——每一行都记录模板要求你填的分析内容,每个偏差确实由旁边的工艺参数和引导词推出,风险等级来自你自己的词表,每个节点都有行,建议都带上闭环字段。它不判断原因是否完整、后果是否分析得足够远、防护措施是否充分、风险评级是否正确。这四个判断属于研究团队,也正是 HAZOP 的价值所在。

⚠️ 这里没有任何 error,原因就在条款措辞

GB/T 35320-2017《危险与可操作性分析(HAZOP分析)应用指南》 现行有效(2017-12-29 发布并实施,与 IEC 61882:2001 一致),其条款文本是逐字获取的。

该标准是推荐性标准(编号带「/T」),本包引用的每一条都用「宜」,而不是「应」。 这适用于本包早期版本评为 error 的两条:6.6.4 写的是「每一个危险和可操作性性问题都宜作为单项记录」,6.6.3 开头是「HAZOP 分析输出宜包括:」。推荐性条款撑不起 error 评级,所以这两条规则现在都是 warn,这个插件完全不报 error——与整个系列对待其他推荐性标准的方式一致。有测试钉住这一点,防止后续改动悄悄把某条重新升级。

其余一切都封顶在 warn 或 info,本包记录了三个原因:

1. 附录 A.2——唯一出现列清单的地方——是资料性附录。 它的措辞是「表列的标题可为以下各项」,还补了一句「也可记录其他信息」,并明说「工作表的版面设计各有不同」。没有强制列清单,所以缺列最多只能算建议。
2. 4.2 条没有给出节点粒度的判据。 它说节点的大小「取决于系统的复杂性和危险的严重程度」,后面没有任何定量内容。这个插件不判断节点大小。
3. 标准没有规定风险等级刻度。 6.5 提到风险矩阵有用,把方法留给 IEC 60300-3-9;GB/T 27921-2023 对矩阵的描述同样是资料性的。等级必须来自你自己的风险准则,所以词表出厂时是空的。

包里还有两条诚实说明。引导词词表用的是标准自己的措辞——「相反」,不是口语里的「相逆」——并且把表 1 和表 2 合在一起;自定义引导词不算不合规,因为 6.4.3 允许「只要在分析开始前进行了定义」。还有 SH/T 3240-2025(石油化工 HAZOP 规范,2025-11-01 实施)只核实了它的身份、状态和术语表——没有拿到它的条款正文,所以这个包一条都没引用。

这个插件不做的四个判断:原因是否完整,后果是否分析得够远,防护措施是否充分,风险评级是否正确。

兼容性

| 层面 | 状态 |
| Harness | 对等范围 >=0.1.2-rc.1 <0.2.0 \|\| >=0.2.0-0 <0.3.0——已验证同时接受 0.2.0-rc.2 和 0.2.1-alpha.1。故意不声明 engines.dsh:它没有读取方,也无法拒绝宿主 |
| Node | ^22.19.0 || >=24.0.0 |
| 平台 | 全部(纯 ESM;无原生代码,无网络,无模型调用) |
| 工具模式 | 在 native、ptc 和 both 下都能用;处理多张工作表时用 ptc |

它做什么

注册 hazplan_check 工具。它读取一张工作表——行以工作表自己的列名为键,中文或英文都行——套用带版本的规则包,返回报告。

| 规则 | 检查 | 严重程度 | 依据 |
| HZ-001 | 每个问题单独一行,并带上它的原因 | warn | 6.6.4 |
| HZ-002 | 每个已分析的节点都记录在工作表上 | warn | 6.6.3 |
| HZ-003 | 引导词来自表 1 + 表 2,或事先声明过 | warn | 表1、表2 + 6.4.3 |
| HZ-004 | 该行显示偏差来自哪个要素 | warn | 3.3 + 6.4.3 |
| HZ-005 | 风险等级来自你的风险准则(默认关闭) | info | 6.5 + GB/T 27921 |
| HZ-006 | 工作表写明它的分析对象 | warn | 附录A.2(资料性) |
| HZ-007 | 偏差是用引导词读出的参数 | warn | 6.4.3 |

安装

dsh plugin --profile <name> add dsh-hazplan-check
dsh --profile <name> --dump-config | grep 'dsh-hazplan-check'

配置

| 键 | 类型 | 默认值 | 说明 |
| rulesFile | string | rules/hazplan-check.yaml | 规则包路径,相对于包根目录 |
| disabledRules | string[] | [] | 要停止运行的规则 id;每个都会出现在 skipped 里 |
| onlyRules | string[] | [] | 只运行这些规则 id;为空则运行全部规则 |
| skipNotes | string | "" | 追加到每个 skipped 原因后面的备注 |
| timeoutMs | number | 120000 | 协作式工具超时预算 |

有几个规则级参数值得了解:

- HZ-001 requiredFields —— 每一行都必须填写的列。留空时回退到条款本身点名的组合:[偏差, 原因]。
- HZ-005 riskLevels —— 你的风险词表,例如 [高, 中, 低] 或 [Ⅰ, Ⅱ, Ⅲ, Ⅳ]。留空表示该规则不运行。也可以每次调用时单独传入。
- HZ-003 guideWords —— 你的研究在会议前声明的引导词表,前提是它采用 6.4.3 下的自有做法。留空表示使用标准中的表 1 和表 2。
- HZ-006 requireHeader —— 如果你的表格确实没有主题行,就设为 false。

插件自身的配置也接受 riskLevels 和 guideWords,所以一次部署就能为每次调用统一设定风险词表和已声明的引导词,不必每次都传。

材料格式

工具接受 JSON 或 YAML。行以表格自身的列名作为键;中文名和英文名都可以,所以从商业 HAZOP 工具导出的文件不用改就能加载:

subject: 某装置 HAZOP 分析 revision: V1.0 rows:
- { 节点: 进料单元, 设计意图: 将原料按设计流量送入反应器, 工艺参数: 流量, 引导词: 无,
偏差: 无流量, 原因: 进料泵故障, 后果: 反应器液位下降, 现有安全措施: 液位低报警, 建议措施: 增加进料泵备用泵, 风险等级: 中, 责任人: 张工, 完成期限: 2026-06-30 }
- { Node: N2, Parameter: Temperature, "Guide Word": High, Deviation: High temperature,
Causes: Cooling failure, Consequences: Runaway, Safeguards: High-temp trip }

列名匹配时不区分大小写,并忽略空格、下划线和连字符,所以 Guide Word、guide_word 和 guideword 都指向同一个字段。

HZ-002 会把偏差与「参数 + 引导词」的组合做比较,比较时遍历一组分隔符(, 、+、、、/、-、—、的、:),并覆盖两种词序,所以 流量无、流量 + 无 和 无流量 都能通过。它把不匹配报告为疑似复制粘贴的痕迹 —— 而不是断言偏差在技术上就是错的。

规则来源

规则数据放在 rules/hazplan-check.yaml。每条规则都带有文档、文档编号、源文件自身编号体系下的条款、逐字摘录,以及摘录读取来源的 URL。加载器会强制要求摘录是至少八个字符的真实引用,并且基于一般原则或本地政策的检查永远不能声明为 error。

引用的条款来自 GB/T 35320-2017 —— 3.3、4.2、6.4.3、6.5、6.6.3、6.6.4、表 1 和表 2,以及附录 A.2 —— 再加上 GB/T 27921-2023 附录 B.10.3 中关于风险矩阵的描述。条款文本读取自一份全文转录,其结构与标准的官方元数据相互印证;规则包记录了来源是一份转录。

有四项发现塑造了这个规则包,并记录在它的头部:

1. 附录 A.2 是资料性的,所以它的列清单只是建议,永远不是要求。
2. 第 4.2 条没有给出节点大小的判定标准,所以节点粒度不会自动判定。
3. 标准没有规定风险等级刻度,所以等级由你定,词表出厂时是空的。
4. SH/T 3240-2025 确实存在,但没拿到它的条款正文,所以没有引用其中任何一条 —— 只在包头部记下了它的身份。

完整的条款核验报告,包括查过又被否掉的来源,都在 rules/evidence/clause-verification.md。

疑难解答

- HZ-001、HZ-003 或 HZ-005 报告自己 skipped。 它们的列表是空的。把模板用到的那些填进去。
- HZ-002 在我看着没问题的一行上触发了。 你的表格可能写下了比 参数+引导词 更完整的偏差。规则说的是「很可能是复制粘贴留下的痕迹」;要么把这一列规范化,要么就把它当噪声接受。它从不拦截任何东西。
- HZ-002 什么都没报。 表格里没有同时带上 工艺参数、引导词 和 偏差 这三项 —— 规则会在 skipped 里说明,而不是靠猜。
- 读取器拒绝了一个它以前接受的 worksheet。 它没找到任何已知列名;错误信息里会列出它看到的列。改一个列名,或者把列名加到 src/model.ts 旁边的配置里的 COLUMNS 中。
- 插件装上了,但工具一直不出现。 检查 main 是否指向 lib/index.mjs,以及 pnpm run build 是否生成了它;main 写错会让加载器静默跳过入口。
- dsh plugin add 以不兼容为由拒绝这个包。 peer 范围覆盖 0.1.x 和 0.2.x;如果你的运行时不在这个范围内,显式授予豁免: dsh plugin --profile <name> allow-version dsh-hazplan-check@0.1.0 --dsh-version <runtime> --accept-risk
- check 报告 manifest-peers 失败。 静态检查器比对的是一个硬编码的 peer 范围,它早于 0.2 这一线。运行时会在安装时强制校验 peer 兼容性,所以声明的范围才是正确的;这是 dsh-plugin-dev 里已知的上游问题。

开发

pnpm install
pnpm run typecheck # tsc --noEmit
pnpm test # vitest, paired fixtures per rule
pnpm run build # tsdown -> lib/index.mjs + lib/index.d.mts
node ../scripts/sync-shared.mjs dsh-hazplan-check # refresh src/shared from ../_shared

许可证

Apache License 2.0 © 2026 dsh-hazplan-check contributors。
预览分享卡片长什么样 ↓PerryLink/dsh-hazplan-check
分享 · DeepSeek Harness Hub
PerryLink/dsh-hazplan-check

逐行检查 HAZOP 工作表字段完整与偏差推导一致性

这是你的仓库?认领条目

回到顶部