dsh-power-button:DSH 侧栏电源按钮与独立重启/关机控制

前言

在 DeepSeek Harness(DSH)的 Web 界面里,重启或停止宿主进程可以作为一个插件能力来做。keyiadiannao/dsh-power-button 在侧栏底部加入电源按钮,打开后提供 Restart/Shutdown 菜单,并带 Windows 风格的全屏过渡覆盖层。它内置独立重启引擎,不依赖其他插件。

这是什么

keyiadiannao/dsh-power-button 是一个面向 DSH 的自包含电源控制插件,由 keyiadiannao 维护。它把侧栏按钮、Restart/Shutdown 菜单、确认交互和过渡覆盖层放进 Web 侧栏,用于完成 DSH 的重启或停止。许可证为 MIT。

核心功能

  • 侧栏底部电源按钮:主题感知,并匹配相邻 Settings 触发器。
  • Restart/Shutdown 菜单:提供重启和关机两个动作;确认重启后页面自动重载。
  • Windows 风格全屏过渡覆盖层:用于展示重启或关机过程中的过渡状态。
  • 内置独立重启引擎:写入 detached .cjs helper,等待旧进程退出和端口释放后,以相同 execPath/execArgv/argv/cwd 重新启动 DSH;不使用 PowerShelltaskkill
  • 命令与模型工具:提供 /restart/shutdown,以及 restart_harness 模型工具;若该工具名称已被其他插件占用,则跳过注册。
  • 本地化:提供 zh/en UI 和宿主通知,并遵循 profile 的 locale.preference
  • 日志清理:启动时清理运行时目录中超过 7 天的 restart-helper-*.log 文件。

安装与启用

需要 Node >= 22.19。使用以下命令安装:

dsh plugin --profile web add "github:keyiadiannao/dsh-power-button#master"

安装后重启 DSH,侧栏底部会出现电源按钮。

配置

插件通过 profile 的 cordis layer 配置,可以使用 cordis.patch.yml 或 settings UI。示例:

- id: dsh-power-button
  config:
    enableModelTool: true

常用配置项:

配置项 默认值 说明
enableModelTool true 用于注册 restart_harness 模型工具
maxDelayMs 5000 ms restart_harness 模型工具 delayMs 参数的上限;有效下限为 1000 ms

典型用法

1、点击侧栏底部的电源按钮,打开 Restart/Shutdown 菜单。

2、选择 Restart 并确认后,页面会自动重载。

3、选择 Shutdown 时,GUI 会先弹出确认对话框;需要明确确认才会停止进程。

4、也可以使用 /restart/shutdown 命令。

5、如果启用了 restart_harness 模型工具,可传入 delayMs;该参数最低为 1000 ms,默认上限由 maxDelayMs 控制,默认 5000 ms

6、/shutdown 和模型工具保持单动作设计,模型不暴露 shutdown。

安全与运行时细节

  • 破坏性 POST 请求受 same-origin/loopback guard 保护。
  • 并发重复转换会被拒绝,返回 409
  • 命令日志会脱敏;helper/marker 文件权限为 0600,运行时目录权限为 0700
  • 重启确认仅通过 UI toast 通知,不写入任何 session log。

适用场景与注意

适合需要在 DSH 的 Web 侧栏中完成重启/关机,且希望避免依赖其他插件的开发者或使用者。由于插件会执行重启/停止 DSH 进程,它以当前 dsh 进程权限运行;安装前应检查源码与许可证。许可证为 MIT;detached helper relaunch 想法参考 anweat/dsh-restart(MIT),但实现独立编写、未复制代码。

链接

  • GitHub:https://github.com/keyiadiannao/dsh-power-button
  • 社区目录:https://www.skillhub.cn/plugins/keyiadiannao/dsh-power-button
羽毛球分组比赛记分
小程序二维码

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

小夜