前言¶
用 DSH(DeepSeek Harness)跑任务,常见的工作方式是把任务交给智能体后切去做别的事。麻烦在于你不知道任务什么时候结束:有时早就跑完在等你反馈,有时中途被阻塞需要审批,一直盯着页面又浪费注意力。
dsh-complete-notify 解决的就是这件事:任务结束时播放提示音并弹出通知,页面在前台用 toast,页面在后台改用系统通知。下面介绍它的定位、功能、安装与配置。
这是什么¶
dsh-complete-notify 是 kaixinbaba 维护的 DSH 插件,MIT 许可。一句话定位:任务完成时播放提示音并弹出小通知(页面内 toast + 后台时系统通知)。
它是纯浏览器方案:音效用 Web Audio API 合成,弹窗是页面内 toast,页面在后台时走 Web Notification API 发系统通知。不调用 osascript、notify-send、PowerShell 等系统命令,没有音频文件、零系统依赖,Windows / macOS / Linux 通用。通知权限是浏览器站点级授权,授权一次即可。
当前版本 0.6.2,要求 node >= 22.19.0、dsh >= 0.1.0-rc.6,平台为 web。
核心功能¶
提示音¶
任务完成时播放提示音,音效由浏览器 Web Audio API 合成。每个结果状态可以独立选择音效,也可以单独设为静音。
页面内 toast¶
页面在前台时,任务完成会在右上角弹出小卡片,按结果状态着色:绿为任务完成、黄为等待你的反馈、红为任务中断或失败、橙为达到 token 上限。卡片附一句话小结(recap,不超过 50 字)和运行统计(时长 / tokens / 步骤),5 秒自动消失,点击跳转对应会话。多会话同时完成时,toast 栈最多 3 条,先进先出。
后台系统通知¶
页面切到后台或其他标签页时完成任务,改用系统通知,附带小结与统计,点击通知会聚焦窗口并打开对应会话,同时标签页标题闪烁。系统通知权限被拒时,降级为 30 秒的长时 toast 加标题闪烁。
小结与运行统计¶
小结先显示降级版本(最终回答前 50 字的清洗版),随后由 Host 端异步调用 LLM 生成一句话小结并自动替换,每次运行结束调用一次。
注意两者口径不同:运行统计取「最后一轮」(turn 号最大的已结束轮次),小结覆盖整轮运行,多轮任务取最终回答。
结果状态判定¶
结果状态以 Host 端 turn/end 的 reason.kind 为权威来源,客户端兜底推断(turn-error / turn-max-tokens 节点、被打断的 assistant 消息):
| reason.kind | 颜色 | 含义 |
|---|---|---|
| completed | 绿 | 任务完成 |
| blocked | 黄 | 等待你的反馈 |
| aborted | 红 | 任务已中断 |
| error | 红 | 任务失败 |
| max-tokens | 橙 | 达到 token 上限 |
完成检测与官方运行指示灯同源:会话列表快照的 running / completed 状态。
安装与启用¶
从 npm 安装(推荐):
dsh plugin --profile web add dsh-complete-notify
或锁定 GitHub 版本:
dsh plugin --profile web add "github:kaixinbaba/dsh-complete-notify"
重启 dsh web 生效(launchd 托管时):
launchctl kickstart -k gui/$(id -u)/com.dsh.dsh-web
本地开发可以用源码安装,link: 指向本地目录:
dsh plugin --profile web add link:/path/to/dsh-complete-notify
开发调试用 node –test 运行单测,npm run check 做语法检查:
node --test
npm run check
卸载:
dsh plugin --profile web remove dsh-complete-notify
配置¶
全部设置在「设置 → 任务完成通知」面板里,保存在浏览器 localStorage(键名 dsh.completeNotify.v1)。可配置项包括:
- 启用提醒 / 提示音 / 系统通知(页面在后台时)开关,以及音量滑块。
- 分别为绿色完成、黄色阻塞、红色中断选择不同音效。
- 音效下拉框按当前浏览器识别的操作系统分组:macOS / Windows / Linux 推荐预设 + 通用预设 + 静音。预设名称是对应系统提示音的风格,实际仍由 Web Audio 合成,不读取系统音频文件。
- 「测试音效」「测试通知」按钮。首次点「测试通知」会请求浏览器通知权限,需要点允许。
典型用法¶
- 页面在前台,任务完成:听到提示音,右上角弹出状态着色的小卡片,含小结、运行统计与「点击打开会话」提示,点击卡片跳转对应会话。
- 页面切到后台或其他标签页时完成任务:收到系统通知(带小结与统计)+ 提示音 + 标签页标题闪烁。
- 首次使用:在「设置 → 任务完成通知」里点「测试通知」,允许浏览器的通知权限请求。
提醒按会话去重:一个会话一次完成只提醒一次,重新运行后再完成会再次提醒。子代理(subagent)会话不提醒。
适用场景与注意事项¶
适合多会话并行跑任务、长时间后台运行、需要审批或反馈的阻塞场景——这些情况下人不在页面前,也能第一时间知道该回来了。
几个限制需要知道:
- 标签页必须开着,这是浏览器限制。关闭标签页后系统通知也收不到;如需关页推送,需要接 Push API(需要推送服务器)。
- 浏览器自动播放策略:首次用户交互(点击/按键)后音效才可用。在 DSH 里发第一条消息时即自然解锁,一般无感。
- toast 为深色样式,暂未跟随明暗主题切换。
最后提醒一点:插件以当前 dsh 进程的权限运行,安装前建议自行查看源码与许可证。这个仓库是 MIT 许可,源码在 GitHub 上可以完整审阅。
结尾¶
dsh-complete-notify 用纯浏览器方案补上了 DSH 任务完成提醒这一环:不装系统依赖、不用系统通知命令,跨 Windows / macOS / Linux 可用,状态着色和一句话小结让你不用切回页面就能判断要不要处理。
- GitHub:https://github.com/kaixinbaba/dsh-complete-notify
- 插件目录页:https://www.skillhub.cn/plugins/kaixinbaba/dsh-complete-notify
顺带说明:skillhub.cn 是社区维护的插件目录,独立站点,与 DeepSeek / 幻方无官方从属关系。