dsh-modpack:PCL 式 DSH 第三方插件整合包

前言

在 DeepSeek Harness(DSH)里装第三方插件不难,难的是把「当前 profile 里这一整套组合」稳定地复现到另一台机器,或发给同事、读者。整机备份类工具往往会带上配置、凭据甚至本地插件目录,体积大,更像换机搬家。若你只想记录「装了哪些 bundle、各自什么版本」,导入时再从 npm 或 git 拉本体,需要的是一份轻量清单,而不是把整个 node_modules 打进 zip。

下面介绍社区插件 dsh-modpack(维护者 M1r0er,分类:工作流)。它借鉴 Minecraft 整合包(如 PCL / HMCL)的思路:导出时只生成清单与小体积 .dshpack.zip,同时给出可复制执行的 dsh plugin add 命令串;导入时先预览差异,确认后再按 spec 重新下载安装。

这是什么

dsh-modpack 是发布在 npm 上的 DSH bundle 插件(dsh-modpack,package.json 版本为 0.2.1)。一句话定位:勾选本机已安装的第三方插件,导出几十 KB 级别的整合包与安装命令;对方导入前可预览,再一键装齐。

插件依赖 DSH 内置的 pluginManager 与 configEditor。若运行环境过旧、没有 pluginManager,导出得到的命令串仍可用,但自动安装会报「服务不可用」。

与同赛道更重的 @dsh-packforge/dsh-pack-plugin(.dspack,常带 profile 配置与 pnpm-lock.yaml)相比,dsh-modpack 刻意做轻:只记录插件名与版本,并直接产出 dsh plugin add 命令,适合发布、分享与复现组合,而不是整机迁移。DSH 社区插件目录为独立站点 SkillHub 上的 dsh-modpack 条目,与 DeepSeek / 幻方无官方从属关系。

核心功能

导出

  1. 在 设置 → 整合包 → 导出 中列出当前 profile 的第三方 bundle(版本、是否本地链接)。
  2. 勾选要纳入整合包的项;可填名称、版本、作者、描述。
  3. 可选「包含配置」:仅收集选中插件的 config override,疑似密钥默认替换为 ${REDACTED}。
  4. 生成 .dshpack.zip(通常几 KB~几十 KB,不含插件代码、不含 node_modules),并显示 zip 路径与整段安装命令,可一键复制。

本地 link: 或本地路径插件:若同名同版本已发布到 npm,导出时会自动转为可分享的 name@version;未发布则标为不可分享,或勾选「内置」把插件 tarball 写入包内(见下文)。

导出的命令示例(资料原文示例,不会自动执行):

dsh plugin --profile desktop add dsh-ops@0.3.0
dsh plugin --profile desktop add dsh-better-sidebar@0.28.0
dsh plugin --profile desktop add github:owner/repo#v1.0.0

导入

  1. 拖入 .dshpack.zip,或粘贴上述形式的命令串。
  2. 预览表按条显示 spec 与状态:installed-same / installed-different / missing / local / unknown;内置条目带「内置」标记。
  3. 点击「应用安装」需二次确认;apply 前会自动写入 JSON 还原点(<outDir>/backups/before-import-<时间>.json)。
  4. 实际安装走 pluginManager.installBundle(spec, { saveExact: true }),不执行 shell,也不执行粘贴文本里的命令——命令串仅被解析为 spec。

内置未发布插件(可选)

对只在本机开发、未打算发 npm 的插件,导出时可勾选「内置」:

  1. 对插件目录执行 pnpm pack(尊重 package.json 的 files / .npmignore)。
  2. 扫描疑似凭据文件时拒绝内置。
  3. tarball 写入 zip 的 embedded/<name>-<version>.tgz,清单记录 sha256 与 size。
  4. 导入校验后落到 ~/.dsh/modpacks/embedded/,再经 pluginManager.installBundle(tarball) 安装。

含内置插件时,Agent 工具需显式 allowEmbedded: true;界面确认框会代填。内置等于在 profile 中执行第三方代码,只应分享你信任的来源。

Agent / 模型工具

除图形界面外,注册工具:modpack_list、modpack_export、modpack_inspect、modpack_import。典型调用如下(摘自 README):

// 列出可导出的插件
{ "tool": "modpack_list" }

// 导出(不写 zip,只拿命令串)
{ "tool": "modpack_export", "writeArchive": false, "include": ["dsh-ops", "dsh-context"] }

// 导出为 zip(默认写到 ~/.dsh/modpacks)
{ "tool": "modpack_export", "name": "我的整合包", "version": "1.0.0" }

// 导入预览(默认 apply=false,绝不安装)
{ "tool": "modpack_import", "path": "D:/packs/我的整合包-1.0.0.dshpack.zip" }

// 确认后应用;含内置插件时必须显式 allowEmbedded
{ "tool": "modpack_import", "path": "…", "apply": true, "allowEmbedded": true }

安装与启用

在 DSH 插件管理器中安装(命令来自官方 README):

dsh plugin add dsh-modpack

安装完成后:

  • 设置 → 整合包:导出、导入与预览;
  • 模型工具:上节四个工具,可由 Agent 代劳。

包内结构与限制

.dshpack.zip 为普通 zip,主要包含 dshpack.json(format 为 dsh-modpack,当前 formatVersion 为 2)、可选 embedded/*.tgz、install.sh / install.ps1、README.md。

已知限制(摘自 README,安装前宜知晓):

  • 只处理 bundle(dsh.profile.bundles / package.json 依赖);随 DSH 发行的 installation 内置 bundle 不导出。
  • 目标机器需能访问 npm / git;版本对比为字符串精确比较;不支持 zip64 / 加密;整合包超过 32 MiB 会被拒绝。
  • 内置单包上限 12 MiB、合计 24 MiB;内置插件若依赖未发布到 registry 的包,pnpm 可能失败。

安全相关:导出默认不安装任何东西;导入默认只预览;默认包内不写插件代码;可用 DSH_MODPACK_REGISTRY_CHECK=off 关闭导出时对 npm 的只读版本查询。

适用场景与注意

适合:把一套验证过的 DSH 插件组合打成小 zip 或命令串发给他人;在团队内对齐 desktop profile 的第三方 bundle 列表;用 Agent 批量导出/预览后再决定是否 apply。

注意:DSH 插件以当前 DSH 进程权限运行。导入尤其是「内置」路径会安装包内第三方代码,安装前应查看 GitHub 仓库 源码与 MIT 许可证,并只导入可信来源的整合包。企业内网需自行配置 npm registry。

结尾

dsh-modpack 用清单代替整机备份,用预览代替盲目覆盖,把「装哪些插件、哪个版本」变成可分享、可复现的资产。若你需要更轻的插件组合分发方式,可先 dsh plugin add dsh-modpack,在设置页导出一份 .dshpack.zip 试跑导入预览。

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

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

小夜