dsh-mac-keep-awake:DSH 会话运行期间阻止 macOS 空闲休眠

前言

在 DeepSeek Harness(DSH)里跑长任务——模型推理、多轮 agent、手动 /compact——往往要几十分钟甚至更久。Mac 在接电源或电池策略较激进时,会在空闲一段时间后进入系统休眠,进程被挂起,会话中途被打断。手动改「系统设置 → 电池/节能」可以治标,但每次改、且容易忘记改回。

下面介绍社区插件 dsh-mac-keep-awake(维护者 wjvalue):在任意 DSH 会话处于运行中时,通过 macOS 的 caffeinate 持有一次电源断言,阻止空闲导致的系统休眠;最后一个会话结束后立即释放。屏幕仍可正常息屏,适合长时间挂着 DSH 又不希望整晚亮屏的场景。

这是什么

dsh-mac-keep-awake 是 DeepSeek Harness 的 Host 侧插件,分类上常归在「模型推理」等与长时运行相关的场景。它解决的是:会话还在跑,机器却因空闲休眠而中断任务。

DSH 生态强调「一切皆插件」;SkillHub 等目录为社区站点,与 DeepSeek / 幻方无官方从属关系。安装前请自行查看源码与许可证,插件以当前 DSH 进程权限运行。

核心功能

何时持有、何时释放

只要有任意一个 DSH 会话处于运行中,插件持有一次 macOS 电源断言(PreventUserIdleSystemSleep);最后一个会话结束后立即释放。

  • 多个会话并行时,按 session id 引用计数,全局只持有一个断言,不会叠多个 caffeinate。
  • 屏幕可以照常息屏(默认使用 caffeinate -i,不加 -d)。
  • DSH 主进程异常退出时,子进程通过 -w <pid> 监视宿主,避免机器被永久「钉住」。

底层机制(简要)

断言由子进程执行:

caffeinate -i -w <DSH 主进程 pid>
参数 作用
-i 只阻止系统空闲休眠,不阻止屏幕息屏
-w <pid> 被监视进程退出时,caffeinate 自行退出

可选配置会追加 -d(同时阻止屏幕息屏)或 -t <秒>(单次断言的兜底超时,到点后若会话仍在运行会重新获取)。

插件还监听 agent/status、agent/disposed、compaction/start / compaction/end,并周期性对账 ctx.agents.list(),以覆盖热重载、手动 /compact(maintenance 阶段在 API 上读作 idle)等边界情况。断言失败时采用指数退避重试(上限 60 秒),不会在会话仍运行时永久放弃。

安装与启用

官方 README 给出的步骤如下(不要凭插件名自行拼接 dsh plugin add github:...)。

1、打包并暂存到 profile 的 vendor/ 目录

在插件仓库根目录执行:

node scripts/install.mjs

2、用 DSH 插件管理器安装

说明:desktop profile 只能由 Electron 应用管理。安装 spec 示例:

file:vendor/dsh-mac-keep-awake-1.4.2.tgz

安装后 bundle 自带的 cordis.patch.yml 会插入 Host;patchReload: live 表示改完 src/ 后重新安装即可生效,无需重启应用。

3、按需改配置

在 profile 的 cordis.patch.yml 里覆盖该插件行的 config,例如:

- id: keep-awake
  name: 'dsh-mac-keep-awake'
  config:
    enabled: true            # 总开关
    preventDisplaySleep: false  # true = 屏幕也不息屏(加 -d)
    maxHours: 0              # >0 = 每次断言的兜底超时(小时);0 = 关闭
    reconcileSeconds: 60     # 对账间隔;0 = 关闭对账
    executable: /usr/bin/caffeinate

典型用法与验证

日常无需额外命令:启用插件后,开 DSH 会话跑任务即可;会话全部结束后再看机器应恢复原有休眠策略。

真机确认断言是否存在

会话运行中:

pmset -g assertions | grep -A2 caffeinate
pgrep -fl "caffeinate -i -w"

会话全部结束后再次执行,应当无相关输出。

开发者自测

在插件仓库内:

node --test test/*.test.js

包含单元测试、接线测试,以及依赖真机 pmset -g assertions 的集成测试(仅 macOS 有意义)。

适用场景与注意

适合谁

  • 在 Mac 上用 DSH 跑长时推理、agent 或多会话,且不想为单次任务改系统节能设置的用户。
  • 需要屏幕能息屏、但系统不能因空闲睡过去的场景(默认 preventDisplaySleep: false)。

务必知晓

结尾

dsh-mac-keep-awake 把「有会话就不空闲休眠、没会话就释放」做成 DSH 内置行为:默认不挡息屏,多会话共用一条断言,并对热重载、压缩与进程崩溃做了兜底。若你经常在 Mac 上挂着 Harness 跑长任务,可按 README 打包安装并在 cordis.patch.yml 中微调开关与对账间隔。

  • 目录页:https://www.skillhub.cn/plugins/wjvalue/dsh-mac-keep-awake
  • GitHub:https://github.com/wjvalue/dsh-mac-keep-awake
羽毛球分组比赛记分
小程序二维码

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

小夜