dsh-keep-awake:DeepSeek Harness 防休眠插件

在 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。

  1. 进入 profile 目录(例如 ~/.dsh/profiles/web)。
  2. 添加插件包:
    pnpm add "dsh-keep-awake@github:bearice/dsh-keep-awake"
  1. 编辑 package.json,将 "dsh-keep-awake" 加入 dsh.profile.bundles 字段。
  2. 运行 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。

羽毛球分组比赛记分
小程序二维码

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

小夜