前言¶
DeepSeek Harness (DSH) 能够捕获会话中的特定事件,例如任务完成、报错或等待审批。在没有外部干预的情况下,这些事件仅存在于当前的会话或窗口中。如果你同时运行多个并行会话,或者将窗口最小化到后台,这些事件很容易被忽略。
goodandready/dsh-plugin-notify 插件旨在解决这一隔离问题。它通过五种灵活的通知层,将事件反馈从会话内部扩展到浏览器外部。
插件简介¶
插件名称为 @goodandready/dsh-plugin-notify,由 GooDAnDReaDY 维护,属于联网工具分类。它提供音频提示、跨会话弹窗、桌面原生推送、远程 IM Webhook 以及 Web Push (PWA) 等功能,覆盖任务完成、报错和审批等待等场景。
核心功能¶
插件主要提供以下能力:
- 音频提示:利用 Web Audio API 生成五声音阶提示音,无需加载外部音频文件。
- 跨会话弹窗:在屏幕上显示浮动横幅,横幅包含“跳转会话”按钮,可直接跳转到触发事件的具体会话。
- 桌面/操作系统推送:通过 HTML5 Notification API,在 Windows、macOS、Linux 和 DSH Desktop 上发送原生通知,点击通知可聚焦窗口或切换会话。
- 远程 IM Webhooks:向飞书、企业微信、钉钉、Slack、Discord 或自定义端点发送 JSON 格式的 Webhook 请求。
- Web Push (PWA):利用 W3C Push API 和 Service Worker 实现后台推送,即使浏览器标签页关闭也能接收通知。此功能需要 HTTPS 环境或 localhost。
- 其他功能:支持 Do Not Disturb (DND) 窗口设置、排除特定会话前缀,以及通过 Server-Sent Events (SSE) 实现实时通知流。
安装¶
通过 DSH Web Profile 安装:
dsh plugin --profile web add @goodandready/dsh-plugin-notify
安装后,重启 Web Profile 使客户端加载生效。随后进入 Settings → Plugins → Notify 配置插件。
配置与用法¶
Webhook 配置¶
所有的 Webhook URL 必须配置在 Settings → Credentials 中。在插件配置卡片中,只需填写对应的凭证名称。
YAML 配置示例¶
在插件的配置 YAML 中,可以启用各类通知并设置参数:
- id: plugin-notify
name: '@goodandready/dsh-plugin-notify'
config:
enableSound: false
enableToasts: false
enableDesktopNotifications: false
notifyBackgroundOnly: false
webhooks:
feishu: NOTIFY_FEISHU_WEBHOOK
wecom: NOTIFY_WECOM_WEBHOOK
dingtalk: NOTIFY_DINGTALK_WEBHOOK
slack: NOTIFY_SLACK_WEBHOOK
discord: NOTIFY_DISCORD_WEBHOOK
custom: NOTIFY_CUSTOM_WEBHOOK
events: [task_done, error, approval_requested]
local: true
timeoutMs: 5000
dnd:
start: ''
end: ''
includeSession: true
includeDuration: true
excludeSessionPrefixes: []
webPush:
enabled: false
onlyWhenAway: true
subject: 'mailto:notify@localhost'
stateFile: ''
VAPID 密钥管理¶
若使用 Web Push 功能,VAPID 密钥默认在首次使用时生成并持久化。也可通过环境变量手动管理:
* DSH_NOTIFY_VAPID_PUBLIC_KEY
* DSH_NOTIFY_VAPID_PRIVATE_KEY
本地化¶
UI 支持英语 和中文。俄语界面由 dsh-russian-lang 运行时提供。
注意事项¶
- 运行环境:插件依赖 Node.js 20 或更高版本。
- Web Push 限制:Web Push 需要 HTTPS 协议支持(本地开发除外)。在 iOS 设备上,PWA 必须添加到主屏幕(iOS 16.4+)才能正常接收后台推送。
- 错误处理:Webhook 请求失败仅记录日志,不会重试,也不会阻塞 DSH 的代理循环。失效的订阅会被自动清理。
- 样式隔离:注入的样式表包含
data-dsh-plugin="dsh-plugin-notify"标签。
总结¶
该插件通过将 DSH 事件通知从会话中解放出来,提供了从本地音频到远程 IM 的多层级反馈。通过配置 Webhook,可以将自动化流程与现有的 IM 工具集成,确保关键事件及时被感知。