DSH Hub

DSH-PackForge/dsh-pack-plugin

dsh-pack-plugin

UIDesktop35 GitHub stars· updated 2026-09-30

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-plugin

Restart `dsh web` after install. Bundle APIs can change during the developer preview.

README badge

dsh-pack-plugin DSH Hub badge
[![DSH Hub](https://dshhub.dev/badge/dsh-pack-plugin.svg)](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 目标目录的内容。

格式契约

…

Related plugins