前言¶
在 Windows 上使用 DSH(DeepSeek Harness)进行智能体开发时,任务完成、审批请求或 Agent 提问需要确认时,往往需要频繁切换窗口或查看日志。现有的 Windows 通知中心在 DSH 最小化或被其他窗口覆盖时不可见,容易遗漏关键信息。
桌面弹窗通知插件在屏幕右下角展示置顶卡片,卡片是一个由 WinForms 进程绘制的独立窗口,不会因为 DSH 被其他应用盖住而消失,也不会抢占输入焦点。
插件定位¶
dsh-notify-toast 是一个 DSH 插件,由维护者 fhghth 开发,用于在 Windows 上为任务完成、权限审批、Agent 提问和任务失败四种场景提供桌面弹窗通知。插件采用 MIT 许可,仅支持 Windows 10/11。
核心功能¶
- 四类卡片:任务完成、权限审批、Agent 提问、任务失败。
- 置顶但不抢焦点:使用
WS_EX_NOACTIVATE+WS_EX_TOOLWINDOW样式,前台应用不会被打断输入。 - 点击跳回会话:点击卡片会将 DSH 提到前台并切到对应对话。
- 内置音效:随插件分发 5 个 WAV 音效,支持 Windows 自带音效库与自定义
.wav。 - 全部可配置:尺寸、颜色、图标、音效、停留时长等均可配置,并提供预览功能。
系统要求¶
| 项 | 要求 |
|---|---|
| 操作系统 | Windows 10 / 11 |
| DSH | 桌面版,>= 0.2.1-rc.3 |
| Shell | Windows PowerShell 5.1(powershell.exe) |
| 运行时 | .NET Framework 4.8(Windows 10/11 自带) |
安装¶
从插件市场索引安装¶
在 设置 → 插件 → 插件市场 里添加索引地址,然后到「发现」页安装 桌面弹窗通知。
手动安装¶
plugin_manager install_bundle target = <索引里给出的安装 spec>
或从源码目录:
plugin_manager install_bundle target = D:\path\to\dsh-notify-toast
安装后刷新页面,客户端半边才会加载。
使用¶
- 设置 → 插件 → 桌面弹窗通知:所有配置都在这里。
- 用 预览完成卡 / 预览审批卡 / 预览提问卡 / 预览失败卡 检查外观,不用真的跑任务。
- 先保存再预览:预览读取的是已保存的配置,不是草稿。
触发条件¶
| 卡片 | 触发条件 |
|---|---|
| ✓ 完成 | 回合以 completed 结束(子代理会话不弹),按 settleMs 去抖 |
| 🔒 审批 | 审批服务记录 approval/asked |
| ? 提问 | Agent 调用 ask_user_question |
| ! 失败 | 回合以 error / interrupted / blocked 结束(默认关闭) |
主要配置项¶
| 配置 | 默认 | 含义 |
|---|---|---|
enabled |
true |
卡片总开关 |
notifyOnComplete / notifyOnApproval / notifyOnQuestion / notifyOnError |
true / true / true / false |
分类开关 |
soundEnabled |
true |
音效总开关 |
soundComplete / soundApproval / soundQuestion / soundError |
自带 WAV | 支持 sounds/*.wav、media:<系统音效名>、system:*、none |
width / height / scale |
400 / 104 / 1.0 |
卡片尺寸,按 DPI 缩放 |
durationMs / maxCards / gap / margin |
8000 / 4 / 8 / 16 |
停留时长与布局 |
position / screen |
bottom-right / primary |
停靠位置与显示器 |
bgColor … accentQuestion |
白底黑字 | 颜色(设置页提供色盘) |
iconStyle |
vector |
vector / glyph / image |
settleMs / minIntervalMs |
1500 / 3000 |
完成去抖与同会话限流 |
clickToOpenSession |
true |
点击跳回会话 |
idleExitMs |
900000 |
通知进程空闲多久后退出 |
debug |
false |
调试日志 |
工作原理¶
approval/asked · tools/pre-execute(ask_user_question) · turn/end
│ Host 插件(index.js)
│ stdin/stdout 上的 NDJSON
▼
notifier 进程(PowerShell + WinForms,单实例)
│ 点击 → SetForegroundWindow + stdout 事件
▼
Host → SSE /dsh-notify/events → 客户端半边 → ctx.uiWorkspace.openSession()
Host 按需拉起唯一一个通知进程,展示期间保持常驻,空闲 idleExitMs 后退出;新实例启动时会结束旧实例,因此插件重载不会留下孤儿进程。
隐私¶
- 全部本地运行,插件不发起任何网络请求。
- 只读取对话标题和会话 id,不读取消息内容。
- 三个本地路由(
/dsh-notify/events、/dsh-notify/config、/dsh-notify/preview*)只监听 DSH 的回环地址。
适用场景与注意¶
- 适合在 Windows 上频繁运行 DSH、需要实时掌握任务状态的智能体开发者。
- 插件以当前 DSH 进程权限运行,安装前应检查源码与许可证。
- 已知限制:虚拟桌面下卡片不会跟随切换;审批卡片与 DSH 审批框同在右下角可能遮挡按钮;升级需要卸载后重装。
结尾¶
桌面弹窗通知插件在 Windows 上提供了一套可靠的桌面通知方案,通过独立进程绘制窗口、去抖与限流机制,减少干扰的同时保证信息可见。插件处于早期开发阶段,配置项与行为可能变化,使用风险自负。
- 目录页:https://www.skillhub.cn/plugins/fhghth/dsh-notify-toast
- GitHub:https://github.com/fhghth/dsh-notify-toast