dsh-win-toast-notify:Harness 回合结束时弹出 Windows 原生 Toast

前言

用 DeepSeek Harness(dsh)跑长任务时,窗口往往要一直盯着,等模型写完、工具跑完才知道结果。Web GUI 在后台标签页里时,更难察觉一轮对话已经结束。dsh-win-toast-notify 在 Host 侧监听会话事件,在每一轮 turn/end 时通过 Windows 自带的 WinRT 通知 API 弹出原生 Toast,带上结束原因、会话标题、回复摘要和用时,便于你暂时移开视线继续做别的事。

这是什么

dsh-win-toast-notify 是社区维护的 DSH 插件(维护者 monika2333,GitHub:monika2333/dsh-win-toast-notify),归类为客户端相关能力:不改动 Client 界面,只在 Windows 10/11 上于 Host 进程内投递系统通知。它不写入事件流、不碰 fork/resume/replay,属于只读观察者。

核心功能

  • 订阅 durable 的 session/event,在 turn/end 时触发 Toast。
  • 通知正文大致为三行:第一行为结束原因与会话标题;第二行为该轮助手回复的纯文本预览;第三行为来源前缀(默认 DeepSeek Harness)与本轮耗时。
  • 默认跳过子智能体会话,避免一次 fan-out 弹出多条通知。
  • 通过 powershell.exe -EncodedCommand 调用 Windows.UI.Notifications,避免中文、引号、换行破坏命令行。
  • 非 Windows 平台插件会加载但不执行任何操作。

README 中的 Toast 示例:

任务完成 · Fix the login redirect
Updated the middleware and added two regression tests; all 41 tests pass.
DeepSeek Harness · 用时 4 分 12 秒

环境与依赖

  1. Windows 10 或 11。
  2. 使用内置 WinRT 通知 API(经 Windows PowerShell),无需原生模块、编译或额外安装脚本。
  3. Harness 需能发出带 turn/end 的 session/event feed(文档写明需 dsh 0.2.x)。
  4. 系统须允许对应应用显示通知;专注助手 / 请勿打扰会与其它通知一样抑制 Toast。

安装与启用

在已安装 dsh 的环境中执行官方文档给出的命令:

dsh plugin add dsh-win-toast-notify

也可在 dsh-market 插件浏览器中安装。若当前构建不会热加载插件行,安装后需重启 Harness。

插件以 npm 包形式发布,当前资料中的版本为 0.1.0,许可证 MIT;运行环境要求 Node >=22(见仓库 package.json)。

哪些结束原因会通知

Host 监听 turn/end,默认行为如下:

turn/end reason 默认是否通知
completed 是 — 文案「任务完成」
error 是 — 「任务出错」
blocked 是 — 「任务受阻」
max-tokens 是 — 「输出达到上限」
interrupted 是 — 「任务被中断」
aborted(用户按 Stop) 否
forked 否

配置

在 profile patch 中编辑该插件行的 config,或在插件设置卡片中修改,然后按需重启:

- id: dsh-win-toast-notify
  name: dsh-win-toast-notify
  config:
    enabled: true                 # master switch
    reasons: [completed, error]   # which end reasons notify
    includeSubagents: false       # also notify child sessions
    previewChars: 160             # length of the reply preview
    sound: true                   # play the default notification sound
    titlePrefix: DeepSeek Harness # third line prefix
    showSessionTitle: true        # fall back to the working-directory name when off
    appId: ''                     # override the toast's AppUserModelID (empty = auto)
    powershell: ''                # override the notifier executable

可按需只保留关心的 reasons,打开 includeSubagents 以包含子会话,或调整 previewChars、sound、titlePrefix 等。

工作原理摘要

  1. 只读观察:内存中仅保留回合开始时间与最后一段助手文本,不追加事件、不写文件。
  2. 仅 Host:无 Client 模块;Web GUI 在后台标签或已关闭时仍可收到 Toast。
  3. 应用标识:若存在桌面版 Start 菜单快捷方式,Toast 挂在 com.deepseek.dsh 下,显示为 DeepSeek Harness;纯 dsh web 或 CLI 安装若未注册该 AUMID,系统可能静默丢弃,插件会回退到 Windows PowerShell 的 AUMID(通知中心里可能显示为 PowerShell)。
  4. 进程模型:通知子进程不脱离 Host,约一秒内退出,避免与 Job 对象一起被回收导致通知丢失。

预览内容为纯文本:Markdown 代码块、链接、强调与行内代码会被剥掉。

适用场景与注意

适合在 Windows 上长时间用 Harness 写代码、跑工具链,又需要离开主窗口的场景。插件与当前 dsh Host 同权限运行;安装前建议阅读 GitHub 仓库 源码与 MIT 许可证。DSH 生态以「一切皆插件」为思路,SkillHub 目录页 等为社区站点,与 DeepSeek / 幻方无官方从属关系。

局限:仅 Windows;回退 AUMID 时 Toast 归属 PowerShell;非 Windows 无效果。

结尾

dsh-win-toast-notify 把「一轮 Harness 任务结束」变成系统级 Toast,减少盯着终端或浏览器标签的必要。安装命令为 dsh plugin add dsh-win-toast-notify。详情与问题反馈见目录页 https://www.skillhub.cn/plugins/monika2333/dsh-win-toast-notify 与 https://github.com/monika2333/dsh-win-toast-notify 。

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

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

Xiaoye