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
羽毛球分组比赛记分
小程序二维码

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

Xiaoye