dsh-plugin-desktop-updates:为 Windows 桌面 Harness 提供更新与插件管理界面

前言

在 DeepSeek Harness(DSH)里,宿主进程负责版本、插件列表和安装动作,而用户看到的往往是 WebView 里的页面 UI。若每次改「检查更新、装插件、重启」都要重做原生窗口,成本高且难维护。desanv01 维护的 dsh-plugin-desktop-updates 把这套能力做成客户端插件:侧栏入口、全屏 Updates 面板、Settings 里的 Updates 区块,都挂在已有 Harness Web UI 上,并通过桌面应用注入的 window.__dshDesktop 桥接读写状态与执行操作。

需要事先分清环境:README 写明,该插件针对捆绑 DeepSeek Harness 0.1.5-rc.x 运行时的 desanv01/deepseek-harness-desktop-app(该桌面应用已归档);官方 DeepSeek Harness 桌面端自带插件管理与更新视图,不暴露 __dshDesktop。在官方应用里插件仍会注册 UI 位,但会如实提示桥接不可用,而不是假装面板可用。

这是什么

  • 名称:dsh-plugin-desktop-updates(npm 包名相同)
  • 维护者:desanv01
  • 分类:客户端(Web UI)
  • 许可证:MIT;当前发布版本 1.3.0(以 npm / package.json 为准)
  • 定位:为上述 Windows 桌面 Harness 应用渲染 Updates 与插件管理界面,数据与动作由应用原生桥驱动,插件本身不读取 Config。

社区目录页:SkillHub 插件条目。源码与说明:GitHub 仓库。

核心功能

下面能力均来自仓库 README 的「What it does」与槽位说明。

  1. 侧栏 Settings 旁一行入口(56px 轨道图标 + 标签):打开 Updates 面板;若有更新的应用构建,显示提示点。
  2. 主面板(main):展示桌面应用版本、已安装与已发布的 Harness 版本、当前 home 运行的插件列表;提供检查、下载、安装、重启、修复 Harness,以及对插件的启用、禁用、安装、移除。
  3. Settings 区块:与面板相同的信息与操作,以更紧凑的形式呈现。
  4. 注册可见性:Shell 可能静默拒绝槽位注册。插件把已注册槽位与每一次拒绝写入 window.__dshDesktopUpdates,并记入应用日志;Updates 区块会重复展示拒绝信息,避免「插件没加载」与「槽位被拒」看起来一样。
  5. 无桥接时的降级:没有 window.__dshDesktop 时,明确提示应用不可用,不伪造可操作界面。

打开面板依赖 Harness 的 ctx.layout.selectPanel,属于布局动作,不经过桥接;因此即使桥暂时不可用,仍可通过布局选中面板(若 Shell 无对应 panel 槽,应用会回退到原生更新窗口,与托盘菜单行为一致)。

插件占用的槽位

槽位 标识 渲染内容
sidebar.footer.action id desktop-updates Settings 旁的 Updates 入口
sidebar.panellist id desktop-updates 与主面板同 id 的侧栏行
main key desktop-updates Updates 全屏面板
settings.section id desktop-updates Settings 内 Updates 小节

列表类槽位需要 id,main 需要 key;缺一则 Shell 会拒绝注册。

依赖与要求

  • DeepSeek Harness 0.1.x 组合,且具备 layout 服务(上述桌面应用捆绑的运行时)。
  • 宿主需提供 @deepseek-ai/dsh-client-ui-layout(在 dsh.client.inject 中声明)。
  • 要使检查更新、装插件等操作可执行:目标桌面应用必须注入 window.__dshDesktop。

安装与启用

插件以 DSH 进程权限运行;安装前请阅读源码与 MIT 许可证,并确认你使用的是提供 __dshDesktop 的那款桌面应用,而非仅期望在官方桌面端「完整可用」。

从 npm 安装到 Web profile

在 PowerShell 中执行(命令来自 README):

dsh plugin --profile web add dsh-plugin-desktop-updates

安装进桌面应用自带的 Harness home

桌面应用会自行安装其捆绑副本。在应用内可通过 Settings → Updates → 插件管理器 指定包名、git spec 或本地目录;从 npm 安装会替换捆绑副本。若已安装的插件版本高于可执行文件内捆绑版本,应用不会在下一次启动时强行降回捆绑版;需要恢复捆绑副本时,可使用 DeepSeekHarness.exe --install-plugin(README 说明)。

从源码目录加入 profile(需已有本地克隆)

README 给出的本地添加方式(非 git clone 步骤本身):

cd dsh-plugin-desktop-updates
dsh plugin --profile web add .

客户端为手写 module-face 的 client.js,无需单独构建步骤。

典型用法与排错

无配置项:插件不读 Config,界面内容完全来自桥接报告的状态。

冒烟测试:客户端可在假 Shell 下无头渲染;桌面应用 CI 使用其仓库中的 tools/client-plugin-smoke.mjs 加载真实 client.js 并校验槽位规则。截图见 deepseek-harness-desktop-app#screenshots。

现象 可能原因 处理方向
侧栏完全没有 Updates 行 profile 缺少 bundle 行或未提供 client 确认 cordis.patch.yml 已安装;在页面查看 window.__dshDesktopUpdates
有行,面板提示应用不可用 无 __dshDesktop 使用提供桥接的 desanv01 桌面应用
有行,面板空白 桥存在但未返回状态 查应用日志中每次加载后的 marker
面板正常但 Settings 无 Updates 小节 settings.section 注册被拒 看 marker 与 Updates 区块中的拒绝说明

代码结构(便于对照仓库)

部分 路径
宿主侧 index.js(空 apply,用于留在 bundle 栈)
浏览器侧 client.js(module-face bundle)
Loader 行 cordis.patch.yml
注册标记 window.__dshDesktopUpdates

适用场景与注意

  • 适合:在 desanv01/deepseek-harness-desktop-app 及其捆绑的 Harness 0.1.x 环境中,希望用统一 Web UI 管理应用更新、Harness 版本与 home 插件,并需要看见槽位注册是否被 Shell 拒绝的开发者或维护者。
  • 不适合当作通用官方桌面插件:官方 DeepSeek Harness 桌面端已有自己的更新与插件管理,且不暴露本插件依赖的桥;在此安装只会得到诚实的「桥不可用」提示。
  • 生态说明:DSH 奉行「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-plugin-desktop-updates 把 Windows 桌面 Harness 的更新与插件运维收敛到侧栏、主面板与 Settings 一处,用 __dshDesktop 对齐应用侧事实与动作,并在无桥或槽位被拒时保持可观测。进一步细节与故障表见 GitHub README;插件目录见 SkillHub。

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

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

Xiaoye