DeepSeek Harness 插件

BaqiF2/dsh-plugin-precheck

Star 数 ★ 1 下载量(近 30 天) 1,395 分类 安全与权限 收录于 2026-09-19 npm dsh-plugin-precheck

DSH 插件安装前兼容性门控:锁定解析版本、校验 peer/engines 声明、在隔离 DSH_HOME 中试装并限时试启动,任一失败即阻止;正式安装失败自动还原 profile。可选拦截 dsh-market 的安装/更新点击,兼容 DeepSeek Harness 0.2.x。

安装

# npm 包(预构建)

dsh plugin --profile web add dsh-plugin-precheck

# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)

dsh plugin --profile web add github:BaqiF2/dsh-plugin-precheck

装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。

README

安装 DSH 插件前先做兼容性与启动验证:发现问题即阻止安装并保留原环境,面向不了解插件依赖的新手。

它做什么

在 Web GUI「设置 → Plugins」中新增「安装预检」标签页。输入 npm 包名后:

  1. 解析并锁定版本(pnpm view)
  2. 基础兼容性检查:peerDependencies 与已装版本比对、Node engines、bundle 清单声明;信息缺失时显示「无法确认」而不是放行
  3. 组合检查:新插件的 cordis.patch.yml 与当前配置树(dsh --dump-config)比对——插入 id 重复(确定错误)、补丁目标不存在/被多个插件覆盖(疑似风险)
  4. 隔离试装 + 试启动:临时 DSH_HOME 中复制 profile 文本文件,pnpm add 锁定版本 → --dump-config 静态校验 → --port 0 --no-open 试启动,等就绪行 + 401 探针,180 秒超时树级杀死。隔离环境不含凭据、不挂载定时任务、不触碰正式环境
  5. 检查通过后才允许正式安装:使用同一锁定版本;安装前备份 profile 四个文本文件,失败自动还原 + pnpm install 复原 + --dump-config 复验;恢复失败如实告知并给出日志与手动步骤

保护范围(如实声明)

  • 覆盖:本页面的检查安装;开关开启时,本浏览器标签页中 dsh-market 的安装/更新点击(fetch 拦截 → 完整预检 → 通过才放行)
  • 不覆盖:命令行 dsh plugin add、其他浏览器标签页;市场插件若未来改变端点或传输方式,拦截会失效(探测不到即不启用,不会误拦,UI 有状态显示)
  • 检查通过 ≠ 插件永久稳定,≠ 通过安全审计

dsh-market 拦截的工作原理

dshmarket 的全部路由都是 exact 注册(webServer 精确表优先,重复注册会抛错),且没有预安装钩子——Host 层无法插入中间件。因此拦截做在浏览器层:patch window.fetch 识别 POST /dsh-market/install、/dsh-market/update、/dsh-market/api/v1/updates,暂停请求 → Host 半侧把请求映射为安装来源(安装:url → 注册表条目 → npm 包名或 GitHub target;更新:包名 → 市场目标版本)→ 跑完整预检(含隔离试启动)→ 通过才用原始 fetch 放行;阻止/取消则返回合成 400 让市场 UI 自己报错。可在「安装预检」标签页随时停用。

兼容性

  • 已针对 DeepSeek Harness 0.2.0-rc.2 验证。
  • Host 依赖要求 @deepseek-ai/cordis ~4.0.4;UI/Host 包兼容 0.1.2-0 至 0.3.0-0,覆盖当前 0.2.x 预发布线。
  • Node.js 要求 >=22。

安装

dsh plugin --profile web add dsh-plugin-precheck
# 然后重启 dsh web

状态词汇

检查中 / 检查通过 / 已阻止 / 无法完成检查 / 正在安装 / 正在恢复 / 已恢复 / 恢复失败。所有结论附判断依据,可复制脱敏诊断报告。

内容来自项目 README(GitHub)↗

链接

同类插件

查看整个分类 →

社区评论

评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。