前言¶
在 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 的環境需滿足以下條件:
- WSL 互操作性:能夠從 WSL 內部調用
wsl.exe --exec。 - wsl.exe 可訪問:
/mnt/c/Windows/System32/wsl.exe或通過配置指定的路徑存在。 - dbus-launch:目標 WSL 發行版內已安裝
/usr/bin/dbus-launch。 - Node.js 環境:構建工具鏈運行需要 Node.js 版本
^22.19.0或>=24.0.0。 - 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 載體能力。