dsh-windows-notifications: DSH Web Windows Desktop Notification Plugin

前言

用 DeepSeek Harness(DSH)跑长任务时,人不会一直停在 DSH Web 页面里。切到别的窗口写代码、看文档,等回过头才发现任务早就完成,或者停在等批准的状态,中间空转了很久。DSH Web 本身的事件只呈现在页面内,标签页不开着盯,就容易漏。

下面介绍的 dsh-windows-notifications 插件补的就是这一段:保持 DSH 标签页打开,你在其他应用里工作时,任务结果和需要关注的事件仍能以 Windows 桌面通知、页内卡片和可选提示音的形式到达。

这是什么

dsh-windows-notifications 是一个面向 DeepSeek Harness Web 的插件,由 lsq-dsh-plugins 维护,npm 包名为 @lsq64737/dsh-windows-notifications,当前版本 0.1.1,许可证为 MIT。

按照 DSH「一切皆插件」的思路,这类 Web 端能力通过插件接入 DSH Web,而不需要改 Harness 本体。它做的事情很集中:把 DSH 的任务事件映射成桌面通知或页内卡片,并处理「该用哪种形式」的判断。

核心功能

三种呈现形式:

1、Windows 桌面通知,基于浏览器 Notification API。点击通知会把 DSH 聚焦并打开相关 Session。
2、DSH 风格的页内通知卡片。
3、可选的合成提示音,由 Web Audio 生成,不下载音频文件。

同一事件默认只在「桌面通知」和「页内卡片」中呈现其一,声音独立,可伴随任一形式。默认按浏览器可见性与焦点决定:

DSH 状态 默认呈现
标签页可见且浏览器窗口在前台 DSH 页内卡片
DSH 显示在另一台显示器、焦点在其他应用 Windows 通知
其他浏览器标签页在前台或浏览器最小化 Windows 通知
Windows 通知不可用或被拒绝 回退为页内卡片(启用页内通知时)

判断依据是浏览器的可见性与焦点,不是显示器数量。如果关闭「Only while DSH is inactive」,DSH 在前台时也可能弹出 Windows 通知;同一事件一旦成功投递了 Windows 通知,页内卡片仍会被抑制。

通知覆盖的事件:

  • 任务正常完成。
  • 任务失败、中止、被阻塞、被打断或达到输出上限。
  • 等待批准、计划审核或回答问题。
  • 子代理的完成与失败通知(可选,默认关闭)。

可靠性方面有两个值得注意的设计:

1、插件读取持久的 Harness turn/end 结果判断完成,而不是从瞬时的运行状态变化推断。
2、页面初次加载、刷新与重连时会建立静默基线,旧事件不会重放为新通知。

另外,插件不使用第三方通知服务,事件处理留在 DSH Web、浏览器 Notification API、Web Audio 和 Windows 内。

安装与启用

安装命令如下,作用是把公共包安装到 DSH Web 的 profile:

dsh plugin --profile web add @lsq64737/dsh-windows-notifications

如果 DSH Web 已在运行,安装后需要重启。重复运行同一条 add 命令可以更新已有安装。

卸载:

dsh plugin --profile web remove @lsq64737/dsh-windows-notifications

首次使用与设置

经过上面的安装步骤后,首次使用按下面顺序操作:

1、打开 DSH Web,进入 Settings → Notifications。
2、选择 Allow notifications。
3、接受浏览器的通知权限提示。
4、依次运行 Test Windows notification、Test in-page notification、Test sound,确认三种形式都正常。

注意:浏览器要求用户手势才能请求权限,插件在页面加载时不会自动弹出权限提示。如果之前拒绝过权限,需要先在浏览器站点权限设置中恢复,再重新测试。

Settings → Notifications 提供的开关及默认值:

设置项 默认 作用
Enable notifications On 任务通知总开关
Windows notifications On 使用浏览器 Notification API
Only while DSH is inactive On 只在 DSH 非活动时弹系统通知
In-page notifications On 未投递系统通知时显示页内卡片
Notification sound On 播放 Web Audio 合成的提示音
Volume 55% 提示音音量
Task completed On 任务成功完成的通知
Failures and interruptions On 非正常结束的通知
Waiting for your action On 批准、计划审核、提问的通知
Subagent notifications Off 包含子代理的完成与失败事件

Windows 通知、页内卡片、声音各有独立的测试动作。同类测试会替换未完成的测试而不是排队;真实任务通知保持到达顺序。

适用场景与注意

适合的人群:在 Windows 上通过浏览器使用 DSH Web、经常在任务运行期间切去其他应用工作的开发者。如果始终停留在 DSH 页面内,事件会按默认设置以页内卡片呈现。

使用前需要清楚这些边界:

1、DSH 标签页必须保持打开,关闭标签页或浏览器会停止所有通知处理。
2、Windows 通知要求浏览器和页面来源在允许的安全上下文中暴露 Notification API。
3、Chrome/Edge 的站点权限与 Windows 免打扰设置仍然有效,插件无法绕过。
4、Windows 控制系统通知的边框、位置与时长,插件只提供图标、标题、消息和点击动作。
5、浏览器可能对长期未使用的后台标签页做节流或冻结,即使 DSH 连接看似活跃,通知也可能延迟。
6、通知文本可能包含 DSH Session 标题,按系统通知设置,这些内容对 Windows 和锁屏可见。
7、排查问题时,操作类消息在 Harness 日志或浏览器控制台使用 windows-notifications: 前缀,覆盖权限、投递、设置与音频故障,不记录凭据。

安全提示:插件以当前 dsh 进程的权限运行,安装前建议先检查源码与许可证。本项目源码在 GitHub 公开,许可证为 MIT,可以自行审阅后再安装。

如果需要参与开发,要求 Node.js 24 或更新版本以及兼容的 DSH 开发工作区,标准流程是:

npm ci
npm run typecheck
npm test
npm run build

结尾

dsh-windows-notifications 解决的问题不大但很具体:让在 Windows 上使用 DSH Web 的人切窗口工作时,不漏掉任务完成和等待操作的事件。装好插件、完成一次权限授权和三项测试,之后就可以放心把 DSH 留在后台。

  • 社区目录页:https://www.skillhub.cn/plugins/lsq-dsh-plugins/dsh-windows-notifications
  • GitHub:https://github.com/lsq-dsh-plugins/dsh-windows-notifications

说明:skillhub.cn 是独立的社区插件目录,与 DeepSeek / 幻方无官方从属关系。

羽毛球分组比赛记分
小程序二维码

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

Xiaoye