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

插件安全审查 rogerdigital/dsh-vet

DeepSeek Harnessv0.4.0
rogerdigital45 天前有提交已提供中文文档扫描:含敏感能力

安装前扫描插件权限与供应链风险并评级

31.3/100
综合分
2
GitHub 星标
47
npm 周下载
—/5
用户评分

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-vet
npm 源 · dsh-vet 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么[目录]—
dsh 原生插件 · market
暂无时间戳·判据 →
装得上吗[实装验证]!
实装验证未通过(runtime_never_loaded),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
数据截至 2026/10/28·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 45 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

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

验证判据与等级说明 →

可信度证据

⚠︎ 实装验证未通过(runtime_never_loaded · 2026/10/28) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

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

✓npm 包dsh-vet @ 0.4.0
✓Node 引擎要求 >=20 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/12 01:49:01

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 19 处,展示前 14 条)
  • 读取本地文件
    lib/index.mjs:175
    for (const entry of readdirSync(dir, { withFileTypes: true })) {
  • 读取本地文件
    lib/index.mjs:188
    const head = readFileSync(abs, "utf8").slice(0, 64);
  • 读取本地文件
    lib/index.mjs:577
    readFileSync(candidate);
  • 读取本地文件
    lib/index.mjs:606
    return readFileSync(join(rootDir, "package.json"));
  • 读取本地文件
    lib/index.mjs:665
    const bytes = readFileSync(abs);
  • 写入本地文件
    lib/index.mjs:834
    mkdirSync(join(root, name), { recursive: true });
  • 写入本地文件
    lib/index.mjs:842
    mkdirSync(dirname(abs), { recursive: true });
  • 写入本地文件
    lib/index.mjs:843
    writeFileSync(abs, data);
  • 写入本地文件
    lib/index.mjs:845
    if (mode & 73) chmodSync(abs, mode);
  • 发起网络请求
    lib/index.mjs:895
    const res = await (opts.fetchImpl ?? ((u) => fetch(u)))(url);
  • 发起网络请求
    lib/index.mjs:900
    const res = await (opts.fetchImpl ?? ((u) => fetch(u)))(url);
  • 删除本地文件
    lib/index.mjs:921
    rmSync(dir, {
  • 执行外部命令固定命令
    lib/index.mjs:964
    const child = spawn("git", args, { stdio: [
  • 读取本地文件
    lib/index.mjs:1014
    if (!existsSync(dir) || !statSync(dir).isDirectory()) throw new VetError(`local path is not a directory: ${specifier}`);
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

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

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 安装前权限审计
  • 供应链风险扫描
  • 按标准分级
v0.4.02026-09-11
现在每份报告都会写明它实际检查了什么,任意两份报告也能如实对比。 · 新增内容 · x-dsh-vet scan-context 扩展(v1)——每份报告都会记录规则配置档(附派生摘要)、覆盖范围(候选、已解析、失败的数量,点名的文件,入口线索,遗漏项,固定限制)、内容标识(对分析实际读取的字节算出分析输入清单摘要,对注册表包算出精确归档摘要),以及稳定的问题标识。旧报告仍然有效;缺少覆盖信息时按未知处理,绝不当作完整——命令行里显示 grade C · coverage: partial,PR 评论和徽章里显示 grade A (coverage unknown)。规范见 docs/scan-context-v1.md。 · dsh-vet diff——把两份报告对比成 dsh-vet/diff/v1:按稳定标识列出新增、移除、变化的问题(行号移动和重新格式化不算新增风险,多出一个端点才算),观测差异,以及每处严重度、置信度、数量变化的两侧取值。无法如实对比的报告对会明确说明不可比并给出原因,而不是给出一份读起来像「什么都没变」的差异。同时导出为 compareReports()。已在真实发布对上试点——left-pad 和 chalk,每处新增都对照代码核实过。 · Action:可选基线报告输入——PR 会得到一段有长度限制、转义过的「变化内容」小节,完整差异作为产物附上。基线必须来自可信的基线修订;参见 merge-base 配方和信任边界。 评级、规则和报告语义都没变——全部是增量,之前有效的报告仍然能通过校验。 完整更新日志:
v0.3.02026-09-02
· v0.3.0 — dsh-vet validate:契约长出了消费端 v0.2 让插件作者产出报告,v0.3.0 让其他人有理由信任这些报告。 新增:dsh-vet validate —— 按 dsh-vet/v1 契约校验任意报告:字段类型、枚举、规则 ID 形态、证据是否存在、RFC 3339 时间戳,还有最关键的检查——派生摘要:等级和计数从发现项重新计算,报告无法声称证据不支持的等级。未知字段仍然忽略(设计规则 4)。同时导出 validateReport() 供流水线使用。 语料测试证明本仓库提交过的每份报告仍能通过校验——包括 scanner 0.1.0 产出的那些。自首次发布以来,契约事实上一直只做加法。 新增:从包中导出 renderMarkdown() —— 参考版等级/发现项渲染(与 GitHub Action 在 PR 上发布的同一份 markdown),市场和应用集成无需重新实现就能渲染报告。 生态轮开启:已验证产出方清单与注册表(docs/emitters.md)、市场采用一页纸(docs/adopt-marketplace.md)、公告草稿(docs/outreach/)。契约状态现在各处一致:稳定,自 0.1.0 起只做加法,v0.3 反馈轮后正式冻结。 扫描器行为无变化——规则、等级和报告形态均未改动。 npx dsh-vet validate report.json # 0.3.0 发布到 npm 后
v0.2.62026-09-02
· v0.2.6 — 基于分支的徽章 破坏性变更(需操作):徽章现在放在 dsh-vet/report 分支上。 基于 PR 的发布路径与 GITHUB_TOKEN 在架构上不兼容:Actions 创建的 PR 上的工作流需要每个 PR 人工批准(action_required),所以必需检查永远无法通过,自动合并也永远无法触发——启用 PR 创建后已在线上确认。 基于分支的设计不需要 PR、不需要检查、也不需要仓库设置: · 审计会把 report + 徽章强制发布到未受保护的 dsh-vet/report 分支(按 scanner.ranAt 之外的分支顶端去重)。 · shields.io 直接从该分支读取 badge.json;它的历史仍是 D3 审计轨迹。 · 默认分支完全去掉 .dsh-vet/。 迁移:徽章 URL 从 main 改为 dsh-vet/report——片段见 action/README.md。 扫描器行为不变;契约不变。
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。

README

由 DeepSeek 最新模型翻译生成
dsh-vet dsh-vet 针对 DeepSeek Harness (DSH) 插件的安全审查:安装前的权限与供应链审计,依据开放的 dsh-vet/v1 报告标准进行评级。 状态:v0.3 进行中。 v0.2 交付了作者侧——参考扫描器(npm,16 条经过校准的规则,附公开理由)、CI Action,以及可审计的评级徽章,已在两个仓库中上线。v0.3 是生态轮:面向消费者的报告验证、已验证发射者计划,以及在合约正式冻结前的市场采用(路线图)。 安装 需要 Node ≥ 20。 npm install -g dsh-vet # 或:pnpm add -g dsh-vet / bun add -g dsh-vet dsh-vet --help 不想安装?npx dsh-vet 以零足迹运行同一个扫描器。扫描器是唯一运行的东西——dsh-vet 从不安装它所审计的插件。
展开完整文档(README 剩余 1 节)
dsh-vet

dsh-vet

针对 DeepSeek Harness (DSH) 插件的安全审查:安装前的权限与供应链审计,依据开放的 dsh-vet/v1 报告标准进行评级。

状态:v0.3 进行中。 v0.2 交付了作者侧——参考扫描器(npm,16 条经过校准的规则,附公开理由)、CI Action,以及可审计的评级徽章,已在两个仓库中上线。v0.3 是生态轮:面向消费者的报告验证、已验证发射者计划,以及在合约正式冻结前的市场采用(路线图)。

安装

需要 Node ≥ 20。

npm install -g dsh-vet # 或:pnpm add -g dsh-vet / bun add -g dsh-vet
dsh-vet --help

不想安装?npx dsh-vet 以零足迹运行同一个扫描器。扫描器是唯一运行的东西——dsh-vet 从不安装它所审计的插件。

用法

npx dsh-vet # npm 包、git URL 或本地路径
npx dsh-vet --json # 在 stdout 上输出 dsh-vet/v1 报告
npx dsh-vet --strict # 当发现 >= high(置信度 >= medium)时退出码为 1
npx dsh-vet --rules dep.install-scripts
npx dsh-vet validate # 依据合约检查报告
npx dsh-vet diff base.report.json head.report.json --json

任何完成的报告都以 0 退出——评级描述发现,它们不设门禁。扫描器失败以非零退出。扫描器在本地运行,仅从 npm registry 读取依赖元数据,绝不传输被审计的代码。

每份报告都记录扫描实际覆盖的内容(x-dsh-vet 扫描上下文:规则配置、覆盖率、内容摘要、稳定的发现标识);人类可读输出和徽章在评级旁边显示覆盖率,缺失的上下文读作 unknown,绝不读作完整。

比较两份报告(发布审查)

dsh-vet diff 比较由同一扫描器版本和规则配置在完整扫描下生成的两份报告,并报告变更内容:dsh-vet/diff/v1——按稳定标识的添加/移除/变更发现、行为观察增量、每次转换的两侧。对于可比较的结果,无论风险变化如何,退出码为 0;当这一对无法被信任为描述同一检查下的同一对象时(附明确原因),退出码为 1;用法错误或报告无效时退出码为 2。两次本地目录扫描额外需要 --subject 。不可比较的一对提示用相同配置重新扫描两个产物——绝不是声称什么都没变。

已发布的规则(每条都在 docs/rules/ 下有公开理由):

| 系列 | 规则 |
| perm. | seam-mismatch、undeclared-fs-write、subprocess-spawn、network-client、unreachable-files |
| dep. | install-scripts、floating-range、typosquat-proximity |
| obf. | eval-detect、dynamic-require、encoded-payload、charcode-chain、unparseable |
| egress. | outbound-endpoints、secret-adjacent |

dsh-vet 使用同一个扫描器审计自身: examples/dsh-vet.report.json 是从实际发布的 tarball 生成的(npm pack → 扫描),seams 在 package.json 中声明。
这不是一份靠作弊得来的 A 级报告——扫描器在自身发现的每一个信号都记录在其中。

面向插件作者的 CI 与徽章

在每次 push 和 PR 时审计你的插件,并从提交到仓库的报告发布你的评级—— shields.io 直接从你的仓库读取徽章,因此其值可通过 git 历史审计,且不涉及任何徽章服务:

- uses: rogerdigital/dsh-vet/action@v0.4.0
with:
specifier: '.'
commit-report: true

每次运行都会将完整报告作为 artifact 上传;PR 会获得一条就地编辑的评论。
将 baseline-report 设置为从合并基线扫描得到的报告,PR 还会额外显示自那以来的变化——参见比较发布版本了解可信基线配方,以及试点记录了解该比较在真实发布版本对上的表现。
就地编辑的发现评论。徽章片段及所有输入: action/README.md。如果你自行接入 CI,dsh-vet badge 命令会渲染 shields 端点 JSON。

为什么

DSH 的万物皆插件架构是其最大的优势,也是其最大的攻击面:你安装的插件可以注册工具、访问文件系统并打开网络连接。社区中得票最高的功能请求要求建立市场标准和审查机制(deepseek-harness#1115),而诸如 Full Access 会话删除用户主目录之类的事件(#461)表明了其中的利害关系。官方市场尚需时日;信任工具不能等。

dsh-vet 的存在是为了让“我应该安装这个插件吗?”有一个共享的、机器可读的答案,而不是凭感觉。

它检查什么(v0.1 范围)

- 能力表面——插件注入了哪些 Cordis seams(fs、shell、web……),与其 manifest 和 README 所声称的是否一致
- 供应链——依赖树、安装脚本、postinstall 钩子、与 typosquat 相邻的包名
- 混淆行为——eval / new Function / 动态 require / 编码载荷
- 数据外泄——从可读取机密、会话数据或 DSH 主目录的代码可达的出站端点

dsh-vet/v1 报告标准

差异化的部分不是又一个扫描器——而是 docs/dsh-vet-v1.md:一个与实现无关的、确定性的 JSON 报告契约(发现项带有严重性和置信度,并推导出 A–F 等级),任何扫描器都可以输出,任何市场、CI 任务或 UI 都可以消费,其精神与社区中的 dsh-doctor/v1 契约一致。TypeScript 参考类型和参考 markdown 渲染器由本包提供;dsh-vet validate 会依据该契约校验任何报告——包括推导出的等级,因此来自你不认识的输出器的报告无法伪造等级。欢迎第三方输出器,并在验证后列出;市场可以从 docs/adopt-marketplace.md 开始。

有何不同

| 工具 | 形式 | 关注点 |
| dsh-plugin-vetting | dsh 插件 | 安装时静态启发式检查 |
| dsh-audit | CLI | 生态系统范围的目录评分(维护 / 文档 / npm,安全一票否决) |
| dsh-plugin-audit | dsh 插件 | 逐插件权限画像 + 运行时哨兵 |
| plugin_vet 技能包 | 智能体技能 | 审计方法论 + 门禁 |
| dsh-vet | 库 + CLI + CI action | 开放的 dsh-vet/v1 报告契约、参考扫描器,以及作者侧徽章——其他人可以输出和消费的共享信任层 |

发现项是信号,而非裁决

报告描述的是代码做了什么,而不是其作者的意图。低置信度的发现项绝不会降低等级,并且每个发现项都带有证据和修复建议。如果你认为关于你的插件的某个发现项有误,请提交一个误报争议——有争议的规则会被重新审查,规则集会在公开场合得到修正。

路线图

- v0.1 —— 契约已发布(稳定,自 0.1.0 起仅做增量添加)+ 参考 CLI(dsh-vet ),包含上述四个检查族
- v0.2 —— GitHub Action + 徽章,让插件作者自我审计并发布其等级
- v0.3 —— 生态系统回合:dsh-vet validate + 已验证输出器计划、渲染 dsh-vet/v1 报告的市场集成,以及反馈回合后契约的正式冻结

详细、可跟踪的计划——任务分解、已记录的决策、完成定义、风险和终止标准——见 ROADMAP.md。

开发

pnpm install
pnpm test # vitest
pnpm build # tsdown → lib/
pnpm verify # typecheck + test + build + pack check

安全

报告 dsh-vet 自身的漏洞:见 SECURITY.md。dsh-vet 在本地运行,会读取 npm registry 以获取依赖元数据,并且绝不会将受审计的代码或结果传输到任何地方。

许可证

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

安装前扫描插件权限与供应链风险并评级

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部