前言¶
在 DSH(DeepSeek Harness)桌面端里,插件市场会不断发布新版本,桌面 App 本身也会走独立的更新通道。若按常规做法,你需要分别打开插件管理或市场逐项核对版本、再单独触发 App 更新,步骤分散且容易漏项。dsh-one-click-update 在 Harness Web UI 侧边栏增加一行入口,进入更新页后按固定顺序串行处理「市场内已安装且可更新的插件」,再在确有新版本时交给桌面端官方的 window.dshDesktop.updates 流程,全程带逐项进度与状态反馈。
这是什么¶
dsh-one-click-update 是维护者 jaredwang 发布的 DSH 客户端类插件(npm 包名 dsh-one-click-update,当前版本 0.1.1,MIT 许可证)。它不改变 Host 侧能力:index.js 为空实现,逻辑集中在浏览器端的 client.js,通过 Cordis patch 注册侧边栏入口与主面板页。社区目录页见 SkillHub,源码与说明见 GitHub 仓库。
核心功能¶
一次打开更新页,等价于执行一轮「全部更新」,顺序如下。
- 插件市场:调用同源 Update API v1——先
GET /dsh-market/api/v1/capabilities探测能力与 runtime,再GET /dsh-market/api/v1/updates/summary拿到所有可更新包;对每个可更新项串行POST /dsh-market/api/v1/updates,并每 700ms 轮询GET /dsh-market/api/v1/operations?operationId=…(最长约 8 分钟),页面展示「已安装版本 → 目标版本」与状态;失败项显示市场返回原因(如RELEASE_TOO_FRESH映射为「发布太新」),可点「重试失败项」。 - DSH 桌面 App:读取 preload 注入的
window.dshDesktop.updates(status()/subscribe()/open());仅当确实存在新版本时才调用updates.open(),避免每次进入都弹出原生「已是最新」对话框。 - 侧边栏状态:入口图标随两边状态变化——无更新为灰色下载图标;有更新为品牌色与呼吸圆点;更新中为环形进度(插件项用真实 percent);出错为红色警示。
Host 半部不需要额外配置;桌面 App 内市场请求经 dsh-app:// 转发到本机 Host,纯浏览器访问 http://127.0.0.1:PORT 时仍可更新插件市场部分,但 App 更新会提示「更新 DSH 桌面 App 仅在桌面 App 内可用」。
安装与启用¶
插件已发布到 npm,也可从 GitHub 或本地路径安装。README 要求 DSH 引擎 >=0.2.1-rc.5。桌面 App 使用 desktop profile:
# 从 npm 安装(推荐)
dsh plugin --profile desktop add dsh-one-click-update
# 从 GitHub 安装(与 npm 发布同一份代码)
dsh plugin --profile desktop add github:jaredwang/dsh-one-click-update
# 本地开发(从工作区目录安装)
dsh plugin --profile desktop add /absolute/path/to/dsh-one-click-update
若只用 dsh web,将 --profile desktop 换成 --profile web。安装后刷新页面(桌面 App 内可用 Cmd+R),侧边栏在「插件市场」与「自动化任务」附近(order: 5)会出现本插件入口。
卸载可通过 Harness 内 plugin_manager 的 remove_bundle 移除 dsh-one-click-update,或执行:
dsh plugin --profile desktop remove dsh-one-click-update
典型用法¶
- 启动 DSH 桌面 App 并打开 Harness Web UI。
- 在侧边栏点击一键更新入口(文案来自插件 locale 注册)。
- 进入主面板页
one-click-update后,页面会自动开始插件串行更新;无需手动勾选条目。 - 插件阶段结束后,若桌面 App 有新版本,页面会自动进入官方更新流程(检查 → 下载 → 安装 → 重启);主进程在重启前仍会弹出原生「安装并重启」确认框,插件不会也无法跳过。
- 若有插件更新失败,在页面上查看原因并使用「重试失败项」;若提示需重启桌面 App 后插件才生效,按提示重启(桌面端 Update API 的
restart.supported为false,页面不显示重启按钮)。
在纯浏览器打开 Harness 时,仍可完成插件市场部分的更新;App 自身更新不可用,属文档明确限制而非故障。
适用场景与注意¶
适合谁:长期在 DSH 桌面端使用插件市场、希望少步骤、少漏更的日常开发者;希望侧边栏一眼看到「是否有可更新项」的用户。
运行与信任:插件以当前 DSH 进程权限运行,会向本机 Host 上的市场 API 发起更新请求;安装前应阅读 源码 与 MIT 许可证,确认符合你的环境策略。
文档中的明确限制(非 bug):
- App 安装重启前的原生确认框不可跳过;有活跃任务时主进程会阻止重启。
- 市场
holdYoungReleases可能暂时不展示刚发布的版本,updatable: 0属正常。 operation仅存在于当前 Host 进程,重启 Harness 后旧operationId会 404,本插件按 operation lost 处理为失败。- 当前 App 更新 product API 不暴露完整当前版本号,「当前版本」由桌面端对话框展示。
维护者提供的离线自检:npm test(node test/smoke.mjs,42 项断言)与 node --check client.js,不依赖额外 npm 包。
结尾¶
dsh-one-click-update 把「市场插件批量更新」与「桌面 App 有条件跟进更新」收拢到侧边栏一个入口,并用状态机驱动图标与页面进度。需要安装命令与接口细节时,以仓库 README 为准。