dsh-turn-notify:DeepSeek Harness 任务完成时的原生 Windows 通知

前言

DeepSeek Harness(DSH)在处理多轮任务或复杂 Agent 工作流时,一轮执行结束后容易错过。浏览器通知权限绑定在 DSH 的随机回环端口上,每次重启都会丢失,无法保证窗口不在前台时也能看到。dsh-turn-notify 通过 Host 进程直接调用 Windows Toast API 解决这个问题,让任务完成通知更可靠。

这是什么

dsh-turn-notify 是一个客户端插件,维护者为 XEsx630。它的核心功能是在 DSH 每轮任务结束时,弹出一条真正的 Windows 系统通知(Toast + 提示音),并进入 Windows 通知中心。

核心功能

  • 任务结束才通知:监听 UI 的 uiSession.sessionStatus,在该轮 running 从 true 变为 false 时触发。不是每条消息、每次工具调用,也不是插件启动时。
  • 真正的系统 Toast:由 Host 进程通过 PowerShell WinRT 发出,进入 Windows 通知中心;不依赖浏览器 Notification 权限,也不受 DSH 每次启动随机回环端口的影响。
  • 窗口不在前台也能看到:DSH 最小化或被其他应用盖住时,Toast 仍显示在最上层。
  • 每轮都通知:包括当前正在查看的会话;跳过子代理会话和空白会话。
  • 提示音:应用内 WebAudio 播放两声短音,不依赖 Windows 通知音设置。
  • 设置页:在 DSH 的设置 → 通知 中可开关,也可发送一条测试通知。

安装与启用

需要 Windows 上的 DeepSeek Harness Desktop,插件在 0.2.1-rc.2 上开发并测试。

从 GitHub 直接安装:

dsh plugin --profile desktop add github:XEsx630/dsh-turn-notify

或克隆后从本地目录安装:

git clone https://github.com/XEsx630/dsh-turn-notify.git
dsh plugin --profile desktop add .\dsh-turn-notify

安装后如果设置里暂时没有”通知”,重启一次 DSH。

典型用法

  1. 打开 设置 → 通知,确认”任务完成”开关为开启状态。
  2. 点”发送测试通知”,应看到 Windows 系统 Toast(即使 DSH 不在前台)。
  3. 之后每轮任务完成时都会收到通知:标题为会话名,正文为”任务已完成 · 点击返回会话”。

实现原理

插件分两半:

  • Client(client.js):订阅 uiSession.sessionStatus,检测每轮完成;播放提示音,并调用 Host 的 /dsh-turn-notify/notify。
  • Host(index.js):在本机回环路由上接收请求,用 PowerShell 的 WinRT 投影直接发送 Windows Toast。Toast 本身静音,声音由 Client 播放,避免重复。

这样做的原因:渲染进程的 Notification 权限绑定在 DSH 的随机回环端口上,每次重启都会丢失;Host 直接发 Toast 则不受影响。

适用场景与注意

适合在 DSH 中运行多轮任务或复杂 Agent 工作流的开发者,需要持续监控任务进度并确保不遗漏轮次。

注意:插件仅支持 Windows;Toast 依赖 electron.app.DeepSeek Harness 这个 AppUserModelID,DSH 桌面端更新后如改动 AUMID,需要同步修改 index.js。DSH 窗口可以最小化或处于其他应用后面,但需要保持运行;完全退出 DSH 后无法检测任务完成,也就不会通知。提示音由渲染进程播放;如果渲染进程被销毁,Host Toast 仍可能显示,但不会有提示音。

结尾

dsh-turn-notify 通过 Host 进程直接调用 Windows Toast API,让任务完成通知在窗口不在前台时也能可靠显示,适合需要持续监控多轮任务进度的场景。插件已在 0.2.1-rc.2 上测试通过,支持 Windows 平台。

目录页 | GitHub

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

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

Xiaoye