DeepSeek Harness (DSH) 采用了插件化架构,开发者常在后台运行任务。当任务结束或遇到中断时,缺乏即时反馈会增加调试成本。dsh-notifier-plugin 旨在解决这一问题,通过系统级通知将关键事件反馈给用户。
插件介绍¶
这是一个由 hotpot-labs 维护的客户端插件。它提供桌面通知功能,支持在运行完成、模型提问 (ask_user_question) 或等待批准(沙箱升级/工具权限)时触发通知。
通知内容会反映运行结果(已完成/错误/中止/达到 token 上限/被阻塞/被中断)。在传输层面,支持在打包时切换:默认使用浏览器原生的 Notification(),也可配置使用 Tauri 的 @tauri-apps/plugin-notification。
核心能力¶
- 桌面通知支持:兼容 macOS、Linux 和 Windows。
- 关键事件触发:支持运行完成、模型提问、批准请求(沙箱升级或工具权限)的即时通知。
- 单次运行单通知:针对顶层运行会话,过滤子代理会话,一次运行仅触发一次通知。
- 前台静默:当页面或窗口可见且聚焦时,不发送通知,避免打扰。
- Web UI 设置卡片:提供实时配置界面,无需重启即可调整开关。
- 事件流重连:支持事件流的自动重连机制。
安装与启用¶
通过 npm 安装该插件(推荐):
dsh plugin --profile web add dsh-notifier-plugin
安装完成后,重启 web 进程以加载插件:
dsh --profile web web
验证插件是否正确挂载:
dsh --profile web --dump-config | grep -n dsh-notifier
配置方式¶
有两种配置方式,Web UI 设置优先级高于配置文件。
Web UI 配置(推荐)¶
- 打开
dsh web。 - 进入 Settings -> Plugins -> Plugin configuration。
- 展开通知卡片,调整开关并保存。
配置文件配置¶
在 profiles 目录下的 cordis.patch.yml 中声明配置:
- id: dsh-notifier
name: dsh-notifier-plugin
config:
enabled: true # 总开关
title: DeepSeek Harness
sound: true # 允许系统通知音效;false 则静默
onBlocked: true # 阻塞通知的总开关
onQuestion: true # 提问通知(仅当 onBlocked 为 true 时生效)
onApproval: true # 批准通知(仅当 onBlocked 为 true 时生效)
使用注意¶
- 权限授予:浏览器要求用户手势才能授予通知权限。建议在设置卡片中点击 Send test notification 按钮来触发授权。
- 前台运行静默:通知仅在 dsh web 页面或 Tauri 窗口打开时触发。无页面时无法收到通知(Headless 模式下不生效)。
- macOS 签名问题:macOS 对 ad-hoc 签名的应用拒绝通知权限,需使用开发者签名或通过宿主进程(
osascript)进行中转。 - Tauri 桌面端配置:Windows / Linux 端需额外安装
tauri-plugin-notification并配置 capabilities;macOS 端使用特殊的宿主中转机制。 - pnpm 版本限制:如果使用 pnpm ≥ 10,可能会阻止 git 依赖运行构建脚本。若安装后跳过构建,需在 profile 的
pnpm-workspace.yaml中允许该插件的构建。
总结¶
dsh-notifier-plugin 为 DeepSeek Harness 提供了基础的桌面通知能力,适合需要后台运行任务并关注状态变更的开发者。通过系统通知,可以在不打开界面的情况下掌握任务进度。
- 目录页: https://www.skillhub.cn/plugins/hotpot-labs/dsh-notifier-plugin
- GitHub: https://github.com/hotpot-labs/dsh-notifier-plugin