前言¶
DeepSeek Harness(DSH)采用「一切皆插件」的扩展方式:新能力往往来自社区 bundle,安装路径会拉取 npm 包或 GitHub 源并执行依赖解析。宿主本身不会替你逐项审 package 元数据、仓库活跃度或 install 脚本风险。若你在团队或生产 profile 里装第三方插件,缺少一道「按下安装到 pnpm 真正执行之间」的检查,供应链问题更容易在装完才暴露。
下面介绍维护者 NingZhenPeng 发布的 dsh-plugin-preflight(社区分类 admin-security)。它本身也是 DSH 插件,通过 cordis.patch.yml 挂到加载链,在 pluginManager.installBundle 之前插入预检:判定为拒绝则中止安装,并把每次尝试写入审计日志。它不是市场,也不替你决定装什么——只在安装流程里加一道闸门。
这是什么¶
dsh-plugin-preflight 是 DeepSeek Harness 的插件安装预检闸门。九项规则的阈值全部在仓库内的 policy.json,判断逻辑与标准分离;预检脚本为 scripts/preflight.mjs。
- 维护者:NingZhenPeng
- 社区目录:SkillHub 插件页
- 源码与文档:GitHub — NingZhenPeng/dsh-plugin-preflight
- npm 包名:
dsh-plugin-preflight(package.json版本 0.15.4,MIT,engines.dsh为>=0.2.0)
核心功能¶
九项内置检查¶
预检只拦「明确拒绝」;警告与需人工项一律放行,由人判断。
| # | 检查 | 阻断级 |
|---|---|---|
| 1 | GitHub 仓库存在、未归档、90 天内有推送 | 拒绝 |
| 2 | 无 preinstall / install / postinstall |
拒绝 |
| 3 | 未被 deprecated |
拒绝 |
| 4 | 直接依赖数 > 8 拒绝、> 1 警告 | 拒绝 / 警告 |
| 5 | 兼容宿主版本(dsh.compatibility / engines.dsh / peer 范围) |
拒绝 / 警告 |
| 6 | 自更新、热重载痕迹(脚本 / 依赖 / README) | 警告 |
| 7 | 是否要求第三方账号 | 需人工 |
| 8 | npm provenance 签名 | 警告 |
| 9 | 装后钉精确版本 | 提醒 |
安装流程中的位置¶
安装请求进入被包装后的 pluginManager.installBundle 后,会先执行:
node scripts/preflight.mjs <包名> --json
- 拒绝:抛错中止,写审计,并在「安装详情」里附带结构化报告。
- 通过:调用原来的安装方法。
- 预检跑不成(断网、限流、超时):默认按策略处置,见下一节。
预检跑不完时的策略¶
默认 拦截,避免「故意卡住网络」绕过检查。处置顺序:
- 30 分钟内验过同一包 → 沿用
verdict-cache.json,不重复联网。 - 无缓存且
onUnverified为block(默认)→ 中止安装,报告说明原因与可选处置。 onUnverified为allow→ 放行,审计记unverified。
面板「高级设置 → 预检跑不完时」可切换;离线环境建议选放行,否则可能无法安装任何插件。README 明确这是安全与可用之间的取舍。
运行模式与审计¶
侧栏「插件预检」面板可热切换,无需重启:
enforce:预检拒绝时中止安装。warn:照常安装,只写审计。
默认数据目录为 ~/.dsh/plugin-guard/(可通过 dataDir 等配置覆盖)。典型文件包括:
runtime.json:运行期配置audit/plugin-guard.jsonl:每次安装尝试一行audit/last-block.md/last-block.json:最近一次拦截说明
自定义规则¶
可在 runtime.json 的 customRules 或面板「高级设置 → 自定义规则」中追加检查。每条规则含 title、when(条件表达式)、status(warn / reject / manual)、detail。条件可使用 repo.stars、depsCount、deprecated、deps contains "axios" 等字段;与内置规则叠加,内置拒绝不会被自定义「通过」覆盖。
安装与启用¶
本插件面向 DSH 桌面端与 Web 端。插件以当前 DSH 进程权限运行;安装前应自行核对源码与许可证。
桌面端:DeepSeek Harness 插件页 →「添加插件」→ 填写 dsh-plugin-preflight(已发布 npm 时)或本目录绝对路径 → 重启。
未发布 npm 时,从 GitHub 安装(资料原文命令):
dsh plugin --profile desktop add github:NingZhenPeng/dsh-plugin-preflight
纯 web profile 命令行:
dsh plugin --profile web add dsh-plugin-preflight
典型用法¶
运行期只记录、不拦截¶
适合先观察一段时间再收紧。改 runtime.json 或面板切换:
{ "mode": "warn" }
离线或不稳定网络¶
将「预检跑不完时」设为放行(onUnverified: allow),避免默认 block 导致无法装包;审计仍会记 unverified。
自定义冷门仓库警告¶
{
"id": "custom-abc123",
"title": "冷门仓库",
"when": "repo.stars < 50 && repo.idleDays > 90",
"status": "warn",
"detail": "{repo.slug} 只有 {repo.stars} star,且已 {repo.idleDays} 天没更新"
}
命中后报告会追加警告行,但不阻断安装(除非你将 status 设为 reject)。
本地自测(开发者)¶
仓库提供不联网自测(不进 npm 包):
node scripts/selftest.mjs
适用场景与注意¶
适合:需要在 DSH 里统一约束「插件页 / 市场走 installBundle 的安装路径」、希望有审计与结构化拦截报告的团队或个人。
务必知晓的限制(来自 README「已知限制」):
- 依赖宿主内部 API(如
pluginManager.installBundle、侧栏槽位);宿主大版本升级后可能界面降级,闸门仍可能拦截但提示不全。 - 只覆盖
pluginManager.installBundle;CLIdsh plugin add、手改package.json后pnpm install可绕过。 - 第 6、7 条为启发式,有误报与漏报。
- HTTP 层准入防远程滥用;本机进程可直接改
runtime.json。 - Windows 为 README 记载的实测平台;macOS / Linux 未实测但已避免写死平台假设。
社区目录 SkillHub 为独立站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-plugin-preflight 在 DSH 安装插件与 pnpm 执行之间插入九项可配置预检,拒绝即拦截并留审计,警告与人工项交给人判断。若你主要走图形化插件安装且希望供应链上有默认闸门,可先装此插件,再按网络环境调整 onUnverified 与 mode。
- 目录页:https://www.skillhub.cn/plugins/NingZhenPeng/dsh-plugin-preflight
- GitHub:https://github.com/NingZhenPeng/dsh-plugin-preflight