dsh-awake:DeepSeek Harness 防休眠插件

在 agent 任務執行期間,電腦自動休眠會導致任務中斷、服務重啓報錯或會話數據損壞。dsh-awake 是 DeepSeek Harness 的一個插件,用於在任務執行期間阻止操作系統休眠,任務結束後(包含出錯、中斷或取消)自動恢復允許休眠。

核心功能

  • 阻止休眠與恢復:任務開始時阻止操作系統休眠,任務結束後恢復。
  • 跨平臺支持:支持 Windows / Linux / macOS。
  • 動態配置:支持動態配置 schema,設置頁熱改生效。
  • 瀏覽器 Wake Lock:爲當前瀏覽器開啓頁面防休眠,狀態獨立於系統。
  • 一鍵更新/重啓:支持插件版本更新及服務重啓。
  • 自動遷移:v0.2.0 升級後自動遷移舊配置。

安裝與啓用

通過命令行安裝到目標 profile(例如 web):

dsh plugin --profile web add dsh-awake

安裝後,需將倉庫根目錄的 cordis.patch.yml 裏的 - insert: 段追加到 $DSH_HOME/profiles/web/cordis.patch.yml。運行中的 DSH 會熱監視該文件,追加配置後立即生效,無需重啓。本地開發時可直接鏈接源碼目錄:

pnpm add dsh-awake@link:...

配置格式

配置保存在 $DSH_HOME/settings.yaml,通過設置頁「防休眠」進行熱改。v0.2.0 後配置格式如下:

dsh-awake:
  version: 2          # 配置文件版本:2;有老配置(0.1.x)自動轉換
  platform: linux     # 錨點:上次寫入配置的平臺
  mode: systemd       # 當前平臺選中的方式(實現文件名);'off' = 關閉服務端
  config:             # 該方式的配置;字段由方式聲明,多爲空 {}
    why: 'dsh 任務執行中'

平臺與方式

插件根據平臺自動選擇底層實現方式:

  • Linux:systemd(systemd-inhibit)、gnome-gsettings;默認爲 systemd。
  • macOS:caffeinate、pmset;默認爲 caffeinate。
  • Windows:powershell(SetThreadExecutionState)、powercfg;默認爲 powershell。

常開防休眠

設置頁底部有一個「常開防休眠」開關。開啓後,服務端無論是否有任務運行都持續值守。此狀態僅保存在內存中,不寫入配置文件,宿主重啓後失效。若 mode 設置爲 off,則無法開啓此開關。

跨平臺處理

如果配置的 platform 與當前系統不一致,運行時自動使用當前平臺的默認方式,並顯示黃色提示(不覆蓋文件)。下次保存配置時,platform 會更新爲當前平臺。

設置頁使用

在 dsh web 中打開設置 → 防休眠。頁面每 5 秒輪詢狀態,狀態行顯示連接狀態和值守方式。刷新按鈕可重新探測方式可用性。

  • 值守狀態:顯示「值守中」或「未啓用」。
  • 方式選擇:下拉菜單選擇具體實現(如 systemd-inhibit),禁用項會顯示原因。
  • 動態表單:根據所選方式顯示配置項(如阻止原因)。
  • 更新提示:檢測到新版本時顯示更新卡片,支持一鍵更新並自動重啓。

開發

插件基於 TypeScript 和 Vitest 構建。工程化對齊 dsh-win-mgr,host 輸出 ESM 單文件,client 輸出 ModuleLoader 殼。

pnpm install
pnpm typecheck   # tsc 雙半
pnpm test        # vitest(單測 + 看門狗進程測試)
pnpm build       # host → lib/index.js;client → lib/client.js

數據面

所有設置頁數據通過 POST /api/dsh-awake 單通道傳輸,使用 connection.fetch.register 註冊精確路由(awake.status / awake.refresh / awake.select / awake.alwaysOn 等)。v0.2.1 起改用 fetch 而非 connection.rpc.handle,以避免在 DSH 0.1.5-rc 中因 fiber 兄弟關係導致的啓動失敗。

注意事項

  • 版本變更:v0.2.0 爲破壞性重構,引入了方式子系統和動態 schema。v0.2.1 修正了 DSH 0.1.5-rc 的兼容性問題。
  • 依賴環境:Linux 依賴 systemd-inhibit,Windows 依賴 PowerShell 環境。
  • 權限:插件以當前 dsh 進程權限運行,安裝前應檢查源碼與許可證。
羽毛球分组比赛记分
小程序二维码

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

小夜