在 DeepSeek Harness(DSH)中開發或運行長時間任務(如深度推理、複雜 workflow)時,系統休眠往往會中斷進程或導致任務中斷。dsh-keep-awake 旨在解決這一問題。這是一個系統級插件,在任意 agent、subagent 或後臺任務運行時阻止系統休眠,並在所有任務完成後通過寬限期自動釋放資源。
核心功能¶
- 實時狀態監控:在 Web 界面顯示當前運行狀態(保持喚醒中 / 寬限中 / 待機)、運行中的 agent 數量、後臺任務數以及輔助進程的 PID。
- 活動判定:智能識別運行中的活動,包括主 agent、subagent、workflow 子代理,以及通過
run_in_background命令或後臺 subagent 任務觸發的後臺任務。 - 寬限期機制:當檢測到所有活動結束後,進入可配置的寬限期(默認 60s,範圍 15s-5m)自動釋放防休眠標誌。
- 手動保持喚醒:提供手動開關,無視當前活動狀態強制保持系統喚醒。
- 阻止屏幕關閉:可選功能,默認只防休眠,勾選後可同時阻止屏幕熄滅。
- 多語言支持:界面語言跟隨 DSH 全局語言設置(zh/en),切換即時生效。
安裝與配置¶
插件通過 pnpm 安裝,配置文件爲 profile 目錄下的 settings.yaml。
- 進入 profile 目錄(例如
~/.dsh/profiles/web)。 - 添加插件包:
pnpm add "dsh-keep-awake@github:bearice/dsh-keep-awake"
- 編輯
package.json,將"dsh-keep-awake"加入dsh.profile.bundles字段。 - 運行
pnpm install並重啓 profile。
在 settings.yaml 中配置參數:
keep-awake:
enabled: true
graceMs: 60000 # 寬限期(毫秒),默認 60s
preventDisplaySleep: false # 是否同時阻止屏幕關閉
manualHold: false # 是否手動保持喚醒
工作原理¶
插件通過每 5 秒的輪詢配合事件即時重掃(agent/status、subagent/start|end、job 集變更)來檢測活動狀態。一旦檢測到活動,它會通過 subprocess 服務啓動一個平臺輔助進程來設置休眠標誌,進程退出即釋放:
- Windows:使用 PowerShell
SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED),勾選阻止屏幕時添加ES_DISPLAY_REQUIRED。 - macOS:使用
caffeinate -i -s。 - Linux:使用
systemd-inhibit --what=idle --mode=block sleep 1e8。
依賴與兼容性¶
- Node.js:需要 Node.js >= 22.0.0。
- 依賴庫:需要
@deepseek-ai/schemastery^3.18.1。
結尾¶
該插件通過自動管理操作系統電源狀態,使 DSH 能夠在不進行人工干預的情況下處理長時間運行的任務。完整源碼與文檔位於 GitHub。