dsh-quick-setup:在另一台 DSH 实例里批量对齐插件

前言

DeepSeek Harness(DSH)的扩展能力来自社区插件:装得多了,换电脑、新开 profile 或重装系统时,往往要在插件市场里逐个搜索、逐个安装。官方插件管理能管单包,却没有「把当前 profile 里已装好的第三方插件一次性搬到另一个实例」的标准流程。dsh-quick-setup 由社区维护者 MR1ZK 发布,归类为工作流插件,专门做导出、兼容性检查和批量安装,可选附带 cordis.patch.yml 里与插件相关的配置条目。

这是什么

dsh-quick-setup 把本机已安装的第三方 DSH 插件导出成便携包或轻量清单,在目标 DSH 实例上核对环境与版本后再批量安装。官方内置 bundle 以及 dsh-quick-setup 自身不会被打包。项目以 MIT 许可证开源,当前 package 版本为 0.3.0,要求 DSH 版本 >=0.2.1-rc.2 <0.3.0。目录页:https://www.skillhub.cn/plugins/MR1ZK/dsh-quick-setup;源码:https://github.com/MR1ZK/dsh-quick-setup。

核心功能

导出(源实例)

  1. 通过 DSH 官方的 pluginManager.listBundles() 读取当前 profile 的插件列表。
  2. 只保留第三方、已安装的 bundle。
  3. 两种导出形式:
    - 完整插件包(默认):各插件包目录(跳过 node_modules、.git 等)与 dsh-quick-setup-pack.json 清单一起打成 .dshpack.tgz;清单记录 DSH 版本、profile 名、Node、Electron、OS、CPU 与打包时间。勾选「同时备份插件配置」时,从 <profile>/cordis.patch.yml 按插件名提取带 config: 或 disabled: true 的条目,原样写入清单(YAML 注释与 !!js 不解析)。
    - 仅插件信息:生成 UTF-8 的 .plugins.txt,头部为 # dsh-quick-setup/plugins@1 及 profile、DSH 版本、导出时间;正文每行 插件名@版本号 或仅插件名。子选项「包含当前版本号」决定导入时装精确版本还是 npm latest。

导入(目标实例)

  1. 上传 .dshpack.tgz 或 .plugins.txt,自动识别类型;插件包在临时目录安全解包,按目标实例复算 engines.dsh、peerDependencies、Node、OS、CPU 及已装版本(升级/降级/同版本)。
  2. 清单模式对未安装条目用 pluginManager.inspect()(内部 pnpm view)核对 npm 上的包与版本。
  3. 设置页展示可安装、已安装、不兼容、版本冲突四类结果;用户确认后才安装。
  4. 完整包以 file: tarball 交给 pluginManager.installBundle();清单以 name@version 或裸 name 交给同一接口,由 DSH 执行 pnpm 与构建脚本审批。因热重载,安装按「一次一个」推进,并通过状态接口核对结果。
  5. 若包内带配置,安装成功后按 id/name 合并进目标 cordis.patch.yml:目标已存在条目跳过,不覆盖;写文件用临时文件加 rename。配置生效通常需再重启 DSH。

插件包默认不含账号、API Key、聊天记录、工作区文件;未勾选配置备份时不含插件设置值。勾选备份时请注意包内可能有密钥,且无加密,需妥善保管。.plugins.txt 不含代码,目标须能访问对应 npm registry。

安装与启用

在 DSH 中让 agent 执行(将路径换成本地 clone 或下载后的插件目录):

plugin_manager action=install_bundle target=C:\path\to\dsh-quick-setup

也可在插件管理页使用「从本地目录安装」,选择插件目录。安装完成后重启 DSH,在 设置 → 快速安装 打开页面。

典型用法

  1. 导出:在快速安装页勾选要带走的插件,点「导出插件包」,得到 dsh-quick-setup-<profile>-<时间>.dshpack.tgz。需要同步设置时勾选「同时备份插件配置」(默认不勾选)。若只需对齐插件名与版本,勾选「仅导出插件信息」,得到 .plugins.txt;可按需取消「包含当前版本号」以在目标安装 latest。
  2. 传输:U 盘、scp、网盘均可。
  3. 导入:在目标实例同一页面选择文件 → 「检查兼容性」 → 核对报告 → 「安装选中的插件」。
  4. 若出现 restart-required,重启目标 DSH 后在插件页确认状态。

Host 端还提供同源 HTTP 接口(如 GET /dsh-quick-setup/api/status、POST /dsh-quick-setup/api/upload 等),供页面与内部流程使用;POST 需请求头 x-dsh-quick-setup: 1。

适用场景与注意

适合:多台电脑同步 DSH 插件;同一主机多个隔离 profile 之间复制插件;新机器或重装后避免逐个市场搜索安装。

使用前须知:

  • 插件在当前 DSH 进程权限下运行,安装前请阅读源码与 MIT 许可证,自行评估是否信任维护者 MR1ZK。
  • 含原生模块或平台限定依赖的插件可能在目标平台失败;需安装脚本的插件仍走 DSH 官方确认,本插件不会绕过。
  • 同名插件升级/降级:热重载下 installBundle() 会拒绝已存在包名,快速安装会标为「版本冲突」,需先在插件管理移除旧版再导入。
  • 插件私有存储(如 ~/.dsh/ 下偏好文件、localStorage)不在备份范围,需单独复制。
  • 配置备份单条上限 128 KiB、总量 512 KiB、最多 200 条;超限包会被拒绝导入。

结尾

dsh-quick-setup 把「已装好的第三方插件集合」变成可携带的 .dshpack.tgz 或几百字节的 .plugins.txt,在目标实例做兼容性预览后再批量安装,可选合并 cordis.patch.yml 补丁,适合工作流式的环境对齐。详情见 SkillHub 目录页 与 GitHub 仓库。

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

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

Xiaoye