dsh-notify-toast: DSH Native Notifications and Taskbar Unread Badges on Windows

前言

DeepSeek Harness(DSH)在桌面端跑 Agent 时,窗口一旦切到别的应用,提问、工具授权和一轮回复结束都容易错过。浏览器自带的 Web Notification 在 Electron 壳里体验参差,也缺少和 DSH 会话、Goal 模式对齐的合并与汇总逻辑。下面介绍社区插件 dsh-notify-toast(维护者 game25011,MIT):面向 Windows 10/11 的 DSH Desktop,用系统 toast 和任务栏角标做「未聚焦时才提醒」,不常驻托盘、不访问外网、不调用模型。

这是什么

dsh-notify-toast 是适用于 DeepSeek Harness Desktop 0.2.1-rc.2(Electron,profile 为 desktop)的非官方客户端插件。清单公共 id 为 dsh.notify-toast,源码包名与目录为 dsh-notify-toast,当前版本 0.4.0。形态为 DSH 官方 bundle(Host + Web Client 两半),通过官方插件管理器安装;npm 上尚未发布该包,不要执行 npm install dsh-notify-toast(该名称在 npm 上属于其他项目)。

插件监听 DSH 权威事件(审批、提问、根会话 turn/end),在客户端判断 document.hasFocus() 与 visibilityState;窗口聚焦时不弹不响。Host 侧通过 PowerShell/C# WinRT 走 Windows 原生进度 toast,失败时静默降级为 Web Notification,两条路径均为 silent,提示音由插件统一播放一次。

核心功能

三类提醒

场景 触发 表现(摘要)
需要回答/确认 user-questions/request 标题「DeepSeek 想问你一个问题」,正文为问题原文截断
需要授权 approval/request 标题「DeepSeek 需要你的授权」,正文为工具名与简短目的
本轮回复结束 根会话 session/event 的 turn/end(completed) 按步数变化标题;正文取最后一条助手回复首段,取不到为「点击查看」

子代理完成默认不触发「本轮回复结束」提醒;只表示这一轮回复结束,不代表整个任务完成。

目标模式(Goal)

在 goal active + armed 期间不逐轮弹完成提醒;在 complete、paused、blocked、Round 上限或 disarmed 后,按 roundsStarted 增量只发一条汇总。提问与授权仍即时弹出。

任务栏未读角标(0.4.0)

DSH 在后台时,在任务栏图标上按不同根会话计数(同一会话多次完成只计 1)。1–3 显示数字角标,超过 3 显示红点;回到 DSH 或聚焦后自动清除。可在设置中关闭。不增加常驻进程,仅在 helper 一次性调用中更新。

原生进度 toast 与兼容

默认使用 Windows 原生进度通知(含动态进度条),到达近似时间后停止更新并收回横幅;通知中心保留受 ExpirationTime 约束。可在设置里切换「Windows 兼容通知」。正文默认 40 个 Unicode 码点(可配 20–60);隐私模式可只显示标题。

其它行为

  • 合并:默认 2.5 s 内多个「完成」合并为一条。
  • 点击回窗:Host 优先用 SetForegroundWindow 置前 DSH,再尽力打开对应会话。
  • 提示音:Web Audio 四种合成音 + 内嵌 CC0「弹一下」,音量 0–100,可关闭、可试听。
  • 可选(默认关):多个根会话同时运行且全部成功结束后,将最后结束的会话标题改为指定文案;仅单会话运行时不生效。

明确不做:常驻托盘/后台服务、任务栏进度条闪烁、外网遥测、修改 DSH 核心。

安装与启用

不要手改 profile 的 package.json 或 cordis.patch.yml。安装后 Host JavaScript 模块需重启一次 DSH 才会加载新代码(客户端 bundle 可热更新)。

方式 A:应用内插件管理器(推荐)

  1. 将 dsh-notify-toast-0.4.0.tgz 放到本机目录(路径勿含空格)。
  2. 在 DSH 内安装:
    - Agent:plugin_manager → action: install_bundle,target: <tgz 绝对路径>
    - 或使用插件管理界面(Desktop 的 desktop profile 由 Electron 应用管理,自管 web/headless profile 才适用 CLI 插件命令)。
  3. 在 设置 → 插件 确认 dsh-notify-toast 已启用,重启 DSH。
  4. 打开 设置 →「通知」,点「发送测试通知」;「运行状态」可查看 Host 连接、transport 与最近提醒计数。
plugin_manager → install_bundle → target: <插件目录绝对路径>

目录安装为 link,改动可被 HMR 感知;Host 侧 JS 未热更新时需重启 DSH。

方式 C:自托管市场索引

在 DSH 插件市场/发现页添加自定义索引:

https://raw.githubusercontent.com/game25011/dsh-notify-toast/13729f7061214a62074e75ee3274225482fe5494/market-index.json

添加后搜索 dsh-notify-toast 可从 Git 源安装固定版本。DSH 官方默认索引不会自动收录,其他用户需自行添加同一索引或等待目录收录。

卸载

插件管理界面禁用/移除,或 Agent:plugin_manager → action: remove_bundle,target: dsh-notify-toast。卸载后 Host 监听与客户端 bundle 随插件释放,profile patch 中的配置不再生效。

典型用法

安装并重启后,日常无需额外命令:Agent 在后台跑任务时,遇到提问或授权会弹 toast;根会话一轮结束且窗口未聚焦时会提醒。Goal 长任务结束后收到一条汇总而非连环弹。

在 设置 →「通知」 可按需调整:

  • 总开关与各子开关(提问、授权、本轮回复、任务栏角标、Goal 结束后汇总)。
  • 通知显示方式(原生进度 / 兼容)、自动移除时间(3–30 秒,默认 8 秒)。
  • 正文长度、隐私模式、提示音与音量、合并间隔(0–10000 ms,默认 2500)。
  • 「测试通知」「测试系统通知」与状态诊断。

配置即时生效,持久化走官方 ctx.settings(写入当前 profile patch),重启 DSH 后保留。

适用场景与注意

适合:在 Windows 10/11 上使用 DSH Desktop,经常把 DSH 放到后台写代码或开会,仍需要知道 Agent 在等授权、等回答或刚跑完一轮的用户。

环境与权限:

  • 引擎要求:dsh >=0.2.1-rc.2 <0.3.0,Node >=20。
  • 插件以当前 DSH 进程权限运行;安装前应阅读 GitHub 仓库 源码与 MIT 许可证。主要代码由 AI 编程助手生成,人类维护者负责需求、测试与发布;详见仓库 AI-DISCLOSURE.md。
  • 通知权限拒绝、Host 不可用或 koffi 加载失败时插件不崩溃,设置页会显示状态并降级。
  • Goal 边界场景维护者标注仍待补测;使用前以仓库 README 与 CHANGELOG 为准。

结尾

dsh-notify-toast 把 DSH 后台时的提问、授权与根会话完成,接到 Windows 原生通知和任务栏未读角标上,并配合 Goal 汇总、合并与隐私选项,减少漏看又不抢焦点。社区目录页:skillhub.cn/plugins/game25011/dsh-notify-toast;源码与安装说明:github.com/game25011/dsh-notify-toast。

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

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

Xiaoye