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 倉庫。

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

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

小夜