dsh-notify:DSH 任务完成与异常时的浏览器与 Slack 通知

前言

在 DeepSeek Harness(DSH)里跑长任务时,常见做法是盯着 Web 界面或反复切回终端看状态。任务在远端服务器上跑、本地只偶尔打开浏览器时,更容易错过「已完成」「失败」「需要审批」这类节点。社区插件 dsh-notify 在 DSH Web 侧接入浏览器通知,并可选把同类事件推到 Slack,让你在离开页面时仍能收到提醒。

下面介绍它是什么、能通知哪些事件,以及如何安装与配置。

这是什么

dsh-notify 是面向 DeepSeek Harness 的通知插件:任务结束、失败或需要关注时,可向当前查看 DSH 的桌面浏览器弹出系统级通知;配置 Slack Incoming Webhook 后,即使没有浏览器连着 DSH,也能在 Slack 收到消息。

仓库在 GitHub 上为 iruoy/dsh-notify(package.json 中版本 0.2.6,许可证 MIT)。插件已包含编译产物,安装后无需本地构建。社区目录页可参考 SkillHub 上的条目;安装命令以仓库 README 为准。

环境与依赖

使用前请确认:

  • DSH 提供 0.2.0-rc.2 API 能力。
  • Node.js 22.19+ 或 24+。
  • 浏览器通知:桌面浏览器支持 Notifications、Web Locks、EventSource,并通过 HTTPS 或 localhost 上的 HTTP 访问 DSH。
  • Slack 通知:有效的 Slack Incoming Webhook URL。

核心功能

双通道通知

  • 浏览器:通知出现在正在查看 DSH 的那台电脑上;DSH 跑在远程服务器时,只要本机浏览器开着 DSH 页面即可收到。同一浏览器配置下多标签页对同一事件只弹一条;点击通知会聚焦 DSH 并打开对应会话。需至少保留一个 DSH 标签页在线。
  • Slack:不依赖浏览器连接,适合无人值守或手机查看。

浏览器与 Slack 的事件勾选彼此独立;测试按钮不依赖当前事件勾选。

事件类型

默认八种事件对两个通道均开启(子代理相关为单独开关,见后文):

事件 含义
completed 任务完成
error 任务失败
aborted 任务中止
blocked 任务被阻塞
max-tokens 达到 token 上限
interrupted 恢复过程中 DSH 报告回合中断
approval 需要审批
question 提出问题

Browser notifications for subagents 与 Slack notifications for subagents 默认关闭。Slack 侧即使开启子代理通知,也不会发送子任务完成;其他已选子代理事件可发送。Slack 的 Include response summaries 默认关闭,开启后最多附带 1,500 字符的助手回复(可能含代码或敏感内容);会话标题始终包含。question 类 Slack 通知只含会话标识,不含问题正文。

Slack 消息内容

除事件与会话标题外,消息可包含工作区路径、人类输入(最多 1,500 字符,不含注入指令与工具结果)、耗时、模型/提供商、reasoning effort、当轮 token 用量(按模型与 effort 分组),以及在配置了 DSH base URL 时的 Open in DSH 链接。

可选展示 Estimated API-equivalent cost(USD):对 Models.dev 公开目录中与 openai、anthropic 精确匹配的模型/提供商估算当轮 API 等价费用(codex 映射为 openai,claude / claude-code 映射为 anthropic)。无需 API key;价格为社区维护的公开费率,不代表实际账单。插件在启动时若缓存缺失或超过 24 小时会从 https://models.dev/api.json 后台拉取定价,校验结果写入与 state.json 同目录的 pricing.json。

投递历史与重试

设置页 Recent deliveries 展示最近 20 条事件及浏览器、Slack 投递状态。浏览器重连后可从最近 200 条存储事件中补发;Slack 维护最多 100 条待发送队列并可在 DSH 重启后保留。网络错误、限流等最多共重试 6 次。

状态与 webhook 等保存在:

$DSH_HOME/dsh-notify/state.json

未设置 DSH_HOME 时默认为 ~/.dsh/dsh-notify/state.json。Webhook 不会回显到浏览器,界面仅显示是否已配置。

安装与启用

在已安装 DSH 的环境中执行 README 给出的命令(需 web profile):

dsh plugin --profile web add github:iruoy/dsh-notify
dsh web

典型用法:Settings → Notify

打开 DSH Web 的 Settings → Notify。

浏览器通知

  1. 点击 Enable notifications 并在浏览器权限提示中允许。
  2. 勾选需要触发浏览器通知的事件。
  3. 点击 Save settings。
  4. 点击 Send test notification 验证。

若权限被拒,需在浏览器站点设置中允许通知;操作系统通知设置也可能静音。

Slack 通知

  1. 在 webhook 字段粘贴 Incoming Webhook URL。
  2. 将 DSH base URL 设为访问 DSH 的地址,例如 https://dsh.example.com(保存时未填则默认为当前浏览器 origin)。
  3. 勾选要发往 Slack 的事件。
  4. Save settings 后点击 Send Slack test。

更换 webhook:输入新 URL 并保存;留空则保留现有 webhook。删除:点 Remove webhook 再保存。

适用场景与注意

适合在 DSH 上跑较长智能体任务、需要「完成/失败/审批」外置提醒的开发者:本地浏览器盯盘、Slack 值班、远程服务器上跑 DSH 而人在另一台机器浏览 Web 界面等。

使用前请注意:

  • 插件随当前 dsh 进程权限运行,会读写本机 state.json 并可向 Slack 出站请求;安装前请自行查看源码与 MIT 许可证,确认 webhook 与摘要选项是否符合团队安全策略。
  • 浏览器通知表示浏览器已接受投递,操作系统仍可能抑制;休眠或挂起标签会延迟送达。
  • Slack 费用估算仅为公开目录上的参考,不能替代账单核对。

结尾

dsh-notify 把 DSH 任务生命周期中的关键节点接到浏览器与 Slack,减少长时间等待时的无效轮询。更多信息见社区目录 https://www.skillhub.cn/plugins/avontura/dsh-notify 与 GitHub 仓库 https://github.com/iruoy/dsh-notify。

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

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

Xiaoye