DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Rulefile Check — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins

dsh-rulefile-check

Rulefile Check

规则库文件自检核对(按条款引用纪律与效力上限核对规则库自身合规,仅提示差异,不作出定性结论)

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add dsh-rulefile-check@0.2.3
README兼容性版本

兼容性与来源证明

Rulefile Check 以 dsh-rulefile-check 发布,当前版本为 0.2.3。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
any
发布来源
npm
Registry 更新时间
2026/10/9

版本

0.2.3stable
2026/10/9
0.2.2stable
2026/10/8
0.2.1stable
2026/10/8
查看其余 2 个版本收起版本
0.2.0stable
2026/10/8
0.1.0stable
2026/10/7

相关插件

正在加载相关插件…

最新版
0.2.3
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
225.2 kB
文件数
20
Surface
any
许可证
Apache-2.0
发布源
npm
GitHub
★ 0
周下载
0
最近提交
2026/10/9
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

README

dsh-rulefile-check — Rule pack self-check against the citation discipline and severity ceilings

DSH Market

dsh-rulefile-check reads one rule pack — the pack header plus one row per rule — and checks that pack against the citation discipline its plugin family enforces: that every rule id is unique within the pack, that both basis fields are filled in, that no excerpt is shorter than the minimum length, that every source is written as an http(s) link, that a rule whose basis kind is derived-from-principle or institutional-configuration carries a severity, that the check kind is one the engine supports, and that the pack header declares its name, plugin and version.

What it looks like

Terminal demo of dsh-rulefile-check: real output over its RF-001 fixture

Real output from this plugin over its own RF-001 test fixture — not a mock-up. The rule pack ships no invented quotations, so a finding names both the clause it applied and the fact that the clause text was not obtained.

What it answers

You askWhat it answers
The same rule id appears on two rules in the pack.RF-001 reports the repeated id, because a duplicate makes issue.id point at two different rules and the hit can no longer be traced back. Comparison ignores whitespace. It can only see one pack at a time: it does not compare two packs with each other or look anything up in a register.
A rule carries only document and says nothing about the clause.RF-002 checks that at least one of the two basis fields is filled in, so a rule whose document is present passes. It does not judge whether the cited clause really exists or whether it relates to the rule.
The excerpt is a one-sentence description of the clause rather than a quotation.RF-003 requires the excerpt to exist and to be at least eight characters long. Length is necessary, not sufficient: a twenty-character description is still not a quotation, and this rule cannot tell the difference — it does not compare the excerpt against the original clause.
The source reads 某某网站 instead of a link.RF-004 reports it, because the source field has to look like an http(s) link. It checks the form only: it does not visit the link, does not tell you whether the link works, and does not tell you whether the page really contains the clause being cited.
A rule derived from a principle is filed as error.RF-005 confirms that a rule whose basis kind is derived-from-principle or institutional-configuration states a severity at all. Whether that severity actually respects the ceiling is enforced by the loader, which rejects such a pack outright with strongest permitted severity; this check only covers the field being present and cannot replace the loader.
The pack writes a check.kind the engine does not know — and does it declare its packName and version?RF-006 reports the unknown check.kind, because such a rule is silently not executed. Its list of supported kinds ships empty, since which kinds exist depends on the engine version, so an unconfigured pack puts that rule in skipped instead of passing it; it only compares against the list you supply. RF-007 checks the header for packName, plugin and version together, because without them you cannot tell which plugin a pack belongs to, or which revision, when you swap it in. Neither rule verifies that the declared values match the plugin actually in use.

Standards it follows

This rule pack cites no public standard: every rule's basis is the plugin family's own self-imposed citation discipline, its engine contract and its pack contract, so the entries below name the family's internal contracts rather than any statute or national standard.

DocumentNumberCited by rules
本插件家族的条款引用纪律(自定纪律,非国家标准)无编号(本规则库自定)RF-001, RF-002, RF-003, RF-004, RF-005
本插件家族的检查引擎契约(自定纪律,非国家标准)无编号(本规则库自定)RF-006
本插件家族的规则库契约(自定纪律,非国家标准)无编号(本规则库自定)RF-007

Boundary: this plugin checks a 规则库 (a rule pack) for the citation discipline this plugin family enforces — that rule ids are unique, that every basis field is present, that an excerpt has real length, that a source is a link, that a derived or locally configured basis carries a severity, that the check kind is one the engine supports, and that the pack declares its name, plugin and version.

⚠️ This checks form, not content — and it says so

The discipline being checked is self-imposed, not a national standard. "An excerpt must be a verbatim quotation" and "a principle-derived check may not be an error" are rules this plugin family enforces in shared/ruleset.ts; their basis is the general principle of intellectual honesty — never dress a description up as a quotation, never dress an inference up as a requirement — not any statute or standard. Every rule's basis says exactly that, which is why every rule here is warn or info.

It cannot tell whether a citation is apt. It checks that fields are filled, that an excerpt is long enough, that a source looks like a link, and that a severity is stated. It will happily pass a rule that cites a real but irrelevant clause — that is the documented limit of a form check, and it is why automated checking never replaces a human read-through.

Two rules deserve a note. RF-003's floor of eight characters is the ledger-side echo of the load-time guard — but length is necessary, not sufficient: a twenty-character description is still not a quotation, and this plugin cannot tell the difference. And RF-005 can only confirm a severity field is present: whether a severity actually respects the ceiling is enforced by the loader, which rejects a violating pack outright with strongest permitted severity. RF-006's kind vocabulary ships empty, because which kinds an engine supports depends on the engine version — hard-coding this family's own list would mean editing this plugin every time the engine gains a kind.

Compatibility

SurfaceStatus
HarnessPeer range >=0.1.2-rc.1 <0.2.0 || >=0.2.0-0 <0.3.0 — verified to accept both 0.2.0-rc.2 and 0.2.1-alpha.1. engines.dsh is deliberately not declared: it has no reader and cannot reject a host
Node`^22.19.0
PlatformsAll (plain ESM; no native code, no network, no model call)
Tool modeWorks in native, ptc and both; for a whole rule pack use ptc

What it does

Registers the rulefile_check tool. It reads one rule inventory — the pack header plus one row per rule — applies a versioned rule pack, and returns a report.

RuleCheckSeverityBasis
RF-001rule ids are uniquewarnself-imposed discipline
RF-002basis fields are presentwarnself-imposed discipline
RF-003the excerpt has real lengthwarnself-imposed discipline
RF-004the source is a linkwarnself-imposed discipline
RF-005a derived basis carries a severitywarnself-imposed discipline
RF-006the check kind is supported (off by default)warnengine contract
RF-007the pack declares name, plugin and versionwarnpack contract

Install

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

Configuration

KeyTypeDefaultDescription
rulesFilestringrules/rulefile-check.yamlRule-pack path, relative to the package root
disabledRulesstring[][]Rule ids to stop running; each appears in skipped
onlyRulesstring[][]Run only these rule ids; empty runs every rule
skipNotesstring""Note appended to every skipped reason
timeoutMsnumber120000Cooperative tool timeout budget

Rule-level parameters worth knowing:

  • RF-003 minLength — the excerpt floor, eight characters by default (the same figure the loader uses).
  • RF-004 pattern — the source shape, ^https?://[^\s]+$ by default.
  • RF-006 values — your engine's supported check kinds. Empty means the rule does not run; fill it from the engine's dispatch table rather than from this plugin.

Material format

The tool accepts JSON or YAML:

packName: 某某规则库
plugin: dsh-rulefile-check
version: '2026.1'
rows:
  - { 规则编号: XX-001, 规则标题: 示例规则标题, 定级: warn,
      依据类型: derived-from-principle, 依据文件: 《某某标准》, 条款号: 第 5.3 条,
      摘录: 该条文本次未取得:核查未获得该标准的逐字原文,本规则库不伪造引文。,
      来源: https://openstd.samr.gov.cn/, 检查类型: presence, 参数: 'field: title' }

Column names are matched case-insensitively and ignoring spaces, underscores and hyphens; the inventory's own column names are kept, so a finding names the column it read.

Rule sources

Rule data lives in rules/rulefile-check.yaml. Its header explains that the discipline it checks is this family's own, not a standard's, and that the basis for it is the general principle of intellectual honesty. The load-time guard still requires a document, clause, excerpt and source per rule, and still forbids a principle-derived or locally configured check from being error.

Troubleshooting

  • RF-006 never runs. Its vocabulary is empty. Fill it with the check kinds your engine actually supports; the plugin will not hard-code its own list.
  • RF-005 passes a pack the loader then rejects. That is expected: RF-005 checks that a severity field is present, while the loader enforces the ceiling itself. The loader's error names the offending rule.
  • RF-003 passes an excerpt I know is a paraphrase. Length cannot detect that. Only a human comparison against the source can.
  • RF-004 passes a link that 404s. The check never fetches the URL; it verifies the shape only.
  • The plugin installs but the tool never appears. Check that main resolves to lib/index.mjs and that pnpm run build produced it; a wrong main makes the loader skip the entry silently.
  • dsh plugin add refuses the package as incompatible. The peer range covers 0.1.x and 0.2.x; if your runtime sits outside it, grant an explicit exemption: dsh plugin --profile <name> allow-version dsh-rulefile-check@0.1.0 --dsh-version <runtime> --accept-risk
  • check reports manifest-peers as failed. The static checker compares against a hard-coded peer 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.

Development

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-rulefile-check   # refresh src/shared from ../_shared

The 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.

License

Apache License 2.0 © 2026 dsh-rulefile-check contributors.

相关插件

继续浏览 developer-tools 分类下经过校验的插件。

Cc Safety Netcc-safety-net编码代理 CLI 钩子——阻止破坏性命令和访问机密文件Remotedsh-remoteDeepSeek Harness 的远程工作助手:连接 SSH(密码/密钥/代理/键盘交互/代理跳转),选择远程工作区,使用 22 个 rw_* 工具操作该工作区(包括 rw_edit/rw_stat/rw_mkdir/rw_remove/rw_move/rw_forward),具备冲突感知的镜像 syFind Plugindsh-find-plugin在代理中查找 DeepSeek Harness 插件——实时搜索 GitHub 上的 dsh-plugin 主题,并按星标数排序。Web App@deepseek-ai/dsh-web-appdsh 浏览器界面捆绑包:位于 dsh-base 之上的 Web 补丁层,加上运行时粘合插件(提供前端 dist、Web 界面提示符、bash 运行时变量和 URL 行)