证据快照复核于 2026-09-16GitHub 数据核对日期: 2026-08-21
证据已验证Plugin Bundle自动化与智能体Web Profile

Awake

在 DeepSeek Harness 的 agent 任务运行期间,让 Windows、Linux 或 macOS 保持唤醒。

快速了解

它能做什么

在 DeepSeek Harness 的 agent 任务运行期间,让 Windows、Linux 或 macOS 保持唤醒。

本站提供的是中文说明,不代表该项目或 Plugin 自身提供中文界面;语言支持请以上游文档为准。

使用场景
自动化与智能体自动化配置工作流自动化
适配技术
deepseek-harnessWebsystemdmacoswindows
兼容性

Web Profile
Not declared in supplied evidence

可信度与状态

证据已验证
核对日期 2026/9/11 UTC 14:11

有代码证据的贡献

它为 DSH 增加什么

防休眠设置页

可选择系统防休眠方式、查看状态、刷新可用性,并控制浏览器或常开防休眠。

机制证据

选择前先看

Awake 是一个 DeepSeek Harness 插件:agent 任务开始时获取适合当前平台的防休眠锁,任务结束、报错、中断或取消时释放。其 Web 设置页可选择并诊断 systemd/GNOME、caffeinate/pmset 或 PowerShell/powercfg 方式,也提供独立的单浏览器 Wake Lock。

适合谁

本机运行 DeepSeek Harness,且担心长时间 agent 任务因电脑休眠而中断的用户。

常见任务

  • 避免本地 DSH agent 任务因工作站自动休眠而中断。
  • 为 Linux、macOS 或 Windows 选择带回退机制的防休眠方式。
  • 在服务端系统防休眠之外,单独为当前可见浏览器页面开启 Wake Lock。

权限与数据

控制本地防休眠机制,并提供受 DSH 登录保护的设置接口。

权限
  • 会根据所选平台方式调用或使用 systemd-inhibit、GNOME 设置、caffeinate、pmset、PowerShell 或 powercfg。
  • 任务运行且页面可见时,可能请求浏览器 Wake Lock API。
数据处理
  • 浏览器 Wake Lock 偏好保存在浏览器 localStorage。
  • 插件配置持久化在 DSH 设置中;常开开关仅保存在内存,宿主重启后会重置。
外部服务
  • 设置页的更新卡片可与 npm registry 比较版本。
凭据
  • `/api/dsh-awake` 接口使用现有 DSH 浏览器登录校验;未记录额外凭据。

局限

  • 所提供证据未声明 Harness 版本范围。
  • 若所有平台防休眠方式都失败,服务端防休眠不会生效。
  • 常开防休眠在宿主重启后不会保留。
  • npm 分发的仓库元数据与此源码不一致;本条目应使用固定提交的 Git bundle。

DSHub 已核对

  • 已验证固定源码提交和 bundle 结构。
  • manifest 声明 Node.js >=20,以及 React >=18.2.0 <20.0.0。
  • README 记录了 Windows、Linux、macOS、profile 安装方式和回退机制。

DSHub 未核对

  • 尚未实际执行安装或运行时行为验证。
  • 尚未在具体机器上测试防休眠方式的可用性和权限。

固定版本安装

安装 Awake

这个Plugin Bundle没有 DSH Plugin 安装操作,请根据源码文档使用真实交付方式。

访问源码项目

维护者原文

项目 README

查看 commit 9294328 对应的 README
维护者编写的上游内容原文于 2026/9/11README.md 获取,正文和仓库相对媒体固定到 commit 92943282baae,内容哈希为 20496720d063。以下是未经 DSHub 翻译的上游原文,语言可能与当前页面不同;第三方托管的 badge 可能独立更新。

dsh-awake · 守夜人(防休眠插件)v0.2.1

DeepSeek Harness 插件:在 agent 任务执行期间阻止操作系统休眠,任务结束 (含出错、中断、取消)后恢复允许休眠。跨平台:Windows / Linux / macOS

电脑在 dsh 执行任务时自动休眠,会导致任务中断、重启后服务报错、会话数据损坏。 dsh-awake 像守夜人一样盯住任务:任务开始 → 点亮「防休眠」,任务结束 → 熄灭。

v0.2.0 是破坏性重构:方式子系统(平台优先、实现级粒度)、动态配置 schema、 单通道数据面(设置页不再碰官方 settings wire)、浏览器 Wake Lock 独立为 每浏览器状态(localStorage)、一键更新/重启。0.1.x 旧配置在首次加载时自动迁移。

v0.2.1 修正 DSH 0.1.5-rc 兼容性:数据面从 connection.rpc 专用通道改为 POST /api/dsh-awake 精确路由——旧写法在新版 DSH 上启动即报 cannot get property "webServer" without inject(整棵树加载失败),详见「数据面」 一节;同时插件不再声明任何必需服务(headless / tui 档位也能加载)。


安装

# 1. 安装到目标 profile(例如 web)
dsh plugin --profile web add dsh-awake

# 2. 把仓库根目录的 cordis.patch.yml 里的 `- insert:` 段追加到
#    $DSH_HOME/profiles/web/cordis.patch.yml

运行中的 DSH 会热监视 profile 的 cordis.patch.yml:追加配置后立即生效, 无需重启。本地开发可用 pnpm add dsh-awake@link:... 直接链接源码目录。


配置格式(v0.2.0)

配置在设置页「防休眠」里热改($DSH_HOME/settings.yaml 持久化)。形状:

dsh-awake:
  version: 2          # 配置文件版本:2;有老配置(0.1.x)自动转换
  platform: linux     # 锚点:上次写入配置的平台(复制 .dsh 到其他系统时识别)
  mode: systemd       # 当前平台选中的方式(= 实现文件名);'off' = 关闭服务端
  config:             # 该方式的配置;字段由方式自己声明(动态表单),多为空 {}
    why: 'dsh 任务执行中'
  • 宽松 schemaconfig 是任意对象,键由方式声明、校验在 host 侧——加实现不动 schema。
  • 常开防休眠(页面底部开关):一键开启后服务端无论是否有任务运行都持续 值守(不等 turn/start)。它是纯内存状态——不写配置文件,宿主重启即失效, 每次需要时再开。模式为 off(服务端不值守)时无法开启,开关禁用并提示先选择方式。
  • 跨平台复制:配置的 platform 与当前系统不一致时,运行时自动用当前平台默认 方式,设置页黄色提示「配置来自 Windows,当前为 Linux…」,不覆盖文件; 下次保存时 platform 更新为当前平台。
  • mode: 'off':服务端不值守,状态行显示「未启用」,无红色提示(用户主动选择)。
  • 插件升级后配置的方式被删除 → 同样兜底到默认方式并提示。

方式清单(platform → order → default)

平台 方式(实现文件) 默认 原理
Linux systemd(systemd-inhibit)、gnome-gsettings systemd 看门狗进程持锁 / 临时改 GNOME 电源设置
macOS caffeinatepmset caffeinate 看门狗进程持锁 / 临时改电源设置
Windows powershell(SetThreadExecutionState)、powercfg powershell 看门狗进程持锁 / 临时改电源方案

拿锁回退链:首选 = 配置的方式;失败则按平台 order 依次尝试;全部失败 → 服务端未值守,设置页红色列出每个原因。

浏览器 Wake Lock(2.3)

「为当前浏览器开启页面防休眠」是每浏览器状态,走 localStorage['dsh-awake.webWakeLock'](默认开),不进配置文件;与服务端 方式完全独立。有任务在运行且页面可见时持有 navigator.wakeLock,页面切后台 自动重取。


设置页

打开 dsh web → 设置 → 防休眠

[● 后端已连接] [● 值守中 · systemd]                 [🔄 刷新]
⚠ 配置来自 Windows,当前为 Linux,已使用默认方式 systemd   ← stale(黄)
❌ 防休眠未能生效:systemd-inhibit 未找到;…                ← 全失败(红)
📦 新版本 v0.3.0(当前 v0.2.1)                  [一键更新]   ← 仅新版时渲染
为当前浏览器开启页面防休眠                        [开/关]      ← localStorage
插件运行模式
[systemd-inhibit ▾](不可用项 disabled + 原因)
说明:通过 systemd-inhibit 阻止系统休眠,需要 systemd 环境…
阻止原因 [dsh 任务执行中                ]                     ← 动态表单
🛡 常开防休眠(无论是否有任务都持续值守)        [开/关]      ← 页面底部一键开关
  • 状态行每 5s 轮询;刷新按钮 = 重新探测方式可用性。
  • 常开防休眠:页面底部开关,开启后服务端立即值守(无需任务);仅本次运行 生效,不写配置文件,宿主重启后恢复关闭;模式为「关闭(off)」时开关禁用并 提示先选择方式。
  • 更新卡片:npm registry 比对版本,一键更新(dsh plugin update)+ 自动重启生效; DSH Desktop 环境不渲染(更新由桌面版管理)。

开发

pnpm install
pnpm typecheck   # tsc 双半
pnpm test        # vitest(单测 + 看门狗进程测试 + systemd-inhibit 集成测试)
pnpm build       # host → lib/index.js(ESM);client → lib/client.js(ModuleLoader 壳)

工程化对齐 dsh-win-mgr:tsconfig.{base,host,client}.json + tsdown.{host,client}.config.ts

  • vitest;host 打 ESM 单文件,client 打 window.__ModuleLoader__.load CJS 工厂壳 (react 系列走页面模块表 external)。

加一个实现 / 平台

  • 加实现src/modes/<platform>/<name>.ts 导出 WakeMode(fields 声明动态 配置字段),在 <platform>/index.tsorder/modes 注册一行。
  • 加平台src/modes/<platform>/ 目录 + src/modes/index.ts 静态 import 聚合。

数据面

所有设置页数据走 POST /api/dsh-awake(单通道,绕开官方 settings wire 白名单), 请求体 { method, payload }、响应体 RpcResult;端点:awake.status / awake.refresh / awake.select / awake.alwaysOn / awake.version / awake.update / awake.restart;错误形状对齐 rpcErrorSchema{ ok: false, error: { code, message, details } })。

host 半用 connection.fetch.register 注册这条 /api 共享通道的精确路由 (官方 file-upload / deliverables / session-log-export 同款扩展点),因此自动 沿用 Connection 的 Host/Origin + 浏览器登录栅栏(未登录 = 401)。

为什么不用 connection.rpc.handle(0.2.1 起改) DSH 0.1.5-rc 的 dsh-client-connection 在注册专用通道时会执行 owner.effect(() => owner.webServer.register(route)),而 owner 是「提供方 fiber 的影子上下文」——webServer 于是沿 webserver 条目的 fiber 祖先链解析。 第三方插件的条目与 webserver 条目是兄弟(profile 补丁把每个 bundle 的 insert 行平铺在同一层),祖先链上没有 webServer,于是启动即抛 cannot get property "webServer" without inject 并整棵树加载失败 (dsh-pocket 1.16.x 同源问题)。connection.fetch 只碰消费方自己的 fiber, 没有这个限制。


迁移(0.1.x → 0.2.0)

旧配置 { enabled, shellWakeLock, powerCfgWakeLock, webWakeLock, why } 在 host 首次加载时识别并自动转换(写回一次,不循环):

  • webWakeLock → 浏览器 localStorage(默认开),settings 旧字段删除;
  • shellWakeLock / powerCfgWakeLockmode:只开 powerCfg → 该平台电源类实现 (gnome-gsettings / pmset / powercfg),否则 → 平台默认实现;
  • whyconfig.why

License

MIT

有意识地管理

安装与管理

前置条件与目标 Profile

目标 Web Profile

交付方式 Git Bundle — htfc786/dsh-awake#92943282baae626935f718bebd3fd4d01a8dfe9a

验证、更新与移除

显示生命周期命令
验证
dsh plugin --profile web list

兼容性与访问范围

DeepSeek Harness plugin; web client plus headless/TUI loading described Not declared in supplied evidence

检查兼容性证据

风险事实

system_power_control

Can hold OS wake locks or temporarily change power settings while enabled.

证据
browser_storage

Stores the browser Wake Lock preference in localStorage.

证据
证据与编辑审查Manifest、Bundle patch、分发与新鲜度

不可变证据

审查状态与源码活动

AI 已审查

当防止 agent 工作被休眠打断比节省电量更重要时使用;启用前请确认所选系统方式。

AI 审查于 2026/9/11 UTC 14:12GitHub 事实核对日期: 2026/9/11 UTC 14:12

自当前证据基线以来,没有记录到重要源码变化。

下一步

按 Plugin 安装流程操作

订阅重要变化: Awake