前言¶
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 为其子进程」,校验失败则放弃操作。
核心功能¶
按钮交互
- 空闲时点一下:默认直接重启,不弹确认框。
- 有会话在跑时点一下:确认框提供取消、跑完后重启、立即重启。
- 选择「跑完后重启」后,界面会显示已排期,可随时取消。
- 若上次重启中断了会话,重启完成后右上角出现提示,点「知道了」关闭。
宿主侧能力
浏览器侧通过 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