dsh-notifier:DeepSeek Harness 任务完成与审批通知插件

在 DeepSeek Harness (dsh) 中进行智能体开发或任务编排时,经常需要关注任务状态或等待人工确认。当窗口被遮挡或在其他应用中工作时,很容易错过这些关键节点。dsh-notifier 插件通过调用操作系统的原生通知能力,将任务完成和审批请求直接推送到桌面,从而解决这个问题。

是什么

dsh-notifier 是 DeepSeek Harness (dsh) 的一个系统通知插件。它由 YZz-S 维护,采用 MIT 许可证。该插件主要解决“任务执行状态不直观”和“审批流程易遗漏”的问题,确保开发者或用户在切换窗口时也能及时获取 DSH 的状态变化。

核心功能

  1. 任务完成通知
    当顶层会话从 running 状态变回 idle(即一个回合结束)时,插件会发送“Task completed(任务已完成)”的通知。插件使用 agents.roots() 来识别顶层会话,避免子代理结束时的通知刷屏。

  2. 审批与输入通知
    当触发审批(approval/request)或需要页面内手动输入时,插件发送“Action required(需要确认)”的通知,并在正文中包含触发该请求的工具名称和原因。

  3. 不干扰审批流程
    插件的通知逻辑透明地通过 waterfall 的 next() 传递,不会回答或改变审批结果,完全不影响原有的审批流程。

  4. 跨平台支持
    * Windows:支持 WinRT Toast,失败时降级为气泡通知。
    * macOS:调用 osascript 执行 display notification。
    * Linux:使用 notify-send。

  5. DeepSeek Harness 品牌标识
    在 Windows 平台上,插件会注册一个自定义的 AppUserModelID(DeepSeekHarness.Notify),这样系统显示的通知来源应用名和图标即为“DeepSeek Harness”。

安装与启用

安装该插件需要使用 DSH 的命令行工具。

dsh plugin --profile web add github:YZz-S/dsh-notifier

安装后,只要 dsh 进程在运行,任务完成或需要人工确认时系统通知会自动弹出。该插件为纯 Host 插件,无需刷新页面即可生效。

典型用法

根据使用场景的不同,有两种启用方式。

方式一:动态 Cordis 插件(临时运行)

这种方式适合在开发调试时临时启用,生命周期绑定在当前 dsh 进程。

  1. 在 dsh Web GUI 的 Cordis 工具中调用 cordis_define,将 host.js 的内容粘贴到 code.host 字段。参数需设置为 plugin.kind: 'new',idPrefix 取 3-6 个小写字母。
  2. 调用 cordis_run 激活插件。
  3. 下一次任务完成或触发审批时,系统通知会弹出。

注意:动态插件的生命周期与当前 dsh 进程相同。重启 dsh 后必须重新定义并运行。

方式二:安装为正式插件(推荐)

使用上方提供的安装命令将其安装为正式插件,无需每次手动定义。

工作原理

插件通过 subprocess.spawn 调用操作系统的原生命令来发送通知。命令探测顺序为:
1. Windows:优先使用 PowerShell 调用 WinRT Toast(带自定义 AppUserModelID),失败则降级为气泡通知。
2. macOS:调用 osascript。
3. Linux:调用 notify-send。

标题固定为“DeepSeek Harness”,正文显示“会话标题”+ 状态。为了防止通知过多,插件仅在检测到顶层会话(通过 agents.roots())从 running 变为 idle 时才发送任务完成通知。

隐私与注意事项

  1. 隐私
    * 仅在 HKCU 注册 AppUserModelID 用于显示来源名称和图标。
    * 不进行文件写入、遥测或持久化存储。
    * 不采集或上传任何本地数据。
    * Windows 平台仅在显示通知时从公开 CDN 拉取图标(avatars.githubusercontent.com/u/148330874?v=4&s=200)。

  2. 限制
    * 进程级别:动态插件以当前 dsh 进程为生命周期,重启后需重新加载。
    * 服务依赖:如果 subprocess 服务不可用,插件会静默禁用。
    * 网络依赖:Windows 平台的图标依赖网络,断网时图标不显示,但通知本身仍会弹出。

总结

dsh-notifier 通过轻量级的系统通知机制,解决了 DSH 任务执行和审批流程中信息滞后的问题。它遵循“不干扰业务”的原则,在提供即时反馈的同时,保持了极低的隐私风险和资源占用。

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

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

小夜