前言¶
在 DeepSeek Harness(DSH)里装插件、改客户端 bundle 之后,常见做法是手动关进程再开,或在命令行里逐个 dsh plugin add。Windows 上若用脚本拉起 GUI,还容易踩到「控制台窗口残留、关窗即杀进程」的问题。侧栏里也没有统一的「哪些插件有新版本、更新后要刷新还是完全重启」入口。
下面介绍社区插件 dsh-restart-and-update(维护者 dolacmeo,分类:客户端)。它在侧栏底部动作行提供「重启」与「更新插件 / 插件市场」,并用 Host 侧路由完成检测、安装与(在 Windows 上)脱离进程树的完全重启。
这是什么¶
dsh-restart-and-update 是 DSH 的双半插件:Client 半在侧栏 footArea 的 sidebar.footer.action(order 1000)注册两个按钮;Host 半注册 HTTP 路由,读 profile 的 package.json、查 npm registry,并调用桌面自带的 dsh.cmd 执行更新与重启。
官方简介:从侧栏重启 DeepSeek Harness 并按版本更新插件——包含在 Windows 上能 survive console trap 的完全重启、带发布时间的版本比对,以及回到插件市场的入口。
- 目录页:https://www.skillhub.cn/plugins/dolacmeo/dsh-restart-and-update
- 源码与说明:https://github.com/dolacmeo/dsh-restart-and-update
- 许可证:MIT(见仓库
package.json) - 当前 npm 版本(资料快照):1.0.0
侧栏入口与弹窗¶
入口行¶
两个按钮共用侧栏底部一行,排在官方/第三方条目之后:
- 左:重启——44px 行高,带图标与文字。只有「已经更新完、等着重启生效」的插件才会出现橙色提醒 badge(tooltip:「N 个插件已更新,等重启生效」)。仅有可选更新、尚未执行更新时,重启按钮不会出现数字。
- 右:有更新时显示「更新插件」,带蓝色数量 badge;没有更新时变为「插件市场」(提包图标),在本插件自己的全屏浮层里打开市场的
discover分栏(不是依赖默认可能不存在的dsh-market主面板 key)。
侧栏收进 56px 轨道时,两按钮退成 36×36 图标,badge 变为右上角小圆点。
重启弹窗¶
标题、说明,以及两行按钮:第一行 重启GUI / 完全重启,第二行 取消 通栏。
更新弹窗¶
可滚动插件列表(每行:插件名、当前版本与发布时间 → 新版本与发布时间,行尾标 需完全重启 或 刷新即可),底部 取消(左)与 更新 (n)(右)。列表过长只滚动列表区域,底部按钮不会被挤出屏幕。
检测时机¶
Client 模块挂载后约 300ms 检测一次;窗口重新可见时再检测。Host 侧 packument 有 10 分钟缓存。
两种重启的区别¶
| 按钮 | 行为 | 影响 |
|---|---|---|
| 重启GUI | 浏览器 location.reload() |
只重载前端、重新拉客户端插件代码;后端、会话、正在跑的任务不受影响 |
| 完全重启 | POST /dsh-restart-and-update/restart,由 Host 拉起脱离进程树的 PowerShell worker:可选先更新插件 → taskkill /T /F 杀应用 → 再启动 DeepSeek Harness.exe |
整个应用与后端一起重启;日志在 %TEMP%\dsh-restart-and-update\restart-*.log |
| 取消 | 关闭弹窗 | 无 |
完全重启目前只在 Windows 上有实现;重启GUI 各平台可用。
Worker 通过 WMI Win32_Process.Create 启动,避免 Electron 主进程 AttachConsole 认领 worker 控制台而导致「关控制台窗口杀掉 Harness」;写操作还要求请求头 x-dsh-restart-and-update: full 并与 Origin/Host 同源校验。
插件市场入口¶
没有待更新插件时,第二个按钮打开本插件浮层内的市场面板:优先 ctx.get('market') 的 render({ preferredSubsectionId: 'discover' })(市场 README 中的官方嵌入方式)。Client 侧 ctx 只有 get / on / provide / effect,不能用 ctx.inject。
- 未安装 dshmarket 时:浮层显示安装确认,确认后
POST /dsh-restart-and-update/install-market,走dsh plugin --profile <p> add dshmarket@<最新版本>,成功后提示重启并可直接点 完全重启。 - 取不到 market 服务时:回退为
layout.selectPanel('plugins'),在插件页的 Discover tab 浏览。
更新插件¶
检测¶
GET /dsh-restart-and-update/updates 对 profile 里 npm 依赖查 registry.npmjs.org 完整 packument(需 time 字段),比较 semver,返回 updatable(驱动更新按钮蓝色 badge)与 pending(已装新版本、进程尚未加载,驱动重启按钮橙色 badge)。pending persisted 在 %TEMP%\dsh-restart-and-update\pending-updates.json,刷新页面不会清掉;完全重启前 worker 会清空。
「刷新即可」与「需完全重启」的判定与市场一致:manifest 里 dsh.bundle === undefined && dsh.client !== undefined 为纯客户端插件,刷新 GUI 即可;其余含 Host 半的必须完全重启。
执行¶
POST /dsh-restart-and-update/update,body { "names": [...] },需头 x-dsh-restart-and-update: full。通过 resources/runtime/cli/bin/dsh.cmd 执行 dsh plugin --profile <p> add <name>@<精确版本>(不用 @latest,避免 pnpm release-age 导致版本不动仍报成功)。装完回读 node_modules 校验版本。dshmarket 不能自我替换,记为 deferred,由完全重启 worker 在杀进程前更新。
安装与版本要求¶
在已安装 DSH CLI 的环境中执行:
dsh plugin add dsh-restart-and-update
- Node.js:20+
- dsh:
>=0.2.0-rc.1 <0.3.0-0
改 Host 半 index.js 后需 dsh plugin remove dsh-restart-and-update 再重新 add,才能换掉已加载的模块代际。
典型用法¶
- 安装插件后启动或刷新 Harness,看侧栏底部是否出现「重启」与「更新插件 / 插件市场」。
- 若有蓝色 badge,点 更新插件,在弹窗勾选列表后点 更新 (n);行尾提示 刷新即可 的,更新后点 重启GUI;提示 需完全重启 的,更新后点 完全重启(Windows)。
- 若橙色 badge 提示待生效插件,打开重启弹窗确认文案后选择 重启GUI 或 完全重启。
- 无待更新项时,用 插件市场 浏览 discover;未装市场时按浮层引导安装 dshmarket。
Host 状态可查:GET /dsh-restart-and-update/state(平台、exe、canRestart、profile、市场是否安装等)。
适用场景与注意¶
适合经常在 Harness 里维护 npm 插件、需要在 GUI 内完成「查更新 → 安装 → 选对重启方式」的开发者。完全重启依赖 Windows 与本地 DeepSeek Harness.exe 路径;Linux/macOS 用户仍可用 GUI 重载与更新检测,但无法使用该插件文档中的完全重启 worker 路径。
插件以当前 DSH 进程权限运行,安装前建议阅读仓库源码与 MIT 许可证。SkillHub 目录为社区站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-restart-and-update 把重启 Harness、按 semver 与发布时间更新插件、以及回到市场 discover,收敛到侧栏底部一行操作,并在 Windows 上处理了控制台陷阱与 Host 半插件必须进程级重启的差异。