一个小而自洽的 DSH 电源控制插件:侧边栏电源按钮 + 上拉「重启/关机」菜单 + Windows 关机风格过渡遮罩。自带重启/关机引擎(不依赖其它插件),动态端口适配。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:keyiadiannao/dsh-restart-button
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本。请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
DeepSeek Harness 的自包含电源控制插件:侧边栏底部电源按钮 + 上拉重启/关机菜单 + 全屏过渡动画。重启/关机引擎内置在本插件中,不依赖其它插件。
由 DeepSeek AI 辅助开发,发布前经人工 review。
功能
- 电源按钮:注册到侧边栏底部(
sidebar.footer.action),外观与旁边的"设置"按钮一致(34px 行高,主题变量,跟随深浅色) - 上拉菜单:「重启」「关机」两项,点外部或 Esc 关闭
- 重启:写
.cjshelper →node <file>detached 启动(无控制台窗口)→ 等端口释放 → 用相同 execPath/execArgv/argv/cwd 重新拉起 DSH → 响应刷出后终止旧进程 - 关机:终止进程,不再拉起
- 过渡动画:Windows 关机风格遮罩 + 环形进度 + 阶段文字;重启后自动刷新
restart_harness模型工具:与anweat/dsh-restart同名,单独安装时由本插件提供;名字被占用则自动跳过
安装
dsh plugin --profile web add "github:keyiadiannao/dsh-restart-button#master"
重启 DSH 后生效:侧边栏底部出现电源按钮。需要 Node ≥ 22.19。
工作原理
点击电源 → 菜单 → 重启
[宿主] POST /api/dsh-restart-button/restart
→ 写 $USERPROFILE/.dsh/restart-helper-<pid>-<ts>.cjs
→ spawn `node <helper>` (detached, windowsHide)
[助手] 等旧 PID 退出 → 等端口释放 → 用相同 execPath/argv/cwd 重新拉起 DSH → 自删
[宿主] 响应刷出后终止
[客户端] 轮询 health → 确认新 instanceId → 自动刷新
关机则 POST /api/dsh-restart-button/shutdown,终止且不拉起。
开发中踩过的两个坑:
- helper 必须脱离进程树(detached + unref),否则杀 DSH 时 helper 一起死
- helper 写成真实 .cjs 文件而非
node -e:多行node -e脚本会被 Windows CreateProcess 破坏成静默 SyntaxError
安全
- 破坏性 POST 带 同源/loopback 防护(CSRF)
- at-most-once 锁:并发重复重启会被拒绝(第二次返回 409)
- 重启成功以每次进程独立的 instanceId 变化为准(旧→新),而非仅凭短暂离线
开发
npm run build # tsdown:host + client bundle
npm run typecheck # tsc --noEmit
产物:host 在 lib/index.js,client bundle 在 lib/client.js(已入库,git 安装免构建)。
License 与致谢
MIT。"detached helper 重新拉起"的思路参考了 anweat/dsh-restart(MIT); 实现为独立编写(真实 .cjs 文件、无 PowerShell、动态端口),未复制其代码。
链接
同类插件
strukto-ai/mirage#dsh★ 3431
把文件系统与 bash 提供者换成 mirage 虚拟工作区:文件工具与 shell 命令作用于挂载的资源(RAM、S3、Redis、Slack、Gmail、Notion、Postgres)而非宿主磁盘,支持按挂载点设置读/写/执行模式、按命令选择沙箱(进程内 monty、pyodide、quickjs;远程 docker、e2b、daytona),并可在虚拟终端中安装 CLI(git、gh、slack、linear、ntn、gws,或自行注册的程序树)作为命令头词。
hust-open-atom-club/oh-dsh★ 176
社区发行版:TUI、桌面端与 Web UI 统一体验,分层安装、一步到位。
Jayden-X-L/forkprobe★ 65
同一任务并行试跑多个技能,对比结果选出最优。
vlln/plugin-registry★ 39
插件生态基建:浏览器面板管理官方 repository 插件(0 patch)+ make-dsh-plugin 插件开发引导技能。
forrestchang/dsh-multica-runtime★ 33
让 dsh 运行时跑在 Multica 上。
DietCokewithSugar/dsh-user-experience★ 18
帮你发现项目中可能存在的用户体验问题:自动走查 React/TypeScript 源码,定位问题并给出具体优化建议。