前言¶
DSH 会话在运行中会持续产生多类需要人工关注的事件:需要审批、等待回复、后台任务结束、子任务结束、工作流结束。如果只在当前网页里查看状态,切换窗口后容易漏掉。
dsh-task-notify 把这些事件推送到浏览器系统通知中心,并提供应用内铃铛面板、Toast 浮层和清理入口,用于在离开当前页面时仍能感知关键状态。
这是什么¶
dsh-task-notify 是 kaotusi 维护的 DeepSeek Harness(DSH)客户端插件,许可证为 MIT。
它解决的是 DSH 运行过程中的通知问题:将审批、回复等待、任务结束等事件推送到系统通知中心,并保留应用内铃铛面板、Toast、诊断状态与清理按钮。
核心功能¶
下面介绍它已提供的主要能力。
- 监听以下事件:
approval/requestagent/turn-stoppingsubagent/endworkflow/end- 后台任务
onJobDone - 将未读通知推送到浏览器系统通知中心,调用
NotificationAPI,并播放分类型 Web Audio 合成提示音。 - 提供应用内铃铛面板、Toast 浮层、测试通知、重发、全部已读与清理按钮。
- 面板顶部显示系统通知权限、挂载与轮询状态诊断行。
- 宿主组合行监听所有会话事件,进程内队列上限 300 条。
- 客户端通过
/api/taskNotify/pull等接口轮询,使用localStorage去重,每轮最多推送 3 条新通知。 - 注册
taskNotifyRemote 服务,包括pull、ack、clear、purge、diag。 - 注册
ntfy_status诊断工具。 - 提供中 / 英双语界面,跟随 DSH locale。
安装与启用¶
安装前需要 Node.js 和 pnpm。dsh plugin 底层会调用 pnpm。
先运行下面命令安装插件:
dsh plugin --profile web add git+https://github.com/kaotusi/dsh-task-notify.git
如果实际 profile 名不是 web,把 --profile web 换成实际 profile 名。
安装后重启 dsh web,然后刷新页面。
如果所在网络访问 github.com 不稳定,可以先配置代理,或按仓库 README 使用手动拷贝方式。手动拷贝时,目录名需要严格为 dsh-task-notify,并位于 @deepseek-ai/ 作用域下。
典型用法¶
启用通知权限:
1、重启 dsh web 并刷新页面。
2、点击侧栏底部铃铛。
3、在浏览器通知授权框中选择允许。
4、确认面板顶部诊断行显示 系统通知: granted。
验证通知:
1、触发一次后台任务、审批、子任务或工作流。
2、查看浏览器系统通知中心是否弹出对应横幅。
3、确认提示音是否播放。
4、在应用内铃铛面板中查看通知列表。
清理通知:
点击面板中的「清理」按钮,可清空面板与宿主队列中的全部通知。
适用场景与注意¶
适合在 DSH 中运行需要审批、等待回复、后台任务、子任务或工作流的场景,尤其是页面不在前台、窗口切换较多、需要及时发现“需要我操作”的状态。
使用前注意:
- 插件以当前
dsh进程权限运行。安装前应检查源码、依赖和许可证。 - 需要浏览器通知权限。授权后诊断行应显示
granted。 - 宿主队列上限为 300 条。
- 客户端每轮最多推送 3 条新通知,已推送 ID 用
localStorage去重。 - 修改插件文件后需要重启 Harness 生效;typert 清单按包名缓存。
- peerDependencies 包括:
@deepseek-ai/cordis@deepseek-ai/dsh-tools@deepseek-ai/dsh-typert-protocolreactzod- 客户端 RPC 刻意走底层 connection seam,例如
/api/taskNotify/pull。不要回退为ctx.remote.<ns>调用。
结尾¶
dsh-task-notify 将 DSH 中需要人工关注的事件扩展为系统通知,同时保留应用内面板、Toast、诊断与清理入口。
仓库地址:
https://github.com/kaotusi/dsh-task-notify