DSH-PackForge/dsh-pack-plugin
dsh-pack-plugin
dsh-pack-plugin is a community DeepSeek Harness plugin. Read the repository README before installing.
Install
npx -y @deepseek-ai/dsh plugin --profile web add @dsh-packforge/dsh-pack-pluginRestart `dsh web` after install. Bundle APIs can change during the developer preview.
README badge
[](https://dshhub.dev/plugins/dsh-pack-plugin)Paste this into your README. The star count updates with every catalog sync.
From the README
Excerpt from DSH-PackForge/dsh-pack-plugin, cleaned of badges and images.
@dsh-packforge/dsh-pack-plugin
DSH 整合包(.dspack)的纯方案 B 插件 bundle:一个自包含的独立 npm 包,注入官方 DeepSeek Harness 桌面端,提供 .dspack 导出 / 安装 / 多 profile 切换 / 市场浏览 / 工作区配置 / 任务中心。只做 UI + 后端,不做 AI 驱动的整合包管理。
- 零官方源码改动:不改
apps/desktop/apps/desktop-host。 - 零第三方插件:只依赖 DSH 出厂运行时服务(
ctx.connection/ctx.webServer/ctx.slots/ctx.locale/ctx.profileContext)。 - 自包含:运行时依赖仅
fflate(ZIP)+proxy-agent(下载代理),其余全部 vendor 进仓库(src/core/、src/host-node.js),不依赖@dsh-packforge/*引擎包。 - 加载方式:官方 bundle 机制——
cordis.patch.yml插入 host 插件,dsh.client注入 client 插件。
完整设计见 dsh-packforge-app/docs/dsh-pack-方案.zh.md;格式契约见 specs/。
能力总览
- 导出
.dspack:把某个 profile 打包成单文件整合包(profile 形态),或从源仓库导出(exportRepo)。UI 目前只暴露 profile 形态;dshhome(整机)形态的打包 / 安装 / 校验逻辑在 core 里就绪,未在设置面板接线。 - 安装
.dspack:本地文件 / URL / 市场包均可;按sha256+size校验完整性,pnpm重建依赖并对账,home 级resources与files[]逐项下载落位。 - 多 profile 切换:
profiles/desktop是激活指针(junction 换指),切换即换指 + 重启桌面,无需重装。 - home 级 skills / .agent-presets 隔离:per-profile 槽位(junction),换 profile 时一并换指(见下文)。
- 市场浏览:
index.json精简指针 +packs/<owner>.<repo>/懒加载完整清单 / README。 - 工作区配置
.dshpkcfg:每个 profile 一份,保存 / 读取 / 自动回填。 - 下载代理:About 页可配代理地址(存
config.proxy,覆盖一切);未配时依次回落环境变量(HTTP_PROXY/HTTPS_PROXY/ALL_PROXY/NO_PROXY)与 Windows 系统代理(含ProxyOverride旁路)。支持 http / https / socks / socks5,市场索引 / 包详情 /.dspack安装 / npm 拉取统一生效。 - 任务中心:
install/export/create非阻塞执行,设置面板内嵌视图显示阶段时间线与进程输出。
架构
host 侧(Node) client 侧(浏览器 bundle)
src/index.js ─┐ src/client.js ── bundle ──► lib/client.js
src/rpc.js │ registerRpc(ctx, runtime) src/client-plugin.js(dspackforge)
src/endpoints.js → ctx.webServer 挂 /dsh-pack 前缀路由
src/channel.js ┘ src/client-rpc.js(rpc.call 封装)
src/profiles.js / junction.js src/settings.js(slots 设置页:管理/导出/市场)
src/migrate.js / migrate-helper.js src/progress.html
src/ensure-manager.js / tasks.js / progress.js
src/core/(vendored 引擎) src/locale(可选)
- RPC 通道:
CHANNEL = '/dsh-pack'(src/channel.js,host / client 共用)。host 侧自建前缀路由挂在ctx.webServer上(不走ctx.connection.rpc.handle——它对第三方插件不可用),并用ctx.connection的请求授权栅栏挡住非 client 调用;client 侧rpc.call静默收发,不在聊天栏显示任何工具调用。 - Host DI 边界:
src/core/不直接碰node:fs/node:crypto/node:child_process,一律经Host接口(src/host.js)注入,src/host-node.js是 Node 实现。core 因此可脱离 DSH 单独测试。除必选能力(读写文件 /download/exec等)外,Host 还提供可选能力(如pnpm(args, opts)):默认回退exec('pnpm', …)(依赖 PATH),宿主可覆盖为「复用 DSH 自带 node+pnpm 运行时(resources/runtime/)」,让桌面端装包重建依赖时不依赖用户机器 PATH 上的 node/pnpm。core用typeof host.pnpm === 'function'探测,旧宿主无此能力时自动回退,行为不变。 - 多 profile 切换(junction 换指):把
profiles/desktop换成 junction 指向目标 profile,切换 =unlink旧 junction +symlink(target, 'junction')。红线:用unlink(lstat 语义)删 junction,绝不rm -r——后者在 Windows 上会递归删掉 junction 目标目录的内容。
格式契约
…

