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

技能公证锁 liyixuan201211/dsh-skillnotary

DeepSeek Harness
liyixuan20121149 天前有提交已提供中文文档扫描:无法判定

安装前锁定技能权限,改动后立即告警

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

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

自动兼容检查未通过:缺少 main/exports/bin 入口声明。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add liyixuan201211/dsh-skillnotary
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · market
装得上吗
本站已在 dsh 0.2.1-rc.5 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 49 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装

缺少 main/exports/bin 入口声明

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包dsh-skillnotary(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明

源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/13 15:40:17

安全扫描自动 · 静态分析源码
v2.7.0
⚪ 扫描:无法判定尚无人工评估
展开查看扫描说明与证据 ↓

已尝试扫描但取不到可分析的源码:仓库或包不存在、已删除,或为非 JS/TS 实现、未随包发布源码。无法判定,不代表安全。

  • · 包内无可扫 JS
  • · TS 源码(可能为非 JS 实现或未发布源码),无法判定
扫描于 2026/11/4(0 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库

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

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 安装前锁定技能权限
  • 校验技能能力
  • 改动后即时告警

DSH 插件:锁定、校验并管控 AI 智能体技能。安装前就告诉你技能能做什么——以及它在审核后悄悄多出能力时提醒你。不带任何启动时加载的代码。

README

由 DeepSeek 最新模型翻译生成
dsh-skillnotary 一个 DSH 插件,用于锁定你的 agent 的 skill 被允许做什么——并在发生变化时告诉你。 一个 agent skill 是一个包含 SKILL.md 的文件夹,你的 agent 会加载并遵循它。它通常包含可运行的 shell、脚本和 MCP 配置:未经审查的代码,拥有工具访问权限,没有任何锁定,悄无声息地变化着。 大多数 skill 安全工具回答的是“这个 skill 现在危险吗?” skillnotary 回答的是“这还是我批准的那个 skill 吗——而且它是否仍然只被允许做它当初做的事?” 这是一个不同的问题,而正是这个问题能捕捉到在你的审查之后发生的变化。 dsh plugin --profile web add github:liyixuan201211/dsh-skillnotary 中文:安装、更新、审查 agent skill 或 DSH 插件之前,先锁定它、审计它的能力,并在它被上游改动时发现。多数工具回答“这个 skill 现在危不危险”,本插件回答的是“它还是我批准的那个吗,还只被允许做当初那件事吗”。 它改变了什么 安装后,agent 会遵循 skills/skillnotary/SKILL.md:在添加或更新 skill 之前,它会运行 skillnotary audit(它能做什么?
展开完整文档(README 剩余 1 节)
dsh-skillnotary

一个 DSH 插件,用于锁定你的 agent 的 skill 被允许做什么——并在发生变化时告诉你。

一个 agent skill 是一个包含 SKILL.md 的文件夹,你的 agent 会加载并遵循它。它通常包含可运行的 shell、脚本和 MCP 配置:未经审查的代码,拥有工具访问权限,没有任何锁定,悄无声息地变化着。

大多数 skill 安全工具回答的是“这个 skill 现在危险吗?”
skillnotary 回答的是“这还是我批准的那个 skill 吗——而且它是否仍然只被允许做它当初做的事?” 这是一个不同的问题,而正是这个问题能捕捉到在你的审查之后发生的变化。

dsh plugin --profile web add github:liyixuan201211/dsh-skillnotary

中文:安装、更新、审查 agent skill 或 DSH 插件之前,先锁定它、审计它的能力,并在它被上游改动时发现。多数工具回答“这个 skill 现在危不危险”,本插件回答的是“它还是我批准的那个吗,还只被允许做当初那件事吗”。

它改变了什么

安装后,agent 会遵循 skills/skillnotary/SKILL.md:在添加或更新 skill 之前,它会运行 skillnotary audit(它能做什么?)、verify(它是否是被批准的那个?)和 policy(它在这里被允许吗?)——并报告 critical/high 级别的发现,而不是悄悄安装。

它附带两个 skill:

- skills/skillnotary/ —— 上述审查循环,用于你采纳或更新某样东西的那一刻。
- skills/skillnotary-drift-watch/ —— 用于那一刻之后:它通过 DSH 的调度工具设置一个周期性的 verify,这样一旦你不再关注后发生变化,skill 就会被注意到,而不是事后才被发现。

它存在的意义所在的那一刻:

$ skillnotary verify
✗ 2 drift(s) detected:
✗ release-notes [integrity-changed] content digest changed: e4qHXFFicS -> Cj7IuwNp3Gb
✗ release-notes [capabilities-changed] capabilities changed: [exec] -> [agent.spawn,exec]

一个哈希告诉你“有东西变了”。第二行告诉你,这个 skill 获得了生成更多 agent 的能力。你可以离线自行复现:

git clone https://github.com/liyixuan201211/skillnotary
cd skillnotary && bash demo/run.sh

安装

this plugin
dsh plugin --profile web add github:liyixuan201211/dsh-skillnotary

the tool it drives (not on npm yet; run it from git today)
npx --yes github:liyixuan201211/skillnotary --help

如果你愿意,可以固定到某个提交:

dsh plugin --profile web add github:liyixuan201211/dsh-skillnotary#

本插件不附带任何启动时代码

cordis.patch.yml 是一个空补丁,这是有意为之:

- 启动时的 insert 会在 DSH 进程内、针对每个 profile、以你的完整权限运行代码——一个扩大启动图的安插件本身就是攻击面;
- 一个糟糕的 insert 可能拖垮整个启动层(~/.dsh/cordis.patch.yml 对此带有明确警告),而发布可能做到这一点的东西是不负责任的;
- 该 skill 不需要任何权限——它要求 agent 通过普通的 shell 工具运行 npx skillnotary …,在那里你可以看到并批准每一条命令。
如果你是在安装前审查这个插件:cordis.patch.yml 就是全部内容,其中没有任何东西会执行。

它会审计自身

这两个技能都会像其他任何技能一样被 skillnotary 检查,并且两者都声明了 allowed-tools: Bash,因为它们确实会要求 agent 运行命令。有两个发现被保留下来,我们选择保留它们,而不是去规避它们:

skillnotary MEDIUM R007 Runtime package installation (SKILL.md:45)
npx --yes github:liyixuan201211/skillnotary --help
skillnotary-drift-watch MEDIUM R007 Runtime package installation (SKILL.md:23)
sn() { npx --yes github:liyixuan201211/skillnotary "$@"; }

· 4 finding(s) suppressed (config.ignore matched R001:reference/; config.ignore matched R007:reference/) ✓ no findings at or above "high"

npx 确实是运行时包安装。压制它才是更不诚实的做法,而 medium 低于默认的 maxSeverity: high,所以 CI 门禁仍然通过。

被压制的发现属于同一类误报,而且出现在唯一无法避免的地方:reference/capabilities.md 和 reference/workflow.md 引用命令是为了记录它们,而能力表必须列出检测器要查找的字符串。因此 skillnotary.config.json 豁免了 reference/——按规则和按路径豁免,绝不豁免整个文件:

{ "version": 1,
"ignore": ["R001:reference/", "R007:reference/"],
"allowInlineSuppressions": false }

作用域是关键:R001 只在 reference/ 内被静默,因此入口点 SKILL.md 真正行使的能力仍然会被报告。

用一张表说明 skillnotary 做什么

| 支柱 | 命令 | 你能得到什么 |
| 锁定 | lock | skills.lock:内容摘要、解析后的提交,以及能力集 |
| 验证 | verify | 字节和*能力与你批准的内容发生漂移 |
| 证明 | keygen / sign | 基于 DSSE 信封与 in-toto 声明的 ed25519 |
| 治理 | policy | 按技能允许/拒绝、按能力门禁、严重性阈值 |
| 修复 | fix | 将技能实际需要的 allowed-tools 写入其 SKILL.md |
| 安装 | apply | 将锁定的技能复制到 harness 目录,并重新检查每个摘要 |
| 门禁 | ci | 将以上所有内容作为单个 CI 步骤 |

零运行时依赖;TypeScript 无需构建步骤(Node ≥ 23.6)。

诚实的局限

- 检测是上下文作用域的正则表达式,而不是沙箱。有针对性的混淆可以绕过它;一份干净的报告意味着“没有已知信号”,而不是“安全”。
- 只扫描每个文件的开头(每个文件 1 MB,每个技能 64 MB);当发生截断时,规则 R025 会说明这一点,而不是隐藏它。
- 证明是 DSSE + in-toto,但这不是 Sigstore——没有无密钥/OIDC,没有透明度日志。
- 锁文件固定了一个技能;它不会沙箱化你的 agent 运行该技能时它所做的事情。

链接
- skillnotary — 该工具:
- 对该工具本身的安全审计(8 项发现,均已修复):

- 插件市场:

许可证

MIT
预览分享卡片长什么样 ↓liyixuan201211/dsh-skillnotary
分享 · DeepSeek Harness Hub
liyixuan201211/dsh-skillnotary

安装前锁定技能权限,改动后立即告警

这是你的仓库?认领条目

回到顶部