DeepSeek Harness 插件:dsh-notifier

前言

在 DeepSeek Harness (DSH) 的智能体开发与运行场景中,审批任务、任务完成状态或错误信息往往容易被后台进程淹没。dsh-notifier 插件解决了这一问题,它通过浏览器 Notification API 和系统原生 Toast(Windows PowerShell WinRT / macOS osascript / Linux notify-send)提供独立的通知渠道,确保用户即使不在浏览器前也能收到关键事件提醒。本插件 fork 自 wingsky-1/dsh-notifier,为 DSH 提供了轻量级的事件分发能力。

安装

安装前需确认 dsh web 已正常启动。本插件为独立构建,不依赖上游插件仓库。

dsh plugin --profile web add @jypjypjypjyp/dsh-notifier

安装/卸载/更新后需重启一次 dsh web 以使 bundle 生效。若未全局安装 dsh,可使用 npx 临时拉起(需本机安装 pnpm 与 Node.js):

npx @deepseek-ai/dsh plugin --profile web add @jypjypjypjyp/dsh-notifier

访问方式

插件所有接口均受 loopback 围栏 保护,仅接受本机回环(127.0.0.1 / localhost)调用。因此从局域网浏览器直连 HTTP 接口会返回 403,通知通道不工作。

请选用下列任一形态访问:

形态 访问方式 说明
本机桌面 http://127.0.0.1:3080 安全上下文,浏览器通知与系统通知均可用
局域网 HTTPS https://<IP>:3443 需配合 dsh-lan-proxy,满足安全上下文与回环校验
隧道 ssh -L 3080:127.0.0.1:3080 <服务器> SSH 隧道转发后访问本机地址

核心功能

插件通过双通道分发事件,并支持多种管理策略。

1. 事件类型

  • 向你提问(默认开):ask_user_question / GUI 提问弹窗触发时通知。
  • 审批提醒:真实审批路径触发,含任务标题、工具名、申请理由与操作提示。
  • 完成提醒:任务从运行到空闲时通知。子代理完成需开启 notifySubagentDone(默认关)。
  • 错误提醒:任务出错时通知,错误信息会脱敏处理(前 300 字符)。同类错误 60 秒内自动合并。
  • 轮次完成(默认关):agent/turn-stopping 时通知。

2. 通知渠道

  • 系统通知:Windows 使用 PowerShell WinRT,macOS 使用 osascript,Linux 使用 notify-send,均无需额外安装。
  • 浏览器通知:通过 SSE 推送,仅在页面隐藏时弹出。
  • 降级策略:非安全上下文(如局域网 HTTP)自动降级为页面内横幅、提示音及标题提醒。

3. 管理策略

  • 免打扰时段:支持跨午夜设置(如 22:00-08:00),可配置紧急例外。
  • 完成风暴聚合:多任务/子代理同时收尾时聚合为“另有 N 个任务已完成”,避免刷屏。
  • 审批超时二次提醒:等待超过 askRemindMin 分钟(默认 5)未处理时再次提醒。

配置与接口

配置文件默认位于 ~/.dsh/dsh-notifier.json,通过 /api/dsh-notifier/config 接口读写。

常用配置项:

{
  "notifyAsk": true,
  "notifyTaskDone": true,
  "notifyTaskError": true,
  "notifySubagentDone": false,
  "quietHours": { "enabled": false, "start": "22:00", "end": "08:00", "allowKinds": [] },
  "errorMergeWindowMs": 60000,
  "askRemindMin": 5
}

接口列表:
- GET/PUT /api/dsh-notifier/config:读取/保存配置。
- GET /api/dsh-notifier/events:SSE 订阅通知帧。
- POST /api/dsh-notifier/test:测试通知(绕过免打扰)。
- GET /api/dsh-notifier/history:获取最近通知记录(最多 200 条)。
- DELETE /api/dsh-notifier/history:清空记录。
- GET /api/dsh-notifier/health:健康检查。

安全与限制

  • 安全上下文:浏览器通知需 HTTPS 或 localhost。iOS Safari 普通标签页无 Web Notifications API,需添加到主屏幕获得 PWA 级通知。
  • Loopback 保护:所有接口拒绝非本机调用。
  • 数据脱敏:错误通知、审批理由、提问文本中包含的路径、私钥、令牌、密码等敏感信息会被脱敏为占位符。
  • 通知目标区分:浏览器通知推送到当前浏览器客户端;系统通知(Toast)弹在 dsh web 运行的宿主机器桌面。

验证

本地健康检查:

curl -s http://127.0.0.1:3080/api/dsh-notifier/health
羽毛球分组比赛记分
小程序二维码

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

小夜