dsh-plugin-notify:DSH 回合结束与待办时的多渠道消息提醒

前言

在 DeepSeek Harness(DSH)里跑长任务时,模型往往要跑完一整回合、等你点确认,或通过提问工具等你回复。窗口切到别处或最小化后,很容易错过这些节点。单靠盯着界面并不现实;把提醒接到系统通知或群机器人,是更常见的做法。

下面介绍社区插件 dsh-plugin-notify(维护者 c-ling):在 Web 与桌面端订阅会话事件,按配置向页面内横幅、桌面/浏览器原生通知、宿主机系统通知,以及飞书、钉钉、企业微信或通用 Webhook 发送提醒,并在设置里提供「消息提醒」配置页。

这是什么

dsh-plugin-notify 是 DeepSeek Harness 的消息提醒插件,分类属于联网工具类能力(Webhook 与宿主机通知会发起外连)。适用于 DeepSeek Harness 0.2.1+;0.1.x 不再作为兼容目标。当前包版本为 v1.4.0,许可证 MIT。项目在 GitHub 上开源:c-ling/dsh-plugin-notify;社区目录页:skillhub.cn 插件条目。

插件以 DSH 插件形式加载:宿主端订阅 session/event 并暴露认证 API,客户端注册设置区与页面内提醒 UI。配置持久化在 $DSH_HOME/storages/dsh-plugin-notify/config.json,Web 与桌面端共享同一份 $DSH_HOME。

核心功能

通知渠道

渠道 位置 说明
页面内提醒(横幅) 客户端 页面可见时右上角文字横幅;支持多会话、点击跳转会话。
桌面通知 / 浏览器系统通知 客户端 桌面端走 Electron 通知中心;Web 端走浏览器 Notification API(需授权)。
宿主系统通知 宿主机 macOS osascript、Linux notify-send、Windows PowerShell toast;浏览器关闭也可收到,可选提示音。
飞书 / 钉钉 / 企业微信群机器人 宿主机 文本消息;飞书、钉钉可选签名校验;各渠道可自定义消息模板。
通用 Webhook 宿主机 自定义 URL、headers 与 JSON/文本模板,可对接 Slack、Discord、ntfy、Bark、Server 酱、PushPlus 等。

页面内横幅由 browser.enabled 与 browser.toast 控制;桌面/浏览器系统通知由 browser.native 独立控制,两者互不门控。

触发条件

  • 回合结束(turn/end):按 triggers.turnEndKinds 过滤,支持 completed、blocked、aborted、error、max-tokens、interrupted;默认包含前五种,interrupted 可选。
  • 等待审批(approval/asked):工具调用需要用户确认时。
  • 模型提问(tool/call,工具名为 ask_user_question):通过提问工具等待回答时。

浏览器渠道还覆盖 plan-review 等待确认,并支持多会话通知。宿主系统与 Webhook 渠道覆盖所有会话;浏览器渠道在点击横幅或原生通知时可打开对应会话。

消息格式

Webhook 类渠道共用占位符:{{title}}、{{body}}、{{kind}}、{{sessionId}}、{{turn}}、{{toolName}}、{{reason}}、{{time}}。飞书、钉钉、企业微信有默认统一格式;通用 Webhook 模板留空时发送纯文本正文。

安装与启用

0.2.x 推荐使用 Bundle 方式:包已声明 dsh.bundle,dsh plugin 会将其加入 profile 的 bundle 列表并自动激活。

# 从 GitHub 固定版本安装(Web)
dsh plugin --profile web add "github:c-ling/dsh-plugin-notify#v1.4.0"

# 桌面端
dsh plugin --profile desktop add "github:c-ling/dsh-plugin-notify#v1.4.0"

# 没有全局 dsh 时(仅 web profile)
npx @deepseek-ai/dsh plugin --profile web add "github:c-ling/dsh-plugin-notify#v1.4.0"

桌面端也可在侧边栏 Plugins → Add plugin 中填入 github:c-ling/dsh-plugin-notify#v1.4.0 安装并启用。本地开发可用 link:/absolute/path/to/dsh-plugin-notify 代替 GitHub 地址。

安装或更新后需重启对应宿主,并对 Web 做硬刷新或重新打开桌面窗口。若已用手动 cordis.patch.yml loader 方式安装,同一 profile 不要与 bundle 方式重复启用。

卸载示例:

dsh plugin --profile web remove dsh-plugin-notify
dsh plugin --profile desktop remove dsh-plugin-notify

典型用法

验证路由是否注册

未认证访问配置接口应返回 401,表示路由已注册且受 Connection 保护:

curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:3080/api/dsh-plugin-notify/config
curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:56928/api/dsh-plugin-notify/config

旧匿名路径 /dsh-plugin-notify/config 应返回 404。

在设置里配置与测试

打开 设置 → 消息提醒,按渠道填写 Webhook 地址、签名密钥(飞书/钉钉)或通用 Webhook 模板,并选择要监听的回合结束类型。设置页支持逐渠道发送测试消息;桌面端可验证徽标与系统通知中心是否出现测试通知。

更新版本

dsh plugin --profile web add "github:c-ling/dsh-plugin-notify#v1.4.0"
dsh plugin --profile desktop add "github:c-ling/dsh-plugin-notify#v1.4.0"

更新后同样重启宿主并刷新界面。

适用场景与注意

适合经常在 DSH 里跑长回合、需要离开主窗口仍能收到「回合结束」「待审批」「待回答」提醒的开发者。若团队已有飞书/钉钉/企业微信群机器人,可把同一事件推到群里;若更在意本机提醒,可优先开宿主系统通知或桌面原生通知。

使用前请注意:

  • 插件在 当前 DSH 宿主进程权限 下运行,Webhook 与 notify-send 等会访问网络或本机 shell;安装前建议阅读源码与 MIT 许可证,勿在 Webhook URL 或自定义 header 中存放无关敏感凭据(地址与 header 以明文保存在本地 config.json)。
  • 飞书/钉钉签名密钥为只写字段,GET 脱敏,未加密存于本地配置。
  • 浏览器原生通知依赖页面/宿主保持运行;完全退出时请依赖宿主系统通知或 Webhook。宿主系统通知与桌面通知同时开启可能重复提醒。
  • macOS/Windows 系统通知授权状态无法通过 Web API 准确读取;桌面端提供「打开系统通知设置」入口。Windows 下 Electron 通知若异常,可改用宿主系统通知渠道。

结尾

dsh-plugin-notify 把 DSH 里三类常见「需要你回来」的节点统一到一套配置里,从页面横幅到群机器人可按场景组合。DeepSeek Harness 生态强调「一切皆插件」;社区目录 skillhub.cn 与 GitHub 仓库相互独立,并非 DeepSeek 官方应用商店。需要细节、Issue 或版本历史时,以 GitHub README 为准。

羽毛球分组比赛记分
小程序二维码

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

Xiaoye