dsh-task-notify:任务运行结束桌面通知插件

在 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 即可生效。

工作原理

  1. 注册:客户端 bundle(lib/client.js)以 dsh.client.platform: web 注册,由 harness 的 ClientModuleRegistry 扫描并下发到浏览器。
  2. 轮询:插件每 4 秒调用 connection.api.sessions.list({}),维护一个“运行中会话”的集合。
  3. 判定:当会话从运行中变为停止时,调用 connection.api.sessions.history({ sessionId }) 获取 turn/end 事件。
  4. 通知:根据事件 reason.kind 判定结果。如果窗口未聚焦,使用原生 Notification 弹出通知;失败时则渲染页内 .ntf-toast。

注意事项

  • 插件以当前 DSH 进程的权限运行,安装前建议检查源码与许可证。
  • 通知仅在窗口不在前台时触发。
  • 为了防止通知频繁轰炸,设置了 3 秒的最小通知间隔和 4 秒的轮询间隔。

结语

dsh-task-notify 通过原生系统通知和页面回退机制,为 DSH 任务执行提供了可视化的反馈。该插件属于社区插件,源码与目录可访问以下链接:

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

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

小夜