dsh-notify-center:DSH 本机桌面通知与 Webhook 插件

前言

在 DeepSeek Harness 中,顶层 Agent 执行任务时可能完成、进入等待或等待审批。如果开发者不在终端窗口或 Web UI 前,容易错过这些状态。dsh-notify-center 是 SingleOne 维护的 DSH 插件,MIT 许可。它把顶层 Agent 的完成或审批等待事件发送成本机桌面通知,也可以投递到已配置的 Webhook。下面介绍它的定位、能力、安装方式和需要注意的地方。

这是什么

dsh-notify-center 是统一的本机桌面通知和 Webhook 通知插件。它面向需要离开当前终端但仍要接收 DSH 状态提醒的使用者。

它主要解决三个问题:

1、顶层 Agent 完成一轮任务后,及时通知使用者。
2、顶层 Agent 等待审批时,提醒用户处理,但不接管审批 waterfall。
3、把通知送到本机桌面,或推送到已配置的远程 Webhook。

它不额外产生提示词、Token、工具调用或模型行为开销。

核心功能

完成与审批事件

插件以 session/event → turn/end 保存准确的结束原因,并在顶层 Agent 进入 idle 后派发完成通知。

它监听持久的 approval/asked 审计事件,提醒用户处理审批。默认会过滤子 Agent;同一 Agent 连续完成多轮时,按顺序逐轮通知。

本机桌面通知

本机通知支持:

  • Windows 原生 Toast,失败时降级为 NotifyIcon 气泡。
  • macOS osascript
  • Linux notify-send

每条本机通知使用 session + turn/event 唯一标识,避免 Windows 因复用 tag 静默吞掉后续通知。

Webhook 通知

插件支持飞书、企业微信、钉钉、Slack、Discord 和自定义 JSON Webhook。

每个 Webhook 可独立选择事件和摘要权限;远程通道默认 includeSummary: false,启用后会发送该轮回复的有界摘要。

Webhook 支持超时和指数退避重试;投递不阻塞 Agent,日志不会输出 Webhook URL。

过滤与正文控制

插件支持按完成结果开关、关键词/正则包含与排除规则、正文长度上限。事件范围和规则可以在 DSH Web UI 设置页调整,也可以在 profile 基础配置中提供组合基础值。

安装与启用

插件运行环境要求 Node >=20

从 GitHub 安装到 DSH web profile:

dsh plugin --profile web add github:SingleOne/dsh-notify-center

安装后重启 dsh web

如果从源码开发,可在插件仓库根目录执行:

npm install
npm run check

然后安装本地目录:

dsh plugin --profile web add .

源码验证可执行:

npm run typecheck
npm test
npm run build

典型用法

1、打开 DSH 左侧设置入口,选择“通知中心”。
2、修改本机通知、Webhook、事件范围、摘要权限或正文长度上限等设置。
3、保存后实时生效。

也可以在 ~/.dsh/profiles/web/cordis.patch.yml 中为插件行添加 config 作为组合基础值:

- id: dsh-notify-center
  config:
    webhooks:
      feishu:
        url: 'https://open.feishu.cn/open-apis/bot/v2/hook/REPLACE_ME'
        includeSummary: false

页面保存的用户层位于:

$DSH_HOME/dsh-notify-center/settings.json

未设置 DSH_HOME 时:

~/.dsh/dsh-notify-center/settings.json

该文件由插件维护,不建议手工编辑。

桌面桥接

可选的桌面 App 桥接可以优先把通知交给桌面 App 展示。桥接缺失或失败时,自动回退系统原生通知。

桌面 App 启动 DSH 子进程时可注入:

DSH_NOTIFY_BRIDGE_URL
DSH_NOTIFY_BRIDGE_TOKEN

独立系统通知的点击行为由操作系统负责;只有桌面桥接通知支持唤醒 App 并定位会话。

适用场景与注意

适合:

  • 顶层 Agent 长时间执行,希望在完成或等待审批时收到提醒。
  • 需要把 DSH 状态推送到飞书、企业微信、钉钉、Slack、Discord 或自定义 Webhook。
  • 希望在 DSH Web UI 中调整通知设置,而不是只改 profile 基础配置。

使用前注意:

  • 插件以当前 dsh 进程权限运行,安装前应检查源码与许可证。本插件许可证为 MIT。
  • 插件仅向显式配置的 HTTP(S) 地址发请求。
  • Webhook URL 只存在当前用户的 Host 设置文件或 profile 基础配置中,并以 secret 字段持久化、不会回传浏览器。
  • 插件配置 API 仅接受回环同源请求,并从所有响应中剥离 URL;Webhook URL 不写入会话日志,也不会进入模型上下文。
  • Linux 系统必须提供 notify-send
  • 可视化设置页仅随 DSH Web UI 加载;headless 使用方式仍通过 profile 配置。
  • 缺少 WebServer 时只会停用页面和配置 API,不影响本机通知与 Webhook 投递。
  • 投递队列仅保存在内存中;DSH 进程退出时不会持久化未完成重试。
  • Windows 首次通知会创建开始菜单快捷方式 dsh-notify-center.lnk,并在当前用户的 HKCU\Software\Classes\AppUserModelId 下注册 DeepSeekHarness.NotifyCenter;不写入系统级注册表。移除快捷方式和该 HKCU 项即可撤销。

结尾

dsh-notify-center 的价值比较集中:把 DSH 顶层 Agent 的完成和审批等待状态送到本机桌面或已配置 Webhook,同时保留默认关闭摘要、URL 脱敏和进程内投递等限制边界。

GitHub 仓库:

https://github.com/SingleOne/dsh-notify-center
羽毛球分组比赛记分
小程序二维码

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

Xiaoye