在 DSH(DeepSeek Harness)环境中开发 Agent 或执行任务时,确认任务是否完成是日常开发中的高频操作。通常开发者需要手动刷新界面或查看日志来获取状态。本插件通过轮询机制检测任务状态,并在任务结束时在桌面右下角弹出完成通知(类似 opencode 的表现形式),解决了手动确认的繁琐问题。
插件简介¶
这是一个 DeepSeek Harness 插件,由 weijianguizhou 维护。它的核心价值是在任务/Agent 运行结束时,在桌面右下角弹出完成通知。该插件作为纯客户端增强 bundle 运行,不修改任何官方代码。
核心功能¶
- 任务完成检测:通过轮询
sessions.list,检测“正在运行”到“停止”的会话变化(与任务看板同一机制)。 - 结果判定:读取
sessions.history中的turn/end事件,根据reason.kind判定结果:error判为失败,cancelled/aborted判为取消,否则判为成功。 - 桌面通知:优先使用 Electron 渲染进程的原生
Notification(Windows 右下角系统通知);不可用时回退为页面内右下角 toast。 - 不打扰:仅当窗口不在前台时通知;设置了 4 秒轮询间隔和 3 秒最小通知间隔,防止通知轰炸。
- 跟随主题:回退 toast 的颜色取自 DSH 主题变量(
--dsw-*)。 - 零侵入:作为纯客户端增强 bundle,不修改任何官方代码。
安装与启用¶
在目标 profile 中作为 link 依赖安装并加入 bundle 层:
dsh plugin --profile desktop add link:/path/to/dsh-task-notify
或者手动在 profiles/<name>/package.json 中加入依赖,并确保该插件出现在 dsh.profile.bundles 列表中。安装完成后重启 DSH Desktop 即可生效。
工作原理¶
- 注册:客户端 bundle(
lib/client.js)以dsh.client.platform: web注册,由 harness 的ClientModuleRegistry扫描并下发到浏览器。 - 轮询:插件每 4 秒调用
connection.api.sessions.list({}),维护一个“运行中会话”的集合。 - 判定:当会话从运行中变为停止时,调用
connection.api.sessions.history({ sessionId })获取turn/end事件。 - 通知:根据事件
reason.kind判定结果。如果窗口未聚焦,使用原生Notification弹出通知;失败时则渲染页内.ntf-toast。
注意事项¶
- 插件以当前 DSH 进程的权限运行,安装前建议检查源码与许可证。
- 通知仅在窗口不在前台时触发。
- 为了防止通知频繁轰炸,设置了 3 秒的最小通知间隔和 4 秒的轮询间隔。
结语¶
dsh-task-notify 通过原生系统通知和页面回退机制,为 DSH 任务执行提供了可视化的反馈。该插件属于社区插件,源码与目录可访问以下链接: