dsh-restart-button:DSH 桌面端右上角常驻重启按钮

前言

DeepSeek Harness(DSH)桌面端装插件、换主题或改 cordis.yml 后,往往要整进程重启才生效。以前只能手动退出再点图标,既多一步,也容易在还有会话在跑时误关。社区插件 @yangluo-2021/dsh-restart-button 在窗口右上角挂一个常驻按钮,由宿主走优雅退出再拉起,并在有任务在跑时再弹确认。

这是什么

维护者 Yangluo-2021,分类为客户端。插件在 shell.overlay 层画按钮,登录页、空会话页和任意界面右上角都能看到(默认距右边 148px、上边 9px,避开 Windows 标题栏按钮组),不依赖当前会话视图。

npm 包名 @yangluo-2021/dsh-restart-button(裸名 dsh-restart-button 在 npm 上已被占用)。当前资料中版本为 0.6.1,许可证 MIT。SkillHub 目录页:https://www.skillhub.cn/plugins/Yangluo-2021/dsh-restart-button ;源码与说明:https://github.com/Yangluo-2021/dsh-restart-button 。

和「杀进程再开」的差别

README 用表格概括了设计目标:关停不用 taskkill /F,而是冻结外壳、断 IPC,让宿主自己走完退出流程(会话落盘、插件 dispose);有会话在跑时会告知数量,并可选「跑完后重启」;启动参数从原命令行提取并原样带回;重启后若上次中断了会话,新宿主会提示。进程定位按 pid 校验「主进程 exe + Host 为其子进程」,校验失败则放弃操作。

核心功能

按钮交互

  1. 空闲时点一下:默认直接重启,不弹确认框。
  2. 有会话在跑时点一下:确认框提供取消、跑完后重启、立即重启。
  3. 选择「跑完后重启」后,界面会显示已排期,可随时取消。
  4. 若上次重启中断了会话,重启完成后右上角出现提示,点「知道了」关闭。

宿主侧能力

浏览器侧通过 POST 触发重启;纯 dsh web 下会返回 501 并说明原因,不会误杀进程。请求仅接受本机回环、无代理头、非跨站 sec-fetch-site 等校验(README 有完整说明)。

HTTP 路由(节选)

方法 路径 作用
GET /dsh-restart-button/status 运行中会话数、上次中断记录、当前策略
POST /dsh-restart-button/restart {when:"now"} 立即;{when:"idle"} 等空闲
POST /dsh-restart-button/cancel 取消已排期重启

安装与启用

插件以当前 DSH 进程权限运行;安装前建议自行查看 GitHub 源码与 MIT 许可证。DSH 生态是「一切皆插件」;SkillHub 等为社区目录,与 DeepSeek / 幻方无官方从属关系。

平台限制(资料原文)

  • 仅 Windows:package.json 声明 os: ["win32"]。
  • 仅 DSH Desktop:需要 Electron Node 子进程与 IPC;非桌面形态不适用。

profile 名需与本机一致,DSH Desktop 一般为 desktop。可先执行:

dsh plugin --profile desktop list

从 npm 安装(推荐):

dsh plugin --profile desktop add @yangluo-2021/dsh-restart-button

从 GitHub 安装:

dsh plugin --profile desktop add github:Yangluo-2021/dsh-restart-button

本地目录或 tgz 也可用 file:<绝对路径> 形式添加;具体见 README「分享给别人」一节。

装完后需重启 DSH 生效(插件树在启动时合成)。用 CLI 改 profile 前须完全关闭 DSH Desktop,运行中 profile 写锁会阻止 CLI 写入。

卸载:

dsh plugin --profile desktop remove @yangluo-2021/dsh-restart-button

配置

在 profile 的 cordis.patch.yml 中为该 entry 增加 config:

- id: dsh-restart-button
  config:
    confirm: when-busy      # when-busy(默认)| always | never
    allowRestart: true      # false 时只显示按钮但拒绝执行

按钮像素位置在 client/client.js 的 INSET_RIGHT / INSET_TOP;无边框构建可调到例如 12。

典型用法与排错

日常:改完插件或配置后点右上角按钮重启,不必再手动退出应用。

排查重启链路时,可看日志文件 ~/.dsh/logs/dsh-restart-button.log,其中记录每一步状态(如 verified、host exited on its own、restart complete)。

维护者提供的离线自检(不触发真实重启或需改本机路径的脚本):

node scripts/smoke.mjs

e2e.mjs 会真实关开应用,勿在正在工作的会话里跑;细节见 README「自检」一节。

适用场景与注意

适合在 Windows 上使用 DSH Desktop、且经常因插件或 cordis.yml 变更需要整应用重启的开发者。

README 写明:「上次中断了 N 个会话」仅为告知,不会自动替你续跑会话;外壳冻结期间窗口尺寸位置可能来不及落盘,是为避免崩溃框的取舍。

结尾

dsh-restart-button 把「优雅重启整个桌面端」收进右上角一步操作,并在有会话在跑时再确认,减少误关与参数丢失。安装与行为以仓库 README 为准。

  • 目录页:https://www.skillhub.cn/plugins/Yangluo-2021/dsh-restart-button
  • GitHub:https://github.com/Yangluo-2021/dsh-restart-button
羽毛球分组比赛记分
小程序二维码

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

小夜