dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
参照公开的 FMEA 方法标准,核对 FMEA 分析表的要素齐备性,以及严重度、发生度、探测度与风险顺序数之间的算术一致性。只报告不一致之处,不评价各项评分数值是否恰当。
English · 简体中文 · Español · Português · हिन्दी
dsh-fmea-table-check reads one FMEA worksheet — rows keyed by the sheet's own column names, in Chinese or English — and checks in it what a sheet can be held to mechanically: that the analysis chain is recorded, that the severity, occurrence and detection scores are operable numbers, that the risk priority number equals their product, that a high-risk row carries an action with an owner and a due date, that action statuses come from your own vocabulary, and that no template placeholder survives in the failure mode.
dsh plugin --profile <name> add dsh-fmea-table-check
dsh --profile <name> --dump-config | grep 'dsh-fmea-table-check'*Workflow overview: document → rule pack → findings. The examples below use the real command surface.*
The table below is the example set: the first row is the detailed walkthrough, the remaining rows are short cases.
Tool fmea_table_check
Input
~~~json {"rows":[{"失效模式":"密封面泄漏","严重度":"8","频度":"4","探测度":"3","风险优先数":"100"}]} ~~~
Output
~~~json { "id": "dsh-fmea-table-check.FM-003.de09b5a6", "ruleId": "FM-003", "severity": "warn", "locator": { "field": "rpn", "row": 1 }, "found": "第 1 行「rpn」填报 100,而 8 × 4 × 3 = 96", "expected": "「rpn」应等于 severity × occurrence × detection", "fix": "核对是否抄错或漏改;本条只做算术核对,不判断各因子是否正确" } ~~~
*Observed from tests/fixtures/FM-003/FM-003-unsafe.json (cases.json expects FM-003 count 1); run via lib/index.mjs rules/fmea-table-check.yaml*
You ask · What it answers The RPN cell does not equal severity × occurrence × detection — is that caught? · Yes. FM-003 recomputes rpn from severity × occurrence × detection with a tolerance of 0 and reports the row whose stored value differs. It runs only when all four cells hold parseable numbers; if the occurrence score is not a number the rule reports skipped rather than a pass. A worksheet built on the AIAG-VDA handbook scores with AP instead of RPN, so repoint resultField and factorFields, or disable the rule. The severity cell holds 高 instead of a score. What happens? · FM-002 requires severity to be an operable positive number and reports the row when it is not. Its check names the severity field only, so occurrence and detection need the same rule added with a different field; it sets no score range, so it does not enforce a scale from 1 to 10 and does not judge whether a score is appropriate. A score it cannot parse also sends FM-003 to skipped, because the product cannot be recomputed. A row recommends an action, but the owner and the due date are blank. · FM-005 runs on every row whose recommended-action cell is filled and requires both owner and dueAt; it reports the row missing either one. Those are the canonical names after alias resolution, so a sheet with other column headers needs the alias in the column mapping or requiredFields adjusted. It checks that the two cells are filled — not that the date is realistic or that the owner has accepted it. Rows with an empty action cell are FM-004's business. Our worksheet never says which product or process it is analysing. · FM-007 reads the sheet header's item and reports it when the analysis subject is missing: an FMEA is carried out for a specific product or process, and without it the conclusions cannot be traced back or matched to a scoring table. It is a presence check — an analysis subject that is filled in but wrong is not reported. If your sheets must also name the method used, add method to its fields. Some rows still read 待填 or XXX in the failure-mode column, and other rows have nothing there at all. · FM-008 reports a row whose failure-mode cell still contains one of the pack's placeholder terms (【, 】, {{, }}, XXX, xxx, 待填, 待补充, TBD, todo, 示例), because a sheet copied from a template reads as a finished analysis; it reads the failure-mode column only, and terms follows your template. FM-001 reports a row where failure mode, effect and cause are all blank, but it only requires one of the three to be filled — a cell holding 待填 satisfies FM-001 and is caught by FM-008 instead. Neither rule judges whether the failure modes are complete or the consequences analysed far enough. The report lists FM-004 and FM-006 as skipped. Is something wrong? · No. Both ship unconfigured and the pack reports that instead of passing silently. FM-004's threshold is 0, which reads as not configured, so no row counts as high-risk until you set your own risk criterion — for example triggerField: severity with threshold: 9, or triggerField: rpn with threshold: 100. FM-006's values list is empty, so the action-status vocabulary is not checked until you list your own values. Once configured, FM-004 only checks that a high-risk row's action cell is filled — not that the action is effective or feasible — and FM-006 only checks that a status is in the configured list, not that the action was carried out.
Document · Number · Cited by rules 《系统可靠性分析技术 失效模式和影响分析(FMEA)程序》 · GB/T 7826(现行版本号与条号本次未核实) · FM-001, FM-002, FM-003, FM-004, FM-005, FM-006, FM-007, FM-008
Boundary: this plugin checks an FMEA worksheet for what a sheet can be held to mechanically — that the analysis chain is recorded, that the severity / occurrence / detection scores are operable numbers, that the risk priority number equals their product, that a high-risk row carries an action with an owner and a due date, that action statuses come from your vocabulary, and that no template placeholder survives. It does not judge whether the failure modes are complete, whether the consequences are analysed far enough, whether the scores are right, or whether the risk is acceptable. Those are the study team's judgements, and they are where FMEA's value lies.
### ⚠️ Read this before trusting a citation in the report
**Every excerpt in this plugin's rule pack says, in so many words, that the clause text was notobtained. The method's homes are GB/T 7826《系统可靠性分析技术 失效模式和影响分析(FMEA)程序》**,
IEC 60812, and the automotive AIAG-VDA handbook. The verification pass could not retrieve verbatim clause
text from them, so rather than paraphrase a quotation the pack states the gap in the excerpt fielditself and puts the honest reasoning innote. Every rule is thereforewarnorinfo, and a test
asserts that no rule claims a quotation it does not have. **When the texts are in hand, two things must be
done: replace eachexcerptwith the real clause, and raisekindtodirect.**
Two settings are yours. FM-003's RPN arithmetic assumes the S×O×D method; a worksheet built on the
AIAG-VDA handbook uses AP (action priority) instead, so repointresultFieldandfactorFields— or
disable the rule. And FM-004's threshold ships as `0`, meaning "not configured": what counts as high
risk is your risk criterion, and the rule reports that it could not run rather than inventing a number.
Surface · Status Harness · Peer range >=0.1.2-rc.1 =0.2.0-0 =0.2.1-0 =24.0.0 Platforms · All (plain ESM; no native code, no network, no model call) Tool mode · Works in native and ptc; for a workbook of sheets use ptc
Registers the fmea_table_check tool. It reads one worksheet — rows keyed by the sheet's own column names, in Chinese or English — applies a versioned rule pack, and returns a report.
Rule · Check · Severity · Basis kind FM-001 · the failure mode, effect or cause is recorded · warn · principle FM-002 · the severity score is an operable positive number · warn · principle FM-003 · RPN equals severity × occurrence × detection · warn · principle FM-004 · a high-risk row carries a recommended action (off by default) · info · local FM-005 · a row with an action names its owner and due date · warn · principle FM-006 · the action status comes from your vocabulary (off by default) · info · local FM-007 · the sheet names its analysis subject · warn · principle FM-008 · no template placeholder survives in the failure mode · warn · principle
Key · Type · Default · Description rulesFile · string · rules/fmea-table-check.yaml · Rule-pack path, relative to the package root disabledRules · string[] · [] · Rule ids to stop running; each appears in skipped onlyRules · string[] · [] · Run only these rule ids; empty runs every rule skipNotes · string · "" · Note appended to every skipped reason timeoutMs · number · 120000 · Cooperative tool timeout budget
Rule-level parameters worth knowing:
FM-003 resultField / factorFields / tolerance — the RPN arithmetic. Repoint it at an AP column ifyour worksheet follows the AIAG-VDA handbook.
FM-004 triggerField / threshold / requiredField — your high-risk criterion. A threshold of 0means the rule does not run; typical settings are severity at 9, or rpn at 100.
FM-005 conditionField / requiredFields — which fields an action row must carry.FM-006 values — your action-status vocabulary.FM-002 min / max — score bounds, if your scoring table fixes them. The rule sets none by default,because the tables differ between handbooks and analysis types.
The tool accepts JSON or YAML:
item: 某型阀体加工过程
rows:
- { 项目: 某型阀体加工过程, 功能: 在规定压力下保持密封, 失效模式: 密封面泄漏,
失效后果: 介质外泄,影响安全, 严重度: '8', 失效原因: 密封面加工粗糙度超差,
频度: '4', 探测度: '3', 风险优先数: '96', 建议措施: 增加密封面粗糙度在线检测,
责任人: 张工, 完成期限: 2026-06-30, 措施状态: 进行中 }Column names are matched case-insensitively and ignoring spaces, underscores and hyphens, so 严重度 and severity resolve to the same field; the sheet's own column names are kept, so a finding names the column it read. Scores may arrive as strings.
Rule data lives in rules/fmea-table-check.yaml. The pack's header states the citation gap in full, and each rule's note repeats the part that matters for that rule. The load-time guard that normally enforces "an excerpt must be a real quotation of at least eight characters" cannot tell a quotation from a description — so this pack leans on the header, the per-rule notes and a test that asserts every excerpt admits the gap.
risk criterion and your management procedure, and the plugin will not guess them.
resultField andfactorFields, or disable the rule.
deliberately sets no range; add min and max if your scoring table fixes them.
date cannot be tracked.
main resolves to lib/index.mjs andthat pnpm run build produced it; a wrong main makes the loader skip the entry silently.
0.1.x and 0.2.x; ifyour runtime sits outside it, grant an explicit exemption: dsh plugin --profile allow-version dsh-fmea-table-check@0.1.0 --dsh-version --accept-risk
range that predates the 0.2 line. The runtime enforces peer compatibility at install time, so the declared range is the correct one; this is a known upstream issue in dsh-plugin-dev.
pnpm install
pnpm run typecheck # tsc --noEmit
pnpm test # vitest, the shared table-plugin suite plus paired fixtures
pnpm run build # tsdown -> lib/index.mjs + lib/index.d.mts
node ../scripts/sync-shared.mjs dsh-fmea-table-check # refresh src/shared from ../_sharedThe plugin is data-only: src/model.ts declares the table shape, the shared kit supplies the reader and the check engine, and the rule pack declares every check.
This project is part of the DeepSeek Harness plugin family from PerryLink. The roster stays collapsed below so every README keeps a short first screen; expand it to see every row and its status.
Expand all plugins
Plugin · Status dsh-aqua-input-check · dsh-archive-check · dsh-auto-review · dsh-autotier · dsh-bid-ca-precheck · dsh-bid-qual-check · dsh-cert-mcp · dsh-checkpoint-rewind · dsh-click · dsh-composer-history · dsh-contract-stance · dsh-customs-doc-check · dsh-data-quality · dsh-demurrage-ledger · dsh-doublecheck · dsh-drill-script-check · dsh-eia-guide-check · dsh-emergency-plan · dsh-essay-rubric-check · dsh-evidence-check · dsh-export-ctl-check · dsh-fast · dsh-fmea-table-check · dsh-forecast-penalty · dsh-fund-research · dsh-github · dsh-gongwen-flow-check · dsh-gongwen-word-check · dsh-guard-plan-qc · dsh-hazchem-check · dsh-hazplan-check · dsh-hidden-risk-map · dsh-hs-classify · dsh-icd-rule-check · dsh-industry-research · dsh-lawcite-adapter · dsh-laya · dsh-lc-doc-check · dsh-learning-gap-check · dsh-library · dsh-local-ai · dsh-lsp-actions · dsh-mask · dsh-mcp-panel · dsh-medrec-qc · dsh-memento · dsh-nsfc-form-check · dsh-nurse-record-check · dsh-observe · dsh-origin-rvc-check · dsh-ota-review-check · dsh-output-styles · dsh-paper-doc-adapter · dsh-permission-rules · dsh-permit-report-check · dsh-pipeline-check · dsh-pleading-draft · dsh-plugin-doctor · dsh-plugin-guide · dsh-plugin-kit · dsh-plugin-upgrade · dsh-policy-brief-draft · dsh-power-loss-split · dsh-power-ticket-check · dsh-ppap-check · dsh-protest-deadline · dsh-railway-window · dsh-repair-order-qc · dsh-research-report · dsh-review-reply-check · dsh-rulefile-check · dsh-safety-brief-check · dsh-score · dsh-session-sync · dsh-site-log-check · dsh-skill-pack-security · dsh-soe-decision-check · dsh-soilwater-check · dsh-sop-sync-check · dsh-spc-gbt-adapter · dsh-talk · dsh-tender-extract · dsh-tender-matrix · dsh-test-drive · dsh-ticktick · dsh-translate · dsh-warranty-calc · dsh-budget · 🧊 FROZEN — see the repo README dsh-claude-move · 🧊 FROZEN — see the repo README dsh-defend · 🧊 FROZEN — see the repo README dsh-draw · 🧊 FROZEN — see the repo README dsh-reach · 🧊 FROZEN — see the repo README dsh-background-agents · 🚫 RETIRED — see the repo README dsh-session-pin · 🚫 RETIRED — see the repo README dsh-team-rooms · 🚫 RETIRED — see the repo README
Apache License 2.0 © 2026 dsh-fmea-table-check contributors.