前言¶
在 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 为准。