前言¶
在 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。
浏览器通知¶
- 点击 Enable notifications 并在浏览器权限提示中允许。
- 勾选需要触发浏览器通知的事件。
- 点击 Save settings。
- 点击 Send test notification 验证。
若权限被拒,需在浏览器站点设置中允许通知;操作系统通知设置也可能静音。
Slack 通知¶
- 在 webhook 字段粘贴 Incoming Webhook URL。
- 将 DSH base URL 设为访问 DSH 的地址,例如
https://dsh.example.com(保存时未填则默认为当前浏览器 origin)。 - 勾选要发往 Slack 的事件。
- 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。