前言¶
用 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 / 幻方无官方从属关系。