DSH 报警插件:按条件触发提醒、弹窗与语音播报

前言

DSH(DeepSeek Harness)桌面版在长时间运行时会占用大量注意力,一旦 root 会话需要你做决策、确认计划,或者任务进入「待人工测试」等关键阶段,很容易错过。现有的通知方式要么依赖系统级提醒,要么需要手动去查日志,打断连续思考的节奏。

本文介绍 zueston/dsh-alarm。这是一个为 DSH 客户端设计的独立报警插件,在 root 会话中按条件触发系统铃声、TTS 语音播报与弹窗,并提供可视化设置页。它通过 10 种报警条件与 4 条通知通道的组合,让你在需要的时候被叫回来,不需要的时候不打扰。

插件概览

  • 定位:DSH 桌面版的通知插件,只对 root(主)会话生效。
  • 维护者:zueston。
  • 依赖:宿主 DSH 桌面版(需要 agents/settings/webServer 服务),Windows 系统,Node.js ≥ 24,Windows PowerShell 5.1。
  • 第三方依赖:@deepseek-ai/schemastery@3.18.4(用于设置页 schema)。
  • 运行方式:本地运行,无出站网络请求,只读 cordis.patch.yml 与系统资源。

核心能力

10 种报警条件

插件提供 10 个独立的报警条件,每个条件有一个总开关与「提醒」开关,并与三条通道(弹窗、铃声、语音播报)组合使用。条件包括:

  1. 需要你裁决(ask_user_question 执行前)
  2. 需要你确认计划(exit_plan_mode 执行前)
  3. 全部任务完成(update_goal 的 action: complete 执行前)
  4. 需要重启 DSH(正文提到「要重启 DSH 才生效」,会过滤否定句与围栏引用)
  5. 任务到「待人工测试」(状态文件阶段真正变为该值,同一文件 5 分钟内只响一次)
  6. 每一轮结束都提醒(turn/end 的 reason.completed 或 agent/status 变 idle)
  7. 本轮中断时提醒(turn/end 的 reason 为 abort/interrupt/cancel/stop/user)
  8. 本轮报错时提醒(turn/end 的 reason 为 error/failed/max-tokens 等)
  9. 手工测试提醒(设置页的「测试提醒」按钮,以及每行的 ▶ 试听)
  10. Agent 停下来且没有后续动作(一轮结束无工具调用、无裁决、无重启/待测标签,且有未完成的 goal)

四条通知通道

每条条件可以独立配置使用哪些通道:

  • 提醒:控制该条件是否触发。关闭该列总开关,该条件不会在任何渠道响铃。
  • 弹窗:在桌面显示一个窗口。有两种模式:强弹窗(置顶窗口,自动关闭,不挡桌面操作)与系统消息(只发 Windows 通知,不弹窗口)。
  • 铃声:播放系统 %SystemRoot%\Media\*.wav 中的 wav 文件,可设置重复次数(1–5)。
  • 语音播报:使用 Windows 自带 SAPI 语音,可自定义语速、音量与音色,每条提醒可指定播报文本(留空则使用默认模板 {title}。{body})。

批量测试协调

当多个任务先后进入「待人工测试」时,默认每个任务都会触发一次提醒。插件提供「批量测试协调」配置,支持:

  • 协议模式:默认模式(标签优先 + 旧判定兜底),严格模式(只认标签)。
  • 待测提醒范围:全部或仅批次锚点(路径含指定关键词)。
  • 批次锚点关键词:默认 批次。
  • 待测提醒聚合窗口(秒):设为 >0 时,窗口内只响第一次,其余累积到窗口结束汇总。
  • 汇总附待测清单:在提醒正文中列出当前所有待测任务名。

标签优先协议

插件默认使用「标签优先」协议模式:agent 在回复正文里写独占行标签时以标签为准,未写标签则回落到旧判定(正文措辞判重启、状态文件相位判待测)。支持的标签包括:

  • [[ALARM:ASK]] / [[ALARM:PLAN]] / [[ALARM:DONE]]
  • [[ALARM:TEST:<任务名>]]
  • [[ALARM:RESTART]]
  • [[ALARM:STALLED]]

设置页顶部有「编辑报警规则」按钮,可一键复制协议全文到 system prompt。

节流与兜底

为避免频繁打扰,插件支持节流配置:

  • 短轮次过滤:只有本轮耗时 ≥ N 秒才提醒结束。
  • 同类提醒最小间隔:同一 agent 的同类提醒之间至少间隔 N 秒。
  • 裁决后忽略结束提醒时长:裁决后的一段时间内不响「本轮结束」提醒。

任何投递失败都会被吞掉,只写一行诊断日志,不会打断对话。

安装与启用

安装前请确认环境满足要求:DSH 桌面版、Windows、Node.js ≥ 24、Windows PowerShell 5.1。

  1. 把仓库放到 DSH 的插件源码目录:
   %USERPROFILE%\.dsh\plugin-src\dsh-alarm\
  1. 在插件目录内安装依赖(新手包不含 node_modules):
   cd "$env:USERPROFILE\.dsh\plugin-src\dsh-alarm"
   npm install

也可只补一个包:

   npm install @deepseek-ai/schemastery@3.18.4

安装后自检:

   node -e "import('./index.js').then(m=>console.log('OK',Object.keys(m).join(',')))"

输出 OK Config,apply,inject,name 表示依赖齐了。

  1. 在 DSH profile 的 cordis.patch.yml 里挂载插件(id 必须为 dsh-alarm):
   plugins:
     - id: dsh-alarm
       name: 'dsh-alarm'
       config:
         enabled: true
         popupStyle: topmost
         sound: Alarm03.wav
         soundRepeats: 1
  1. 重启 DSH。侧边栏会出现铃铛入口「报警提醒」,设置页会出现「报警提醒(dsh-alarm)」卡片。

使用流程

  1. 打开侧边栏「报警提醒」(铃铛图标)或从「插件」页进入设置浮层。
  2. 在条件表中勾选需要触发的事件,每行左侧的 ▶ 按钮可试听当前配置。
  3. 勾选「提醒」列与右侧的通道列(弹窗/铃声/语音播报),表头是总开关。
  4. 配置弹窗风格、铃声文件与重复次数、TTS 语速/音量/音色、播报文本模板。
  5. 在「批量测试协调」区域配置协议模式与聚合策略。
  6. 保存后配置立即生效,无需重启 DSH。

适用场景与注意

  • 适合需要在 root 会话中保持注意力、避免错过关键决策与状态的 DSH 用户。
  • 插件以当前 DSH 进程权限运行,安装前建议查看源码与许可证。
  • 只对 root(主)会话提醒,子智能体的会话不会触发。

结语

zueston/dsh-alarm 把 DSH 的关键事件与通知能力解耦,通过可视化设置与灵活的条件/通道组合,让报警行为更可控、不打扰。如果你习惯长时间运行 DSH 并希望在不打断对话的前提下及时获取重要提示,可以按上面的步骤安装并配置。

  • 插件目录:https://www.skillhub.cn/plugins/zueston/dsh-alarm
  • GitHub 仓库:https://github.com/zueston/dsh-alarm
羽毛球分组比赛记分
小程序二维码

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

Xiaoye