dsh-no-sleep:DSH 運行期間阻止系統休眠

前言

在 DeepSeek Harness(DSH)裏跑長任務時,系統或顯示器仍可能按電源策略進入休眠,智能體流程會被打斷。操作系統自帶的「演示模式」或手動改電源計劃,往往和當前 Profile 綁定不緊,Harness 退出後也不一定自動恢復。下面介紹社區插件 dsh-no-sleep(維護者 ZhaoChongyan,目錄分類 admin-security):在 Harness 運行期間按配置持有喚醒請求,並在 Settings → General 提供一行可持久化的偏好設置。

這是什麼

dsh-no-sleep 是 DSH 的 Host + 客戶端插件(包名 @local/no-sleep,版本 1.0.0,MIT)。一句話定位:Harness 運行期間阻止電腦休眠(必要時也可僅阻止系統睡眠而允許關屏),避免長 Agent 任務因熄屏或睡眠被切斷。

社區目錄頁:skillhub.cn/plugins/ZhaoChongyan/dsh-no-sleep。源碼與說明:github.com/ZhaoChongyan/dsh-no-sleep。該目錄爲獨立社區站點,與 DeepSeek / 幻方無官方從屬關係。

核心功能

偏好行出現在 Settings → General,包含三類信息(以 README 爲準):

項 含義
Switch 打開或關閉喚醒持有(按 Profile 持久化)
Keep awake Screen and system(屏幕與系統)或 System only(僅系統;可關屏繼續跑)
Status 從 Host 讀取的實時狀態:holding / starting / off / error,以及 helper 進程 id

README 說明當前實現面向 Windows:通過 SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED,可選 ES_DISPLAY_REQUIRED) 發起持有請求。Host 插件側沒有 Electron 或進程級原生橋,Desktop 也不附帶原生 Node 插件,因此由 Host 用 Windows PowerShell 的 Add-Type 啓動一個隱藏的小型 helper 子進程,在專用線程裏維持上述請求;線程存活期間系統保持請求,進程結束即釋放。

行爲要點:

  1. 退出 Harness:helper 爲 Host 子進程,隨 Host 結束,請求立即釋放。
  2. 關閉 Switch:立即釋放。
  3. helper 崩潰:設置行會報 error,Host 約每 30 秒監督並嘗試重啓。

Windows 沒有可靠的用戶態查詢「當前是否已有喚醒請求」(例如 powercfg /requests 需提升權限且會話不同),因此 Status 反映的是 Host 能覈實的內容:helper 是否存活且是否按所選 flags 運行。

除 UI 外,Host 在 本機 loopback 暴露 HTTP 接口(非 loopback 返回 403,因會改變主機電源狀態):

Method Path Body Result
GET /no-sleep/api — 狀態 JSON
POST /no-sleep/api { "enabled"?: bool, "mode"?: "display"\|"system" } 保存、應用並返回狀態

配置

偏好寫入當前 Profile 目錄下的 no-sleep.json(與 cordis.patch.yml 同級)。首次運行由 bundle 中的 cordis 行注入默認值:

- insert:
    - id: dsh-no-sleep
      name: '@local/no-sleep'
      config:
        enabled: true   # wake-holding on at startup
        mode: display   # 'display' (screen + system) or 'system'

enabled 爲啓動時是否開啓持有;mode 爲 display(屏幕 + 系統)或 system(僅系統)。

安裝與啓用

官方 README 給出的安裝方式爲通過 plugin_manager 安裝本地 bundle(將 <abs path>/no-sleep 換爲你解壓或放置插件目錄的絕對路徑):

plugin_manager { action: "install_bundle", target: "<abs path>/no-sleep" }

倉庫主要文件佈局(便於覈對安裝包是否完整):

index.js           Host: route, preference file, helper process lifecycle
client.js          Browser: the Settings → General row
cordis.patch.yml   Loader row that inserts the package
package.json       dsh.bundle.patch + dsh.client metadata
locale/en.json     display metadata (English)
locale/zh.json     display metadata (Chinese)
icon.svg           plugin icon
native/            reference sources for an in-process .NET helper (see below)

native/ 內爲可選的進程內 .NET 參考實現(no-sleep.cs,由 native/build.ps1 構建);當前 Desktop Host 不在插件進程內加載該程序集,插件運行時使用的是上述 PowerShell 子進程方案。

典型用法

  1. 按上文命令安裝 bundle 並啓用 Profile 中的 cordis 行。
  2. 打開 DSH Settings → General,用 Switch 開啓喚醒持有。
  3. 長任務需要省屏但不想睡眠時,將 Keep awake 設爲 System only(對應 mode: system)。
  4. 需要腳本或本地工具聯動時,向 http://127.0.0.1:<host-port>/no-sleep/api 發 GET 讀狀態,或 POST 傳入 enabled / mode(僅本機 loopback)。

適用場景與注意

適合在 Windows 上使用 DSH 跑長時間 Agent、編譯或批處理,且不希望因自動睡眠中斷的任務。若你更關心「關屏但繼續算」,選用 system 模式即可。

插件以當前 DSH Host 進程權限運行,會通過子進程改變系統電源持有狀態;安裝前請自行閱讀 源碼與 LICENSE,確認行爲與許可證可接受。README 未描述 macOS / Linux 的等價實現,非 Windows 環境請勿假設同樣有效。

結尾

dsh-no-sleep 把「Harness 在跑就不睡」做成 Profile 級開關和可選的 loopback API,與退出 Harness 釋放持有綁定在一起,比單獨改系統電源計劃更貼近 DSH 使用節奏。

  • 目錄頁:https://www.skillhub.cn/plugins/ZhaoChongyan/dsh-no-sleep
  • GitHub:https://github.com/ZhaoChongyan/dsh-no-sleep
羽毛球分组比赛记分
小程序二维码

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

小夜