← 返回列表
未验证
给 DSH Desktop 补上一个它自己缺的「升级 DSH」入口。不改任何内核文件。
尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/9/19 · 已提供中文文档
DeepSeek Harness (DSH) Desktop plugin: adds the missing 「升级 DSH」 entry — tray command + dsh_upgrade model tool, driving the official version service and installer channel via desktopRuntime.updates. 不改内核文件。
综合分
29.3
GitHub 分
29.3
用户评分
—
★ Stars
0
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add Liu-fu-gui/dsh-desktop-upgrade该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
信任档位:已验证本站已于 0 天前真实安装成功
- 是什么
- dsh 原生插件 · market
- 装得上吗
- 本站已真实安装成功(非静态推断)
- 安全吗
- 本站尚未对该插件做风险分级(暂未覆盖,不等同于无风险)
- 还在维护吗
- 活跃:最近一次提交在 6 天前
档位由下列信号合成:本站实装验证(真实安装,当前最高到 L4)· 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。下方各区块是它的证据明细。 验证判据与等级说明 →
🟢实装验证通过· 2026/9/25
由本站实装验证器在真实 dsh 环境安装成功,非静态推断。
数据截至 2026/9/25(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-tools用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
由 DeepSeek 最新模型翻译生成dsh-desktop-upgrade
给 DSH Desktop 补上一个它自己缺的「升级 DSH」入口。不改任何内核文件。
为什么需要它
- DSH Desktop 的 Web 设置页没有检查更新按钮:client.js 里 api.checkForUpdates() 和中文文案「检查更新」都定义了,但那个组件从来没渲染它。本插件把这块补上了:设置 → DSH 升级。
- 官方入口只藏在系统托盘「检查更新…」(后台也会每 6 小时自动查一次并发系统通知)。
- 桌面版内核在 \resources\app\node_modules\@deepseek-ai\dsh,profile 里看到的 ~/.dsh/profiles/node_modules/@deepseek-ai/ 全是指向它的 Junction。所以任何"npm/pnpm 一键升级 dsh 本体"的第三方插件在这里都改不动内核,真正的升级只能靠官方安装包。
本插件做的就是把官方那条链路补到可点的地方,并让模型也能调用:
1. Web 设置页新增「DSH 升级」分区(client.js):显示当前版本 / 官方最新 / 更新通道,一个「检查更新」按钮,一个「下载并安装」按钮(有新版且当前平台可下载时才出现)。点下载仍会弹官方原生确认框,确认后走同一条安装包通道。
2. 托盘菜单新增「升级 DSH…」:查官方版本服务 → 有新版时弹原生确认框(下载 / 稍后)→ 下载官方安装包并打开。用的是桌面版自己的 desktopRuntime.updates 适配器,和官方托盘项完全同一条路径。
3. 模型工具 dsh_upgrade:status(只报版本,不弹窗)/ check(只检查)/ upgrade(确认后下载安装包)。
结构
| 文件 | 角色 |
|---|---|
| index.js | Host 半侧:Cordis 插件本体(托盘项、dsh_upgrade 工具、桥接装配) |
| bridge.js | Host 半侧纯逻辑:版本检查、升级流程、两条浏览器桥接路由 |
| client.js | 浏览器半侧 bundle:settings.section 分区 UI |
| cordis.patch.yml | bundle patch:往 profile 里插一行 desktop-upgrade |
浏览器半侧按 dsh-client-modules 的约定声明:package.json 里 dsh.client.platform = "web"、exports["./client"],bundle 用
window.__ModuleLoader__.load({ id: "dsh-desktop-upgrade", factory }) 的惰性 CJS 形状,由宿主在 /plugins/dsh-desktop-upgrade/client.js 提供。
patch 行的 name 必须等于包名,扫描才能把两者对上。
桥接路由(同源,仅接受 loopback / web runtime 的 trustedHosts,并拒绝浏览器跨站标记):
GET /dsh-desktop-upgrade/status -> { ok, result: { status, currentVersion, latestVersion, channel, canDownload, manualUrl } }
POST /dsh-desktop-upgrade/upgrade -> { ok, result: { ...同上, accepted } }
upgrade 不会自己装东西:它调用桌面版的 updates.confirmDownload() 弹原生确认框,确认后才把官方安装包交给系统下载并打开。
它放在哪
三层的职责不同,别混:
| 层 | 位置 | 谁管 |
|---|---|---|
| 桌面版本体(含内核) | D:\ruanjian\DSH Desktop\(resources\app) | 官方安装包 / 桌面版自带更新通道 |
| 插件包安装位置 | C:\Users\Administrator\.dsh\profiles\desktop\node_modules\dsh-desktop-upgrade | dsh plugin(= 在 profile 目录跑 pnpm) |
| 插件登记位置 | C:\Users\Administrator\.dsh\profiles\desktop\package.json 的 dependencies + dsh.profile.bundles | 同上,装完自动登记 |
也就是说:源码放哪都行(现在在 D:\trea\tmp\dsh-desktop-upgrade),真正生效的位置是 profile 的 node_modules + package.json。别手动拷进 profile,用官方命令装,它会顺带把 dsh.profile.bundles 对平。
安装
仓库已发布:(带 dsh-plugin topic,会被插件市场扫到)
在 DSH 终端(设置 → 打开 DSH 终端)或任何 PATH 里有桌面版 dsh 的终端里执行:
方式一:从 GitHub 安装(推荐)
dsh plugin add github:Liu-fu-gui/dsh-desktop-upgrade
方式二:本地开发态安装,改完代码重启即生效
dsh plugin add link:D:\trea\tmp\dsh-desktop-upgrade
装完确认
dsh plugin list
npm 目前没有发布:本机 npm whoami 未登录,且默认源是只读镜像 registry.npmmirror.com。
想走 npm 需要先 npm login(或配 //registry.npmjs.org/:_authToken),再用
npm publish --registry https://registry.npmjs.org;届时把 package.json 里的 "private": true 去掉即可。
dsh plugin 会自动补上 --profile desktop(桌面版 shim 的行为),实际就是在该 profile 目录跑 pnpm、然后把依赖对平进 dsh.profile.bundles。
建议先备份 profile:
Copy-Item C:\Users\Administrator\.dsh\profiles\desktop\package.json C:\Users\Administrator\.dsh\profiles\desktop\package.json.bak-dsh-desktop-upgrade
(以及 pnpm-lock.yaml)。目录里已有的 package.json.bak- 说明这套流程以前用过。
装完必须重启 DSH Desktop(profile 组合变化和 client bundle 都不会热生效;托盘项与设置页分区都是启动时装配的)。重启会中断当前会话 —— 从托盘菜单退出再开,或设置里「重启」。
使用
- 设置 → 「DSH 升级」:进页面自动查一次官方版本;有新版时出现「下载并安装」,确认后下载官方安装包并自动打开,跑完安装向导即完成升级。
- 托盘图标右键 → 「升级 DSH…」:同上,入口在托盘。
- 对话里让 agent 调 dsh_upgrade:例如"查一下 DSH 有没有新版本"(status / check),或"升级 DSH"(upgrade,同样会在屏幕上弹确认框,需要你点同意)。
开发与测试
node --check index.js; node --check bridge.js; node --check client.js
node --test test/bridge.test.mjs test/client.test.mjs
test/bridge.test.mjs 覆盖 SemVer 预发布规则、版本检查、升级流程(绝不绕过原生确认框)、以及桥接路由的 403 / 404 / 405 / 500 分支;
test/client.test.mjs 用替身 window.__ModuleLoader__ 装载 bundle,校验注册形状,并在桌面版自带的 React 18 上跑一次自带 hook dispatcher 的渲染冒烟。
卸载
dsh plugin remove dsh-desktop-upgrade
然后重启 DSH Desktop。
验证过的行为(本机 2026 实测)
- dsh-plugin-desktop@2.0.10 / stable 通道:官方最新 = 2.0.10 → 返回 up-to-date。
- beta 通道:官方最新 = 2.0.10-beta.1,按 SemVer 比较低于稳定版 2.0.10 → 也判为 up-to-date(不会把你劝去降级)。
- dsh-plugin-desktop@2.0.11 发布后:设置页显示「当前 2.0.10 / 官方最新 2.0.11」,点「下载并安装」弹官方原生确认框。
- node --test test/bridge.test.mjs test/client.test.mjs:15 个用例全绿。
已知边界
- 只在 DSH Desktop 发行版里可用:desktopRuntime 服务不存在时,插件不注册托盘项,工具与桥接都返回 unavailable。
- 非打包模式(isPackaged === false)不注册托盘项;桥接路由仍在,但返回 unavailable。
- 它不做应用内静默自更新,也不替换 resources\app 里的内核 —— 那属于改安装目录,会被下次官方更新覆盖。它只驱动官方安装包通道。
- 它不改动、也不依赖任何内核文件;只用公开的 Cordis 服务(tools、desktopRuntime、webServer)与官方版本 / 下载端点。