DeepSeek Harness 插件:dsh-restart-control

前言

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」区块。

使用方式

基本操作流程

  1. 在 DSH Web 的設定頁找到「重啟 DSH」區塊。
  2. 點擊「重啟 DSH」按鈕。
  3. 確認目前 Web 連線會短暫中斷,點擊「確認重啟」。
  4. 插件會保存 scheduled 狀態,並根據環境變數配置進行重啟。
  5. 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 倉庫。

羽毛球分组比赛记分
小程序二维码

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

小夜