前言¶
DSH Web 進程在運行時可能會崩潰或意外中斷,導致會話中斷和服務不可用。手動恢復和檢查健康狀態既繁瑣又容易出錯。此插件解決這些問題,提供一個集中的設置存儲、Web Supervisor 和恢復機制。
這是什麼¶
它是 DSH Web 的核心,包含監控守護進程、設置存儲、審批守衛和跨機器同步引擎。它將四個獨立的功能合併到一個包中。該插件通過在 dsh web 內部作爲主機+客戶端運行,並在外部作爲系統守護進程運行,來實現自我恢復和狀態持久化。
核心功能¶
- DSH Web Supervisor(監控守護進程):系統級監控(systemd),每 3 秒輪詢服務狀態,保存最後已知良好(LKG)快照,檢測崩潰並執行自動回滾,生成包含 Git Diff 和日誌的 health report。
- 自動恢復:在 DSH Web 啓動 8 秒後,自動查找並恢復在
autoResumeWithin(默認 5 分鐘)內中斷的會話。 - 自動重載:瀏覽器端客戶端插件,在 Web 服務重啓或網絡斷開時自動重載頁面。
- 設置存儲:提供全局的
settings.json存儲和 Maestro 設置卡片,供其他模塊讀寫。 - 審批守衛:提供規則分類和審批入口,通過
maestro_guard_status查看狀態。 - 跨機器同步:提供備份、恢復、保留策略 GC 和雙機同步功能。
安裝與啓用¶
使用官方命令安裝插件:
dsh plugin --profile web add @ddtcorex/dsh-maestro-core
若需指定版本,可使用:
dsh plugin --profile web add @ddtcorex/dsh-maestro-core@<version>
安裝完成後需重啓 dsh web。該包會自帶 cordis.patch.yml,請勿手動複製或添加重複的 Row ID。
典型用法¶
通過命令行工具或 Systemd 守護進程進行管理:
# 啓動守護進程(前臺調試)
node packages/dsh-maestro-core/lib/index.js daemon
# 查看狀態
node packages/dsh-maestro-core/lib/index.js status
# 恢復指定時間範圍內的中斷會話
node packages/dsh-maestro-core/lib/index.js resume --within 5m
啓用 Systemd 守護進程以實現系統級監控:
bash packages/dsh-maestro-core/scripts/install-systemd.sh
systemctl --user daemon-reload
systemctl --user enable --now dsh-web-supervisor
systemctl --user status dsh-web-supervisor
適用場景與注意¶
- 環境要求:需要 Node.js
^22.19.0 || >=24.0.0和 pnpm 11+,DSH 版本需爲 0.1.x 或 0.2.x。 - 構建要求:
lib/目錄被 Git 忽略,源碼修改後需執行pnpm build。客戶端構建需要build-client.mjs。 - 權限風險:插件以當前 DSH 進程權限運行,若 DSH 進程擁有較高權限,插件同樣擁有相應權限。建議在安裝前檢查源碼與許可證。
- 配置:Telegram Bot Token 爲可選配置,用於通知。
結尾¶
dsh-maestro-core 通過將監控、存儲和同步能力整合到一個包中,降低了 DSH Web 的維護複雜度,提升了系統的健壯性。