wsl-keepalive:WSL 發行版保活與狀態監控插件

前言

在 DeepSeek Harness (DSH) 的使用場景中,如果模型推理或後臺服務運行在 WSL 發行版內,該發行版在空閒一段時間後可能被 Windows 系統自動關閉。這會導致 DSH 宿主機與子進程斷連,影響任務的連續性。

wsl-keepalive 插件通過在 DSH WebUI 的「設置 → 插件」中提供一個「保活」開關,由宿主機控制 dbus-daemon 的啓停,從而防止 WSL 發行版因空閒被關閉。插件同時提供狀態監控與配置管理功能。

功能特性

  • 保活開關:在 WebUI 設置中新增「保活」行,可一鍵開啓或關閉 WSL 保活。
  • 狀態與 PID 顯示:副標題實時顯示「已啓用 · PID 」或「已停用」,並顯示發行版名稱。
  • 防重複啓動:開啓前通過 pgrep -x dbus-daemon 檢查,避免重複拉起進程。
  • 精確停止:關閉時僅對內存記錄或檢測到的特定 PID 執行 kill,不無差別終止系統內所有 dbus-daemon。
  • 自動探測 wsl.exe:若未配置 wsl-exec-path,插件會自動探測 /mnt/c/Windows/System32/wsl.exe。
  • 命令配置校驗:編輯發行版名、用戶名或 wsl.exe 路徑時,系統會進行運行時校驗。校驗失敗將撤銷修改並提示紅色錯誤信息;成功則落盤。
  • 配置持久化:配置文件存儲在 ${DSH_HOME:-~/.dsh}/wsl-keepalive.json,重啓後自動加載。
  • 本地化顯示:支持中英文界面切換,默認/回退爲英文。

前置條件

運行 DSH Web 的環境需滿足以下條件:

  1. WSL 互操作性:能夠從 WSL 內部調用 wsl.exe --exec。
  2. wsl.exe 可訪問:/mnt/c/Windows/System32/wsl.exe 或通過配置指定的路徑存在。
  3. dbus-launch:目標 WSL 發行版內已安裝 /usr/bin/dbus-launch。
  4. Node.js 環境:構建工具鏈運行需要 Node.js 版本 ^22.19.0 或 >=24.0.0。
  5. DSH Web:已通過 Web profile 方式安裝插件。

安裝與啓用

通過以下命令安裝插件:

dsh plugin --profile web add "github:TheColdWorld/dsh-wsl-keepalive"

安裝完成後重啓 DSH。在 WebUI「設置 → 插件」頁面即可看到「保活」開關。

配置說明

配置文件位於 ${DSH_HOME:-~/.dsh}/wsl-keepalive.json。插件啓動時讀取,缺失或字段爲空時按默認值處理。

{
  "wsl-dist-name": "",
  "wsl-user-name": "",
  "wsl-exec-path": "/mnt/c/Windows/System32/wsl.exe"
}
  • wsl-dist-name:目標發行版名稱。非空時命令追加 -d <name>。若設置後校驗發行版不存在,修改將被撤銷。
  • wsl-user-name:運行保活進程的用戶名。非空時命令追加 --user <name>。若用戶不存在,修改將被撤銷。
  • wsl-exec-path:wsl.exe 在 Linux 文件系統下的絕對路徑。爲空時自動探測 /mnt/c/Windows/System32/wsl.exe。若路徑無效,修改將被撤銷。

在 WebUI「WSL保活」頁籤的「命令配置」區域修改後失焦或回車即可提交。校驗通過則寫入文件。

注意事項

  • 本插件爲非官方第三方項目,完全由 AI 生成,遵循 MIT 協議分發。
  • 插件以當前 DSH 進程的權限運行,請確保源碼與許可證符合你的安全要求。
  • 插件通過 /api/wsl-keepalive/* 端點與宿主通信,宿主需具備 HTTP 載體能力。
羽毛球分组比赛记分
小程序二维码

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

小夜