前言¶
在 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 子進程,在專用線程裏維持上述請求;線程存活期間系統保持請求,進程結束即釋放。
行爲要點:
- 退出 Harness:helper 爲 Host 子進程,隨 Host 結束,請求立即釋放。
- 關閉 Switch:立即釋放。
- 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 子進程方案。
典型用法¶
- 按上文命令安裝 bundle 並啓用 Profile 中的 cordis 行。
- 打開 DSH Settings → General,用 Switch 開啓喚醒持有。
- 長任務需要省屏但不想睡眠時,將 Keep awake 設爲 System only(對應
mode: system)。 - 需要腳本或本地工具聯動時,向
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