VoodooB0Ys/dsh-desktop-notify ↗★ 2
dsh-desktop-notify
授权/提问/完成/出错时弹出系统提醒 适合在后台运行DSH任务、需要即时接收状态和审批通知的Windows用户。
同名包的其他仓库
安装
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:VoodooB0Ys/dsh-desktop-notify说明文档
阅读完整 README ↗配置
默认值在本包的 cordis.patch.yml 里。要改就在你自己 profile 的
cordis.patch.yml 里加一段覆盖:
- id: desktop-notify
name: dsh-desktop-notify
config:
channels:
toast: false # 关掉原生横幅,回到"只用自绘卡片"的旧行为
alert: true
alertOnlyWhenFullscreen: false # 卡片任何时候都显示(默认只在全屏时补位)
classes:
completion: false
minTurnMs: 10000
| 键 | 默认 | 含义 |
|---|---|---|
enabled | true | 总开关 |
classes | 全 true | 按事件开关(approval / question / completion / failure / aborted) |
channels.toast | true | Windows 原生横幅(进通知中心),默认主通道 |
channels.alert | true | 自绘置顶卡片:全屏兜底 + 横幅失败兜底 |
channels.alertOnlyWhenFullscreen | true | 横幅开着时,卡片只在前台是全屏时补位(避免两条叠一起) |
alertSeconds | 见文件 | 卡片停留秒数(授权/提问 30 秒,完成 10 秒,出错/中止 25 秒;0 = 一直留到你点) |
gateOnFocus | true | "你正在看那个对话就不打扰"这道门 |
backgroundGraceMs | 45000 | 焦点上报多久没更新就当作你已离开 |
minTurnMs | 5000 | 短于这个时长的回合不算"完成" |
dedupeMs | 8000 | 同一对话同一类事件的去重窗口 |
waitingDedupeMs | 15000 | 等待类(授权/提问)的独立去重窗口 |
minGapMs | 1500 | 两条提醒之间的最小间隔 |
settleMs | 400 | 回合结束后等多久再判定"完成"(完成类延迟的大头) |
recheckMs | 1800 | 提问/授权被"正看着"抑制后,切走多久内补发(0 关闭) |
hostPresenceGate | true | 页面没开/心跳过期时,前台是 DSH 就安静(宿主直接问 Windows) |
notifySubagents | false | 子代理会话是否也提醒 |
sound | true | 按类别播放的短提示音 |
debug | true | 写 %USERPROFILE%\.dsh\dsh-desktop-notify.log |
横幅与卡片两个通道都开着时,一次提醒只弹一个:宿主先用预编译探针(~60ms)问一次 Windows 前台——前台是全屏 → 只弹卡片(这时系统横幅多半会被压掉且不补弹),否则 → 只弹横幅。前台就是 DSH 而页面又没开/心跳过期时,按"你在应用里"处理,安静;心跳新鲜时 以页面上报的对话级判定为准。横幅通道彻底失败(比如 AUMID 注册被清掉)时,插件会补一张 不挑前台状态的卡片,宁可重叠也不漏报。
另外两条补漏设计:提问/授权在你正看着时被抑制后,recheckMs(默认 1.8 秒)内切走
会补发一条——瞄了一眼就回去干活也不漏;本地三条路由带同源护栏(回环 Host + 同源
Origin),别的网页伪造不了焦点上报。
插件会顺带注册它需要的 AUMID 与 COM 激活器(见《为什么点击需要 COM 激活器》)。