前言¶
在 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 .cjshelper,等待旧进程退出和端口释放后,以相同execPath/execArgv/argv/cwd重新启动 DSH;不使用PowerShell或taskkill。 - 命令与模型工具:提供
/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/loopbackguard 保护。 - 并发重复转换会被拒绝,返回
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