在 DeepSeek Harness (DSH) 中运行智能体时,开发者需要及时获知任务状态变化。仅靠浏览器刷新或终端日志容易遗漏信息,尤其是当需要用户介入时。dsh-notify 插件通过桌面原生通知和远程浏览器推送,补充了这一监控能力。
是什么¶
这是一个 DSH 插件,由 Dawn388887 维护。它提供桌面 Toast 通知和远程浏览器通知,用于响应 root-session 智能体的完成、错误或等待用户输入的状态。
核心功能¶
插件主要处理以下几类事件:
- 任务完成:当当前正在查看的 root-session 智能体从运行状态变为空闲状态时,触发桌面通知。
- 错误反馈:当智能体出错时触发通知。系统会针对每个回合/步骤进行去重,最多记录 64 条错误信息。
- 等待用户:当
ask_user_question工具实际开始等待用户回答时触发通知。去重基于工具调用,如果启动立即失败则不通知。 - 远程交互提醒:在任何前台或后台的 root-session 中,只要出现需要用户关注的
question或plan-review交互,浏览器端就会收到通知。 - 命令与控制:
- 提供
/notify status查看状态。 - 提供
/notify on|off开关远程通知。 - 提供
/notify test进行测试。
- 提供
- 全局开关:在设置面板的“远程通知”选项中有一个全局开关,与
/notify命令共享逻辑,状态持久化存储在~/.dsh/notify-state.json。 - 会话过滤:仅 root 会话触发通知,子代理保持静默。
安装与启用¶
插件是纯本地插件,通过 Cordis 补丁注入。
# 假设插件位于 ~/.dsh/plugins/dsh-notify
dsh plugin --profile web add ~/.dsh/plugins/dsh-notify
或者,在 Cordis composition patch 中插入:
- insert:
- id: notify
name: dsh-notify
inject: [webServer]
修改 composition 或更新插件后,需要重启 dsh web 并刷新浏览器页面。
典型用法¶
桌面端:
需要 Windows + WinRT 环境。任务完成、出错或等待用户回答时,会弹出原生 WinRT Toast,并播放默认通知音效。
远程设备:
浏览器页面使用 Service Worker (/dsh-notify/sw.js)。完成和错误状态跟随当前查看的会话;问题与计划审查等待状态则监听所有 root 会话。
权限与开关:
浏览器首次使用时会请求通知权限。如果之前被拒绝,需在站点设置中手动开启。控制开关可通过设置页面的“远程通知”选项,或直接使用 /notify off 命令。远程页面在标签页重新可见时会自动同步开关状态。
注意事项¶
- 环境依赖:桌面通知功能依赖 Windows 和 WinRT,无法在其他系统上使用。
- 版本兼容:v1.2.1 修复了 DSH 0.1.7-rc.1 版本下的启动错误;所有会话监听逻辑会优先读取
uiSession.sessionStatus(DSH 0.1.7),若不可用则回退到uiSession.pendingInteractionsAPI。 - 测试方式:所有测试均为离线模拟,无需运行实际的 DSH Web 实例即可验证逻辑。
总结¶
dsh-notify 解决了 DSH 开发中状态监控不及时的问题,通过统一的桌面与远程通知机制,帮助开发者更高效地响应智能体的运行状态。