dsh-windows-notifier:DSH 会话需要你了就弹 Windows 原生通知

前言

在 DSH(DeepSeek Harness)里跑智能体时,任务往往在后台继续执行:一轮结束、向你提问、或某个工具调用等你点批准。如果窗口不在前台,很容易错过这些「控制权交还给你」的时刻,只能反复切回浏览器或盯着终端。

常见做法是人工轮询会话列表,或依赖桌面应用自带的提醒——但 DSH 的插件模型允许在 host 层挂一行监听,把进程内事件转成系统通知。下面介绍社区插件 dsh-windows-notifier(维护者 ADkun,分类:客户端):它在 Windows 上监听整个 DSH 进程的相关事件,用系统 Toast 提醒你,并支持点击通知打开 DSH Web GUI。

这是什么

dsh-windows-notifier 是给 DSH 用的 Windows 原生通知插件:任意对话把控制权交还给你时,弹一条 Windows 系统通知。它监听的是整个 DSH 进程的事件,因此后台正在运行的对话同样会通知你,不必一直盯着某个会话窗口。

什么时候会通知

插件根据 DSH 派发的事件决定标题与正文。通知正文第一行是对话标题(取自 DSH 会话标题;尚未生成标题时回退到工作目录名),第二行是状态说明或具体内容(提问、工具名、错误信息、运行时长等)。

场景 通知标题 触发事件
任务完成,可以继续对话 对话已完成 agent/status → idle
智能体向你提问(ask_user_question) 需要你的输入 user-questions/request
有操作等待你批准 需要你批准 approval/request
某一步/某一轮出错 对话出错 agent/error
本轮被中止(可选,默认关) 本轮已中止 agent/status + turn/end: aborted

多智能体与后台委派: 默认开启 waitForSubagents 时,调度方在子代理仍在运行时不误报「对话已完成」;子代理全部结束后才补发完成通知。默认不对 subagent / workflow 子会话的「一轮跑完」弹完成通知(避免弹窗轰炸);子会话若需要提问、审批或报错仍会通知。若也要听子会话的结束,可在配置里打开 includeSubagents。

点击通知: 可打开 DSH 的 Web GUI(自动读取当前 Web 服务端口,也可用 launchUrl 指定)。GUI 目前没有会话级路由,点击后打开的是首页。

工作原理(简要)

DSH 进程 host 组合里挂载插件行 dsh-windows-notifier。插件同时观察两条通道:

  1. internal/dispatch —— 在作用域过滤之前公布派发,用 { global: true } 可看到所有作用域的事件,是监听任意对话(含后台对话)的可靠入口。
  2. 直接监听 agent/status、user-questions/request、approval/request、agent/error —— 兜底。

两条通道对同一载荷用 WeakSet 去重,避免重复通知。实际弹出由短命的 powershell.exe 调用 scripts/toast.ps1,通过 WinRT Windows.UI.Notifications 显示 Toast;无额外 npm 依赖,不阻塞问答/审批瀑布链。

安装与启用

DSH 通过 cordis.yml 与 profile 的插件依赖加载第三方包。从 0.2.0 起,包自带 bundle patch,安装并选中后会在 profile 里自动插入插件行 id: windows-notifier、name: dsh-windows-notifier,一般不必手写该行。

注意: desktop profile 不能通过 CLI 的 dsh plugin 管理(由 Electron 应用独占);请在 Desktop 插件市场里安装/升级。装包不等于选中:依赖装上但 dsh.profile.bundles 里没有该包时,插件不会生效。

从本仓库同步到 profile(README 实测路径)

在克隆或解压后的仓库根目录执行:

# 默认:装进每一个有 package.json 的 profile
powershell -NoProfile -File scripts\sync-to-profile.ps1

# 只装一个 profile
powershell -NoProfile -File scripts\sync-to-profile.ps1 -Profile web

脚本会 npm pack 生成 tarball,并对每个目标 profile 执行 dsh plugin --profile <profile> add "file:<tgz 绝对路径>",并核对 dsh.profile.bundles 是否包含 dsh-windows-notifier。

从 GitHub 安装到指定 profile

README 给出的形式示例(后端为 pnpm,需 PATH 上有 pnpm):

dsh plugin --profile web add github:ADkun/dsh-windows-notifier

安装后需重启 DSH 进程(或按你 profile 的加载方式)使 host 重新导入插件。改 src/ 内代码也必须重启;patchReload: live 的 profile 对 config: 改动可热加载。

不要把插件行写进机器级 $DSH_HOME\cordis.patch.yml。 该层会在各 profile patch 之后应用,可能覆盖你在界面保存的配置,并导致 Host 拒绝保存(提示配置被 home patch 覆盖)。

配置(可选)

行内可不写 config:,各开关在 src/settings.js 中有 schema 默认值。per-profile 配置写在 $DSH_HOME\profiles\<profile>\cordis.patch.yml,例如:

- id: windows-notifier
  name: 'dsh-windows-notifier'
  config:
    logFile: 'D:\dsh\dsh-windows-notifier\.dsh-windows-notifier.log'

README 还提到 launchUrl、waitForSubagents、includeSubagents 等项;具体默认值与说明以仓库内 settings/schema 为准。

典型用法

  1. 按上文在目标 profile(如 web)安装并确认 bundle 已选中,重启 DSH。
  2. 在 Windows 上照常使用 DSH:前台或后台会话在需要输入、审批、完成或出错时,应出现系统通知。
  3. 需要验证 Toast 链路时,包内提供脚本(见 package.json 的 scripts.toast):
npm run toast

(在插件包目录下执行,等价于 node scripts/send-test-toast.mjs。)

适用场景与注意

适合谁: 在 Windows 上使用 DSH、且经常让智能体在后台跑长任务的用户;希望用系统通知而不是一直盯着 Web 界面的开发者。

环境限制: 仅 Windows(依赖 PowerShell 与 WinRT Toast)。Linux/macOS 用户应另选其他客户端类插件或方案。

安全与信任: 插件以当前 dsh 进程 的权限运行,能读取进程内会话事件并启动 PowerShell 弹通知。安装前请阅读 MIT 许可 与源码,仅从可信来源安装。社区目录 SkillHub 与 DeepSeek / 幻方无官方从属关系,属社区生态「一切皆插件」的独立收录。

结尾

dsh-windows-notifier 把 DSH 里「需要你回来」的几类事件统一成 Windows 原生通知,并兼顾后台会话与多智能体委派下的误报抑制。若你在 Windows 上跑 DSH,值得把它加进 profile 试一轮。

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

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

Xiaoye