dsh-preflight: DSH Plugin Pre-installation Check, Post-installation Inventory, and Pre-update Assessment

前言

DeepSeek Harness(DSH)采用「一切皆插件」的扩展方式:工具、界面、记忆、计费能力往往来自多个社区插件。装得多了,问题常集中在三个时间点——装之前不清楚能不能装、会不会和已有插件撞 loader;装之后说不清环境里到底有哪些插件、各自带什么能力;点更新之前不知道新版本会不会引入 engine 不匹配、native 编译或 peer 冲突。

dsh-preflight(维护者 mouyu6508-hue)把这三个时刻串成一条检查链:装前用 preflight_check、装后用 preflight_inventory、更新前用 preflight_updates。它与出事后再做冲突修复的 dsh-fusion 互补,两者可以同时安装。插件在 SkillHub 目录中归类为 admin-security。

这是什么

一句话:dsh-preflight 是 DSH 插件的「装前体检 / 装后盘点 / 更新前预判」三合一工具。

  • 仓库:mouyu6508-hue/dsh-preflight
  • 目录页:SkillHub 插件页(社区独立目录,与 DeepSeek / 幻方无官方从属关系)
  • 许可证:MIT(见仓库 package.json)
  • 运行环境:Node.js 18+;需要能加载 bundle 插件的 DSH

插件向 DSH 注册三个工具,并提供独立 CLI;面板通过 host 注册的三条只读 API 拉数据,不直接读本地文件。

核心功能

装之前:preflight_check(spec)

在真正安装前,对指定来源(如 github:owner/repo)拉 manifest 并做与「更新前」同一套检查,提前发现常见拒装与冲突原因。

检查项 说明
no-bundle 缺少 dsh.bundle,市场侧常见拒装原因
engine-mismatch engines.dsh 与当前 DSH 版本不匹配
peer-mismatch peer 依赖与已装版本冲突(含 semver 判断)
native-build 需要 node-gyp / 本地编译工具链
install-script postinstall 会执行脚本
platform-mismatch manifest 声明的平台与当前系统不符
loader-collision patch 中的 loader 名与已装插件冲突,可预判 install-shadow
prerelease / heavy-deps 预发布版、依赖过多等

装之后:preflight_inventory()

按能力分组列出当前 profile 下已装插件,例如界面、工具、记忆、语音、计费、会话、市场、通知等。每行包含版本、是否有 bundle、是否带前端、peer 依赖数量、patch 行数、是否被停用。

更新前:preflight_updates()

对每个已装插件查询 npm 最新版,取新版本 manifest 再跑一遍装前检查,并与当前版本对比,只报告新引入的问题,便于在点击更新前评估风险。

会话内面板

安装并启用 bundle 后,会话标题栏右侧会出现「体检」入口,打开后为装机面板:

  • 装机清单:按能力分组的卡片列表,带搜索;展示版本、是否带 UI、是否停用
  • 更新风险:现查各插件更新,按风险色标排序(红=高风险 / 黄=需注意 / 绿=低风险)

数据路由(只读):

  • /api/dsh-preflight/inventory
  • /api/dsh-preflight/updates
  • /api/dsh-preflight/check

安装与启用

已抓取资料中的 README 与 package.json 未给出统一的 dsh plugin add … 安装命令行文案。建议从 SkillHub 目录页 或 GitHub 仓库说明按当前 DSH 版本的插件安装方式操作;安装前请自行阅读源码与 MIT 许可证,并确认插件将以当前 DSH 进程权限运行。

peer 依赖(package.json):@deepseek-ai/cordis(>=4.0.0)、@deepseek-ai/dsh-tools(>=0.1.0),均为 optional meta;bundle 通过 cordis.patch.yml 注入客户端与 API。

典型用法

DSH 内工具调用

README 中的对应关系如下:

装之前   preflight_check      能不能装?会和谁撞?
装之后   preflight_inventory  按能力分类的装机清单
更新前   preflight_updates    这次更新会引入什么问题?

装前检查示例(与 README 一致):

dsh-preflight check github:mouyu6508-hue/dsh-fusion

独立 CLI(不启动 DSH 也可跑)

DSH 起不来时,可直接用 CLI 做盘点与检查;加 --json 便于脚本消费。

dsh-preflight inventory --profile desktop
dsh-preflight check github:owner/repo
dsh-preflight updates --profile desktop
dsh-preflight profiles

开发自测(仓库 README):

node --test
node bin/preflight.js inventory --profile desktop

核心实现分布在 lib/core.js(semver、分类、manifest 与 loader 撞名、风险定级)、lib/profile.js(只读 profile 插件清单与 loader 行)、lib/sources.js(npm / GitHub / 本地目录 → manifest)、lib/report.js(三份报告拼装),入口为 lib/index.js,CLI 为 bin/preflight.js。

适用场景与注意

适合谁

  • 经常从 GitHub / npm 试装社区插件、需要装前看清 bundle / engine / peer / loader 冲突的 DSH 用户
  • 插件较多、需要按能力浏览装机清单、或在批量更新前做风险分级的维护者
  • 希望 DSH 未启动时仍能用 CLI 做 inventory / check / updates 的运维或脚本场景

注意

  • 检查结果依赖 manifest、npm 与本地 profile 只读信息;网络或 registry 异常时,更新预判可能不完整
  • dsh-preflight 做的是事前评估,不能替代已发生冲突后的修复流程;可与 dsh-fusion 搭配使用
  • 安装任意 DSH 插件前,应审查源码与许可证;插件能力在 DSH 进程内执行,权限与宿主一致

结尾

dsh-preflight 把「能不能装、装了什么、更新会不会多出问题」收成三个可重复调用的步骤,并辅以会话内体检面板与独立 CLI。若你在 DSH 上持续叠加社区插件,在装与更新前先跑一遍检查链会更稳妥。

  • 目录页:https://www.skillhub.cn/plugins/mouyu6508-hue/dsh-preflight
  • GitHub:https://github.com/mouyu6508-hue/dsh-preflight
羽毛球分组比赛记分
小程序二维码

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

Xiaoye