前言¶
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 个独立的报警条件,每个条件有一个总开关与「提醒」开关,并与三条通道(弹窗、铃声、语音播报)组合使用。条件包括:
- 需要你裁决(
ask_user_question执行前) - 需要你确认计划(
exit_plan_mode执行前) - 全部任务完成(
update_goal的action: complete执行前) - 需要重启 DSH(正文提到「要重启 DSH 才生效」,会过滤否定句与围栏引用)
- 任务到「待人工测试」(状态文件阶段真正变为该值,同一文件 5 分钟内只响一次)
- 每一轮结束都提醒(
turn/end的reason.completed或agent/status变 idle) - 本轮中断时提醒(
turn/end的 reason 为abort/interrupt/cancel/stop/user) - 本轮报错时提醒(
turn/end的 reason 为error/failed/max-tokens等) - 手工测试提醒(设置页的「测试提醒」按钮,以及每行的 ▶ 试听)
- 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。
- 把仓库放到 DSH 的插件源码目录:
%USERPROFILE%\.dsh\plugin-src\dsh-alarm\
- 在插件目录内安装依赖(新手包不含
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 表示依赖齐了。
- 在 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
- 重启 DSH。侧边栏会出现铃铛入口「报警提醒」,设置页会出现「报警提醒(dsh-alarm)」卡片。
使用流程¶
- 打开侧边栏「报警提醒」(铃铛图标)或从「插件」页进入设置浮层。
- 在条件表中勾选需要触发的事件,每行左侧的 ▶ 按钮可试听当前配置。
- 勾选「提醒」列与右侧的通道列(弹窗/铃声/语音播报),表头是总开关。
- 配置弹窗风格、铃声文件与重复次数、TTS 语速/音量/音色、播报文本模板。
- 在「批量测试协调」区域配置协议模式与聚合策略。
- 保存后配置立即生效,无需重启 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