前言¶
DeepSeek Harness(DSH)的插件能否加载,并不取决于包有没有装进目录,而取决于当前 profile 选了哪些 bundle、patch 按什么顺序覆盖、以及包声明的版本是否被宿主接纳。很多问题要到重启之后才会暴露,表现往往是某个插件或配置项「悄悄没了」,排查成本高。
下面介绍的 dsh-plugin-health-check 由社区维护者 GlariaLuminous 发布,分类为 admin-security,在 SkillHub 目录与 GitHub 上均可找到。它沿着 profile → bundle → patch → 配置条目 把合成链路在本地静态走一遍:不启动插件、不执行命令、不改动配置,并支持把尚未安装的候选插件目录交给检查器做安装前模拟。
这是什么¶
dsh-plugin-health-check 是面向 DSH 用户的只读插件体检工具。它在你真实的 profile 上按 DSH 官方规则合成配置,再扫描 bundle 解析、patch 覆盖、版本兼容与 MCP 冲突等问题;也可在装新插件前传入本地源码或解包目录,只看「加上这一层之后」会新增哪些发现。
当前 package 版本为 0.3.1,许可证 MIT。项目标注为实验性:检查引擎(命令行)已在 DSH Desktop 0.2.1-rc.2 上验证;agent 工具入口较新,注册流程有不依赖宿主的测试覆盖,但尚未在真实 DSH 里长期使用。需要 Node.js 22+。
核心功能¶
按宿主规则合成,再静态扫描¶
patch 合成使用官方 @deepseek-ai/cordis-plugin-include 的算法;版本准入遵循 DSH 的 engines.dsh 优先、否则看 DSH peers 的规则,预发布版本参与比较。覆盖层顺序与宿主一致:bundle → profile → home → 命令行 --patch,并处理 disabled、分组、静态 include 与循环引用。Desktop 内置包元数据可直接从 Electron ASAR 读取,无需启动 Electron。
常见现象与发现类型¶
| 你遇到的现象 | 常见原因 | 对应发现 |
|---|---|---|
| 装完重启,插件没出现 | bundle 解析不到、未声明 dsh.bundle.patch、版本不被当前 DSH 接纳 |
DSH_PACKAGE · DSH_VERSION |
| 配置被另一层悄悄换掉 | patch 按 id 整体替换 config;id 重复、覆盖未命中、include 成环 |
DSH_PATCH |
| 两个 MCP 服务只剩一个 | 同一作用域里 serverName 重复,重复注册会被拒绝 |
R1 · R8 |
| 检查结果为空,不确定算不算健康 | 动态表达式、未解析的模块、服务隔离 | DSH_COVERAGE,状态为 incomplete |
报告与退出码¶
命令行或 agent 工具会给出结构化结果。JSON 报告包含 packages、entries、findings、coverage、status 和 exit_code;配置正文、凭据和 YAML 错误片段不会写入报告,本地安装路径会保留以便定位,分享前请自行脱敏。
| 退出码 | 状态 | 含义 |
|---|---|---|
0 |
pass |
已覆盖的静态配置检查通过 |
1 |
fail |
存在致命发现 |
2 |
error |
参数、路径或运行环境错误 |
3 |
incomplete |
覆盖不完整,需补充信息或运行态核实 |
安装前模拟(candidate)¶
把候选插件的本地目录交给 --candidate 时,候选包不会被安装,也不会执行其构建脚本或 apply。同名包按包身份替换旧版本;否则作为新的一层加入。报告只列出新增问题并保留原环境 baseline;原环境本身失败或不完整时,不会给出干净的通过结论。
与生态里其他「体检」项目的分工¶
据各项目公开 README,侧重点不同、有重叠也互补:dsh-plugin-doctor 偏插件作者侧(manifest、patch、打包后在全新 profile 的安装验证);dsh-doctor 偏 profile 层字段丢失与 patch 引用;dsh-xray 偏运行中 DSH 的实际加载与运行时健康。本插件侧重用户侧:在真实 profile 上按官方算法合成后的静态检查,并支持安装前模拟。
安装与启用¶
作为 DSH 插件装进 profile,使用 README 中的命令(示例 profile 为 web,可按你的实际 profile 替换):
dsh plugin --profile web add github:GlariaLuminous/dsh-plugin-health-check
重启 DSH 后,对 agent 说明意图即可,例如:
检查我的 DSH 插件。
或安装前询问:
我想装
/path/to/plugin,会不会和现有插件冲突?
agent 会调用只读工具 plugin_health_check;后一种说法会把目录作为 candidate 传入。
不装成插件、仅跑命令行时,可在克隆仓库并 npm ci --ignore-scripts 后执行(默认读取 $DSH_HOME,未设置时使用 ~/.dsh):
node scripts/dsh_health_check.mjs --profile desktop
--profile web 检查 Web profile;--json 输出结构化报告。参数详见仓库内 docs/dsh.md。
也可把完整仓库放到 $DSH_HOME/skills/dsh-plugin-health-check/ 或项目根 .dsh/skills/dsh-plugin-health-check/,保留 SKILL.md 与 scripts/ 相对位置,使用 /dsh-plugin-health-check 或自然语言触发 skill 工作流。
典型用法¶
检查当前 profile¶
node scripts/dsh_health_check.mjs --profile desktop --json
安装前模拟候选插件¶
node scripts/dsh_health_check.mjs --profile desktop --candidate /path/to/plugin --json
通过插件安装后,用自然语言让 agent 调用 plugin_health_check 即可,无需记忆子命令。
适用场景与注意¶
适合谁: 经常在同一 profile 里叠加多个 DSH 插件、或准备从本地目录安装第三方包的用户;希望在重启前发现 bundle/patch/版本/MCP 冲突的人。
边界: 这是静态检查。未验证运行时注册的工具、命令和 hook,Agent preset 激活,MCP 实际连接与 tools/list,会话权限等。!!js 表达式只当数据,不求值。因此 STATIC PASS 仅表示「已覆盖的配置未发现问题」,不是「插件一定能运行」,更不是「插件安全」。无发现、版本未知或动态配置过多时,结果会标记为 incomplete,不会因为没采到数据就断言一切正常。
安全与权限: 作为 DSH 插件安装后,工具以当前 DSH 进程权限运行;安装前应阅读源码与 MIT 许可证,确认来源为 GlariaLuminous/dsh-plugin-health-check。DSH 仍为开发者预览版,升级后请重新检查;遇到问题请带上 DSH 版本到 GitHub Issues。
SkillHub 上的插件目录由社区维护,与 DeepSeek / 幻方无官方从属关系,并非官方应用商店。
结尾¶
dsh-plugin-health-check 把「装完才知道能不能加载」的问题前移到合成与静态扫描阶段:只读、可重复,并支持 candidate 安装前模拟。目录页:https://www.skillhub.cn/plugins/GlariaLuminous/dsh-plugin-health-check;源码与文档:https://github.com/GlariaLuminous/dsh-plugin-health-check。