对照引用规范检查规则包并提示差异
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/9 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add PerryLink/dsh-rulefile-check该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · tool
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 26 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(unknown · 2026/11/3) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件
查看扫描证据(共 1 处,展示前 1 条)
- 读取本地文件samples/quickstart/run.mjs:7
const material = await readFile(join(here, 'input', "RF-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给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 核对规则包引用规范
- 提示条款差异
- 仅提示差异不下结论
规则库自身核对:依据本插件家族的条款引用纪律(自定纪律,非国家标准)、本插件家族的检查引擎契约(自定纪律,非国家标准)。仅提示差异,不作出定性结论。
README
由 DeepSeek 最新模型翻译生成dsh-rulefile-check — 对照引用规范与严重度上限,对规则包做自检
dsh-rulefile-check 读取一个规则包——包头部加上每条规则一行——然后对照它所属插件家族强制执行的引用规范检查这个包:每条规则 id 在包内唯一,两个依据字段都填好,没有摘录短于最小长度,每个来源都写成 http(s) 链接,依据类型为 derived-from-principle 或 institutional-configuration 的规则必须带严重度,检查类型是引擎支持的那几种,包头部声明了名称、插件和版本。
它能回答什么
| 你问 | 它回答什么 |
| 同一个规则 id 出现在包里两条规则上。 | RF-001 报出重复的 id,因为重复会让 issue.id 指向两条不同的规则,命中结果再也追不回去。比较时忽略空白。它一次只能看一个包:不会拿两个包互相比,也不会去登记册里查任何东西。 |
| 某条规则只带了 document,对条款只字未提。 | RF-002 检查两个依据字段里至少填了一个,所以 document 存在的规则能通过。它不判断引用的条款是否真的存在,也不判断它和规则有没有关系。 |
| 摘录是一句对条款的描述,而不是原文引用。 | RF-003 要求摘录存在,且至少八个字符。
展开完整文档(README 剩余 1 节)
dsh-rulefile-check — 对照引用规范与严重度上限,对规则包做自检
dsh-rulefile-check 读取一个规则包——包头部加上每条规则一行——然后对照它所属插件家族强制执行的引用规范检查这个包:每条规则 id 在包内唯一,两个依据字段都填好,没有摘录短于最小长度,每个来源都写成 http(s) 链接,依据类型为 derived-from-principle 或 institutional-configuration 的规则必须带严重度,检查类型是引擎支持的那几种,包头部声明了名称、插件和版本。
它能回答什么
| 你问 | 它回答什么 |
| 同一个规则 id 出现在包里两条规则上。 | RF-001 报出重复的 id,因为重复会让 issue.id 指向两条不同的规则,命中结果再也追不回去。比较时忽略空白。它一次只能看一个包:不会拿两个包互相比,也不会去登记册里查任何东西。 |
| 某条规则只带了 document,对条款只字未提。 | RF-002 检查两个依据字段里至少填了一个,所以 document 存在的规则能通过。它不判断引用的条款是否真的存在,也不判断它和规则有没有关系。 |
| 摘录是一句对条款的描述,而不是原文引用。 | RF-003 要求摘录存在,且至少八个字符。长度是必要条件,不是充分条件:二十个字符的描述仍然不是引用,这条规则也分不出来——它不会拿摘录和原条款比对。 |
| 来源写的是 某某网站,而不是链接。 | RF-004 会报出来,因为来源字段必须看起来像 http(s) 链接。它只检查形式:不访问链接,不告诉你链接能不能用,也不告诉你页面里是否真有被引用的条款。 |
| 一条从原则推导出来的规则,被归为 error。 | RF-005 确认依据类型为 derived-from-principle 或 institutional-configuration 的规则到底有没有写明严重度。这个严重度是否真的没超过上限,由加载器负责,它会用 strongest permitted severity 直接拒掉这样的包;这项检查只管字段在不在,替代不了加载器。 |
| 规则库写出的 check.kind 引擎不认识——它有没有声明自己的 packName 和 version? | RF-006 会报告未知的 check.kind,因为这样的规则会被静默跳过、不执行。它支持的种类列表出厂时是空的,因为有哪些种类取决于引擎版本,所以未配置的规则库会把这条规则放进 skipped,而不是让它通过;它只拿你提供的列表做比对。RF-007 会一起检查头部里的 packName、plugin 和 version,因为缺了它们,你就无法判断一个规则库属于哪个插件,也无法在替换时判断是哪个修订版。两条规则都不验证声明的值是否和实际使用的插件一致。 |
遵循的标准
本规则库不引用任何公开标准:每条规则的依据都是本插件家族自己给自己定的引用纪律、它的引擎契约和规则库契约,所以下面这些条目列出的是家族内部契约,而不是任何法规或国家标准。
| 文档 | 编号 | 引用它的规则 |
| 本插件家族的条款引用纪律(自定纪律,非国家标准) | 无编号(本规则库自定) | RF-001, RF-002, RF-003, RF-004, RF-005 |
| 本插件家族的检查引擎契约(自定纪律,非国家标准) | 无编号(本规则库自定) | RF-006 |
| 本插件家族的规则库契约(自定纪律,非国家标准) | 无编号(本规则库自定) | RF-007 |
边界: 本插件检查的是规则库,看它是否符合本插件家族执行的引用纪律——规则 id 唯一、每个依据字段都填了、摘录有实际长度、来源是链接、派生或本地配置的依据带有严重级别、检查种类是引擎支持的那种,以及规则库声明了自己的名称、插件和版本。
⚠️ 它检查的是形式,不是内容——而且它自己就这么说
被检查的纪律是自定的,不是国家标准。「摘录必须是逐字引用」和「由原则派生的检查不得为 error」是本插件家族在 shared/ruleset.ts 里执行的规则;它们的依据是知识诚实这一普遍原则——绝不把描述包装成引用,绝不把推断包装成要求——而不是任何法规或标准。每条规则的 basis 都明确这么说,所以这里每条规则都是 warn 或 info。
它无法判断引用是否恰当。 它检查字段是否填了、摘录是否够长、来源看起来像不像链接、严重级别是否写明。一条引用了真实但无关条款的规则,它会照样放行——这是形式检查的已知局限,也是为什么自动检查永远替代不了人工通读。
有两条规则值得说明。RF-003 的八个字符下限,是账本一侧对加载时守卫的呼应——但长度是必要条件,不是充分条件:二十个字符的描述仍然不是引用,而本插件分辨不出区别。RF-005 只能确认严重级别字段存在:某个 severity 是否真的遵守上限,由加载器强制校验:一旦违规,加载器直接拒绝整个规则包,并给出 strongest permitted severity。RF-006 的 kind 词表出厂时是空的,因为引擎支持哪些 kind 取决于引擎版本 —— 把本插件自己的清单写死,就意味着引擎每新增一种 kind,都要回来改这个插件。
兼容性
| 层面 | 状态 |
| Harness | Peer 范围 >=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 |
它做什么
注册 rulefile_check 工具。它读取一份规则清单 —— 规则包头加每条规则一行 —— 套用带版本的规则包,然后返回报告。
| 规则 | 检查项 | 严重级别 | 依据 |
| RF-001 | 规则 id 唯一 | warn | 自我约束 |
| RF-002 | 依据字段齐全 | warn | 自我约束 |
| RF-003 | 摘录有实际长度 | warn | 自我约束 |
| RF-004 | 来源是链接 | warn | 自我约束 |
| RF-005 | 派生依据带严重级别 | warn | 自我约束 |
| RF-006 | 检查类型受支持(默认关闭) | warn | 引擎契约 |
| RF-007 | 规则包声明了名称、插件和版本 | warn | 规则包契约 |
安装
dsh plugin --profile <name> add dsh-rulefile-check
dsh --profile <name> --dump-config | grep 'dsh-rulefile-check'
配置
| 键 | 类型 | 默认值 | 说明 |
| rulesFile | string | rules/rulefile-check.yaml | 规则包路径,相对于包根目录 |
| disabledRules | string[] | [] | 要停止运行的规则 id;每个都会出现在 skipped 里 |
| onlyRules | string[] | [] | 只运行这些规则 id;留空则运行全部规则 |
| skipNotes | string | "" | 追加到每条 skipped 原因后面的备注 |
| timeoutMs | number | 120000 | 协作式工具超时预算 |
几个值得了解的规则级参数:
- RF-003 minLength —— 摘录长度下限,默认八个字符(与加载器用的数字一致)。
- RF-004 pattern —— 来源的形态,默认 ^https?://[^\s]+$。
- RF-006 values —— 你的引擎支持的检查类型。 留空表示该规则不运行;请从引擎的分发表里填,而不是从本插件里填。
素材格式
工具接受 JSON 或 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' } 列名匹配不区分大小写,并忽略空格、下划线和连字符;清单自身的列名会保留,所以每条发现都会指出它读取的是哪一列。
规则来源
规则数据放在 rules/rulefile-check.yaml。文件头说明了它检查的这套纪律来自本家族自身,而不是某个标准,依据是知识诚实这一普遍原则。加载时的守卫仍然要求每条规则都有 document、clause、excerpt 和 source,也仍然禁止把源自原则的检查或本地配置的检查设为 error。
故障排查
- RF-006 从不运行。 它的词表是空的。把它填成你的引擎实际支持的检查类型;插件不会硬编码自己的列表。
- RF-005 放行了一个包,加载器随后却拒绝了它。 这是预期行为:RF-005 只检查 severity 字段是否存在,而加载器自己执行上限。加载器的报错会指出违规的规则。
- RF-003 放行了一段我知道是改写的摘录。 长度检测不出这一点。只有人工对照原文才能发现。
- RF-004 放行了一个 404 的链接。 这项检查从不抓取 URL,只验证链接的形状。
- 插件装上了,工具却始终不出现。 检查 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-rulefile-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, 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
插件是纯数据的:src/model.ts 声明表结构,共享套件提供读取器和检查引擎,规则包声明每一项检查。
许可证
Apache License 2.0 © 2026 dsh-rulefile-check contributors.预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
PerryLink/dsh-rulefile-check
对照引用规范检查规则包并提示差异
相关插件 · 工具 / 效率
破甲管控台kingcharleslzy-ai/dsh-purge
dsh-purge Community · DeepSeek Harness 社区维护版:宿主兼容、状态诊断、提示词管理、更新与本机备份回滚。基于小杨 / YuJunZhiXue 的 dsh-purge。
★ 4,330已汉化DeepSeek 客户端
74.5
网文长卷lingfengQAQ/webnovel-writer
基于 Claude Code 的长篇网文辅助创作系统,解决 AI 写作中的「遗忘」和「幻觉」问题,支持 200…
★ 7,826已汉化DSH
72.2
花束设计alchaincyf/huashu-design
一句话生成网页、原型、PPT 与信息图等可交付设计
★ 28,638已汉化DSH
71.7
多智能体协作HKUDS/AutoSwarm
AutoSwarm: Unify Your Agents. Unify Your Context (Codex · Claude Code · DeepSeek Harness · Muse · Grok · WorkBuddy· nanobot · and more)
★ 2,349已汉化DSH
71.6
Vox 拼贴视频生成Alisa0808/vox-director
🎬 Vox Director拼贴动效导演
★ 2,129已汉化DSH
71.4
Agent 演化引擎Q00/ouroboros
智能体 OS:智能体自己变聪明,我们只守住底线:面试准入、分阶段评估、带预算的进化循环。MCP 服务器,14 种运行时:Claude Code、Codex CLI、Gemini CLI、OpenCode、Copilot、Kiro 等。
★ 6,311已汉化DSH
71.4
这是你的仓库?认领条目