dsh-restart:DeepSeek Harness 的安全重啓執行插件

DeepSeek Harness (DSH) 採用插件化架構,核心邏輯通過插件擴展。當需要重啓 DS-Hns 實例或操作系統時,直接操作進程往往難以保證數據完整性或安全關機。dsh-restart 作爲一個 DSH 插件,專注於重啓的執行層面。它不負責決定“是否”需要重啓(那是健康調度器的工作),而是確保重啓過程符合鎖機制、檢查點和優雅關閉等安全協議。

定位與職責

dsh-restart 是一個 MIT 許可的插件,主要職責是處理重啓請求的執行流程,而非調度決策。它不包含任何健康策略、溫度閾值、時間調度或任務隊列訪問邏輯。

插件加載時會將其重啓適配器發佈到 Harness 上下文的 ctx.healthScheduler 上,以便 dsh-health-scheduler 能夠發現並連接它。如果兩者在同一個 profile 中,無需編寫膠水腳本即可協同工作。

核心功能

該插件通過以下步驟確保重啓安全:

  1. 請求處理:接收並驗證重啓請求。
  2. 安全門控:通過獨佔鎖防止併發重啓,並通過檢查點門控確保系統處於安全點。
  3. 票據機制:寫入包含校驗和的票據文件。
  4. 優雅關閉:向主機請求優雅關閉。
  5. 觀察與重啓:允許外部觀察者監控退出狀態並執行重啓。

安裝

從 npm 或 tarball 安裝(推薦)

推薦使用已構建好的 npm 包,避免構建時的代碼執行風險。

dsh plugin --profile web add dsh-restart

從 Git 安裝

從 Git 倉庫安裝會運行 npm run build,這意味着在安裝時可能會執行任意代碼。這取決於你的包管理器配置(如 npm 的 prepare 腳本)。

dsh plugin --profile web add github:dsh-restart/dsh-restart

使用安裝腳本

使用官方提供的 PowerShell 腳本可以自動完成註冊、驗證和冒煙測試。

pwsh -File scripts/install.ps1

使用 Supervisor 重啓

dsh-restart 本身不執行重啓,而是將重啓請求交給外部 Supervisor。Supervisor 是一個獨立的、長生命週期的進程,必須與 DSH 主進程分離運行,以便在主進程退出後接管重啓。

啓動 Supervisor 的命令如下:

node bin/supervisor.mjs --state "$env:DSH_HOME\restart" -- node dsh.js --profile web

Supervisor 負責監視重啓票據、心跳和日誌,並在 DS-Hns 退出後重新啓動它。

注意事項

  • Git 安裝風險:如前所述,Git 安裝會觸發 npm run build。如果安裝後出現 no lib/index.js 錯誤,通常是因爲包管理器未正確運行構建腳本,此時應切換到 npm/tarball 安裝或手動構建。
  • Supervisor 獨立性:Supervisor 必須是分離的進程。如果作爲子進程啓動,它將隨 DSH 進程一同終止,導致重啓失敗。
  • 權限與安全:插件以當前 DSH 進程的權限運行。建議在部署前檢查源代碼與許可證。

總結

dsh-restart 提供了重啓執行層的標準化接口,解耦了“何時重啓”的決策邏輯與“如何重啓”的執行邏輯。其最壞情況是“自動重啓不可用”,而非插件本身不可用。

詳細文檔與源碼可參考:GitHub | 插件目錄

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

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

小夜