前言¶
DeepSeek Harness (DSH) 的核心设计理念是「一切皆插件」。在开发或运维过程中,有时需要在不进入终端、不调用 systemctl 或直接操作进程的情况下重启服务。dsh-restart-control 是由开发者 darkchaox 维护的一个插件,它为 DSH Web 界面增加了一个受控的「重啟 DSH」区块,允许管理员通过浏览器发送重启请求,并由插件根据主机环境自动选择最合适的方式执行。
核心功能¶
该插件主要包含以下能力:
- Web UI 区块:在 DSH Web 的设定页增加「重啟 DSH」区块,提供确认按钮、状态显示与重新整理功能。
- 跨平台支持:支持 Windows、macOS 和 Linux,且无需 root、sudo 或 shell 执行权限。
- 外部管理器整合:可配合 systemd、PM2、Docker、Windows Service 等外部服务管理器工作。
- 安全沙箱:浏览器请求被限制在
settings命名空间内,仅允许提交固定格式的状态,不执行任意 shell 命令或文件操作。 - 可靠确认:通过
bootId机制确认服务确实经历了重启,防止伪成功状态。
安装与启用¶
安装前请确保已安装 DSH 官方 CLI,且使用的是 web profile。
官方安装命令:
dsh plugin --profile web install darkchaox/dsh-restart-control
安装完成后,重启 DSH 并刷新 Web 设定页,即可看到新增的「重啟 DSH」区块。
使用方式¶
基本操作流程¶
- 在 DSH Web 的設定頁找到「重啟 DSH」區塊。
- 點擊「重啟 DSH」按鈕。
- 確認目前 Web 連線會短暫中斷,點擊「確認重啟」。
- 插件會保存
scheduled狀態,並根據環境變數配置進行重啟。 - DSH 重新連線後,UI 會輪詢狀態,直到檢測到新的
bootId並標記為「重啟成功」。
重启模式配置¶
插件通過環境變數 DSH_RESTART_CONTROL_MODE 控制行为。若未設定,預設為 auto。
auto(推薦手動啟動):
* Windows:直接使用內建 portable helper。
* macOS / Linux:若偵測到 systemd 則使用 external,否則使用 portable。
portable:
* 啟動內建 helper,等待當前 DSH 進程退出,然後使用原本的 executable、參數、工作目錄與環境重新拉起 DSH。
* 適用於手動啟動的環境。
external:
* 保存 scheduled 狀態後,以退出碼 75 結束進程,不自行啟動子進程。
* 適用於由 systemd、PM2、Docker、Windows Service 等管理器負責自動重啟的環境。
設定示例:
在 PowerShell 7 中(需在同一工作階段設定):
$env:DSH_RESTART_CONTROL_MODE = 'portable'
# 在此執行原本的 DSH 啟動命令
在 Docker Compose 中:
services:
dsh:
environment:
DSH_RESTART_CONTROL_MODE: external
restart: on-failure
适用场景与注意事项¶
适用场景:
* 需要在 Web 界面快速重啟 DSH 的管理員。
* 已配置了 PM2、Docker 或 Windows Service 的生產環境。
* 希望在無法獲取 root 權限的容器環境中重啟服務。
注意事项:
* 不要混用模式:如果在 Docker、systemd 或 Windows Service 中已配置自動重啟,請明確設定 DSH_RESTART_CONTROL_MODE=external,避免 portable helper 與外部管理器同時拉起多個 DSH 進程。
* 权限要求:插件以當前 DSH 進程的權限運行,不需要額外的系統級權限。
* 隐私安全:該插件不把資料傳送到外部雲端,不需要 API key,所有狀態管理均在本地完成。
结语¶
dsh-restart-control 通過簡單的 Web 操作實現了跨平台、安全的 DSH 重啟功能。它在保留控制力的同時,最大程度地降低了對環境權限的依賴。更多細節可參考其 GitHub 倉庫。