dsh-pack-plugin
别名:整合包管理插件、dsh-pack、dspack 面板、pack 管理 bundle
把「整合包管理」做进 DSH 界面里的双半端插件 bundle:在设置面板里导出 / 安装 .dspack、切换 profile、浏览市场、读写工作区配置、看任务进度,且不改官方源码、宿主运行时只依赖一个 ZIP 库。
它解决什么问题
DSH 的整合包(.dspack)总得有人来导出、安装、切换。dsh-pack-plugin 的定位是把这套操作搬进 DSH 自己的界面里,而不是让你退回命令行:设置面板里多出管理 / 导出 / 市场三个页签,市场详情、导出进度、任务时间线都在里面。市场给它的分类是「工具」,徽标与 dsh-loader 一样是「整合包必备」——这两个措辞来自 source/2 的登记条目。
它的取舍写在 README 第一句里:只做 UI + 后端,不做 AI 驱动的整合包管理。也就是说它不替你决定装什么,只把「导出 / 安装 / 切换」这三件事做顺。
它凭什么敢说「零官方源码改动」
因为它走的是官方本来就有的 bundle 机制,而不是改 DSH 的代码。两处声明都在 package.json 里(实测本地 checkout 版本 0.3.5):
"main": "lib/host.js",
"exports": {
".": { "default": "./lib/host.js" },
"./client": "./lib/client.js",
"./cordis.patch.yml": "./cordis.patch.yml"
},
"dsh": {
"bundle": { "patch": "./cordis.patch.yml" },
"client": {
"platform": "web",
"inject": ["@deepseek-ai/dsh-client-runtime", "…"]
}
}
- 宿主半端靠
cordis.patch.yml插进来一行:- insert: [{ id: dspack-host, name: '@dsh-packforge/dsh-pack-plugin', inject: [connection, webServer, skills] }]。它注入webServer后自己挂一个/dsh-pack前缀路由,而不是走ctx.connection.rpc.handle(README 说那条路对第三方插件不可用)。 - 客户端半端靠
dsh.client+exports["./client"]挂进页面,字段语义见 concept/4。
这两条合起来就是「双半端」,也正是 tutorial/2 里讲的 bundle 声明与 patch 层的真实样本。
谁在用它
反查市场账本 index/packs/<owner>.<repo>/manifest.json,两个包的 bundles 与 dependencies 里都有它,且版本一致:
| 整合包(marketId) | bundles 里的一行 | dependencies 里的那一行 |
|---|---|---|
1900992335.desktop-pack | "@dsh-packforge/dsh-pack-plugin" | "@dsh-packforge/dsh-pack-plugin": "0.3.5" |
hxh230802.smoother-deepseek-harness | 同上 | "@dsh-packforge/dsh-pack-plugin": "0.3.5" |
desktop-pack 的显示描述里直接把它称作「packforge 打包」那一环。装插件时被谁拉进来、挂上去之后发生什么,见 tutorial/3。
与其它东西的关系
| 关系 | 对象 | 说明 |
|---|---|---|
| 并列 | dsh-loader(npm) | 市场把两者都标成整合包必备 |
| 同源 | dsh-packforge-app(GitHub) | 打包 / 安装 / 校验逻辑同一份,一个进界面,一个在界面外 |
| 落在 | concept/2 profile | 切换的对象就是 profile:README 说激活指针是 profiles/desktop 这个 junction |
| 用到 | concept/1 patch 层与层序 | 它自己就是一层:cordis.patch.yml 里那一行 insert |
未核实 / 未声明
compat.dsh:未核实。它声明了 bundle 与 client,却没有写给谁用的 DSH 版本;市场索引里两个包钉的dshVersion一个是0.2.0-rc.2、一个是空字符串,不能替它推断。- star / 下载量 / 是否归档:未核实。它不在 awesome 的 4400 条里,本轮也没有查远端仓库的 stars / pushedAt / license 字段(
providedBy.github因此整段是未核实)。 - 宿主侧的
dsh.bundle:它的main指向lib/host.js,但声明里只有dsh.bundle.patch,没有dsh.bundle对象。对照@deepseek-ai/dsh-app-boot的loadProfile,profile 只要求dsh.bundle.patch,所以这能工作;但「这是规范推荐的写法还是特例」本轮未核实。 licenses的另一半:licenseRefs只有 package.json 的 MIT 一条,仓库根 LICENSE 文件本轮未读,署名与年份未核实。- 历史版本:本地 checkout 根目录有 0.1.0 到 0.5.0 的一串
.tgz,但那是构建产物目录,不代表发版历史;npm 上的版本序列未核实。
相关教程
谁引用了这一条
信息表
- category
- plugin.packaging
- entryGate
- pack
- install
- dsh plugin add github:DSH-PackForge/dsh-pack-plugin
- licenseRefs
- [object Object]
- maintainers
- hxh230802
- npm
- @dsh-packforge/dsh-pack-plugin
- positioning
- 装机后的日常入口——包已经装好了,接着要「导出当前 profile、装别人的包、切到另一个 profile」,这些事它能让你在 DSH 界面里做完;装机之前的批量导出与校验才轮到 dsh-packforge-app([GitHub](https://github.com/DSH-PackForge/dsh-packforge-app))的独立工具。
- referencedByTutorials
- tutorial/3
- repo
- DSH-PackForge/dsh-pack-plugin
- role
- bundle+client
- roles
- [object Object]、[object Object]
- updatedAt
- 2026-10-02
- usedInPacks
- 1900992335.desktop-pack、hxh230802.smoother-deepseek-harness
被 3 篇教程引用 · 被 6 条词条引用
最后更新 2026-10-02