dsh-provenance:在 DeepSeek Harness 插件安装前做来源校验

前言

DSH 的理念是「一切皆插件」。对智能体开发者来说,插件通常要先读仓库,再执行安装。这里有一个顺序问题:如果安装命令先执行,插件里的安装钩子可能已经运行;等安装后扫描文件时,已经晚了。

dsh-provenance 针对这个顺序问题。它在 DeepSeek Harness 插件安装前检查即将安装的 tarball 是否与已读源码一致,并在代码运行前给出 ok、review 或 block 的结果。

这是什么

dsh-provenance 是 Darren Tang 维护的 DSH 插件,许可证为 MIT。它做安装前的供应链来源检查,不执行被审计包,也不替代代码行为扫描。

运行要求是 Node.js >=22.19.0。README 说明它没有运行时依赖;@deepseek-ai/cordis@deepseek-ai/dsh-tools 是可选 peer dependencies。

核心检查

下面介绍它检查的几类来源问题。

来源固定性

检查安装说明符是否指向不可变内容。可重解析的名称或分支,可能在同一名称下解析到不同内容。

注册表完整性

比对收到的字节与注册表发布的 digest。

安装钩子

检查在 dsh plugin add 过程中会执行的安装钩子。这类代码可能在安装后扫描之前运行。

构建来源

通过 SLSA attestation 检查制品是否能关联到特定 commit 和 CI workflow。它解析 attestation payload,但不做 sigstore 签名验证。

制品与源码比较

比较已发布文件与指定 commit 的上游源码,并检测发布时是否新增了文件。

如果没有已发布文件可以匹配,它会报告 diff.nothing-verified,而不是报告 0 mismatch

使用方式

dsh-provenance 为 DSH agent 注册两个工具:

  • provenance_preflight:安装前审计一个来源
  • provenance_verify:检查某个 profile 中已安装的插件

它也提供 CLI。CLI 的 preflightverify 模式支持 --json--strict,可用于 CI。

退出码:

  • 0:ok 或 notice
  • 1--strict 下需要 review
  • 2:block

安装与启用

作为 DSH 插件:

dsh plugin --profile web add dsh-provenance

作为独立 CLI:

npm install -g dsh-provenance

启用前确认 Node.js >=22.19.0,并检查源码和 MIT 许可证。DSH 插件一般以当前 dsh 进程权限运行,因此建议先审后装。

典型用法

安装前检查

先做 preflight:

dsh-provenance preflight some-plugin@1.2.3
dsh-provenance preflight github:owner/repo
dsh-provenance preflight some-plugin --json

检查已安装插件

再对某个 profile 做 verify:

dsh-provenance verify --profile web

CI 门禁

在 CI 中使用 --strict

dsh-provenance preflight some-plugin@1.2.3 --strict
dsh-provenance preflight github:owner/repo#<sha> --strict

安装拦截

在 DSH 会话中,dsh-provenance 会拦截安装尝试:如果来源没有先在会话中通过 preflight,它会拒绝安装。需要时,应先用 provenance_preflight 审计该来源,再重试安装。

如果这个安装拦截影响流程,可以用以下配置关闭:

{ guardInstalls: false }

边界与注意事项

它的边界比较明确:

  • 不验证 sigstore 签名;只解析 attestation payload,不做密码学验证。
  • 不能验证构建产物;lib/dist/ 和压缩文件会报告为 unverifiable,不会报告为 match
  • 干净报告不等于安全证明;只表示当前规则没有发现问题。
  • 不是代码行为扫描器;它检查代码从哪里来,不判断代码做什么。
  • 不是 runtime ledger;不观察、不记录安装后的行为。
  • 不执行被审计包;archive 在内存中解析。

结尾

dsh-provenance 的价值是把“源码是否一致”这个问题提前到安装前处理。它可以和代码行为扫描配合使用:前者回答来源是否对得上,后者回答代码行为是否可信。

GitHub 仓库:https://github.com/Darren-Tang/dsh-provenance

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye