前言¶
DSH 的 Web 能力可以拆成插件安裝,但 Web 宿主進程本身退出後不會自動拉起。dsh-keepalive 解決的是這個問題:在顯式啓用後,它運行一個 detached watchdog,監控 DSH Web 進程,並在進程退出後用同一 binary 和 arguments 重啓。
它還提供可選的 repair agent。反覆啓動失敗後,repair agent 可以在受控範圍內檢查問題、修改允許的 repair workspace,並基於 snapshot 回滾失敗修復。
這是什麼¶
dsh-keepalive 由 xiaohj233 維護,許可證爲 MIT。
它的定位是一個 opt-in 插件,用於:
- 爲 DSH Web 進程提供 detached watchdog;
- 在進程退出後重啓 DSH;
- 提供可選的 snapshot-checked repair;
- 提供顯式的 compatibility patch restoration。
它不是高可用集羣,不是 service manager,也不是 sandbox、malware boundary、secret scrubber,更不是完整的隔離或保密邊界。
核心功能¶
下面列出的能力都以已覈實事實爲準,並且需要按配置顯式啓用。
- 啓用後運行 detached watchdog,用於 DSH Web 進程。
- 進程退出後,使用相同 binary 和 arguments 重啓 DSH。
- 增加一個 Plugins settings card,用來配置 watchdog。
- 支持通過卡片上的“手動重啓”按鈕,或
POST /api/keepalive/restart手動重啓。 - 應用 guarded compatibility patches,覆蓋
keepalivesettings namespace 和 hidden Windows child processes。 - 可選在 repeated boot failures 後運行 repair agent。
- repair 前 snapshot 允許的 repair workspace。
- repair 後校驗 paths、configuration、syntax;失敗時 rollback。
- repair 期間在 web port 提供 zero-dependency repair status page。
- 當
status=repairing時,顯示 global repair progress banner。
安裝與啓用¶
要求:
DeepSeek Harness: 0.1.0-rc.6
Node.js: ^22.19.0 || >=24
pnpm: >=10
watchdog 在 Windows 上經過測試。
安裝命令:
dsh plugin --profile web add "github:xiaohj233/dsh-keepalive#v0.1.0"
安裝後需要重啓 Web profile。僅安裝不會啓用 watchdog restart 或 repair。
啓用需要在 keepalive section 中顯式 opt-in:
keepalive:
enabled: false
autoRepair: false
enabled 和 autoRepair 都需要顯式啓用;autoRepair 默認是 false。你可以通過 Plugins settings card 或 settings file 配置。
典型用法¶
手動重啓:
POST /api/keepalive/restart
也可以使用 Plugins settings card 上的“手動重啓”按鈕。
讀取狀態:
/api/keepalive/status
可以從這個地址讀取當前狀態,以及最後一次 repair-agent 輸出。最後一次 repair-agent 輸出最多 4 KB。
卸載時,先運行卸載命令,再從 profile 中移除插件:
pnpm --dir "$DSH_HOME/profiles/web" exec dsh-keepalive-uninstall
dsh plugin --profile web remove dsh-keepalive
適用場景與注意¶
如果你需要 DSH Web 進程退出後自動恢復,並且接受 repair agent 在受控範圍內修改 plugin workspace,這個插件可以作爲工具使用。
如果你需要完整隔離、保密邊界、憑據清洗,或者希望它替代 systemd、Windows Service Control Manager、容器、外部監控,它不適合。
需要注意:
- repair runtime 使用
workspace-write,可以修改 plugin workspace。 - repair agent 會接收 startup diagnostics 作爲輸入;這些 diagnostics 不可信,可能包含誤導性指令。
- snapshot、path、syntax 和 rollback 檢查能減少誤改,但不能讓任意 agent output 變安全。
- 每次 repair 後都要檢查變更。
- watchdog supervision 和 uninstall 只按 recorded PID 識別 watchdog;如果 PID 被無關進程複用,supervision 可能靜默停止,uninstall 也可能終止無關進程。
- 在 repeated missed polls 後,watchdog 會強制終止監聽 configured port 的進程;如果該端口被無關服務佔用,這個無關服務也會被殺掉。
- failed-launch diagnostics 和最後一次 repair-agent 輸出會持久化,並可從
/api/keepalive/status讀取;failed-launch logs 可能嵌入環境中的 secrets。 - 它以當前
dsh進程權限運行;安裝前應檢查源碼與 MIT 許可證。
鏈接¶
- 目錄頁:https://www.skillhub.cn/plugins/xiaohj233/dsh-keepalive
- GitHub:https://github.com/xiaohj233/dsh-keepalive