dsh-notification:DSH 回合完成时的桌面通知

前言

在 DeepSeek Harness(DSH)里跑长任务时,浏览器标签页往往会被切走——查文档、回消息、开别的会话。回合结束时如果没有明显反馈,只能反复切回 DSH 看状态,既打断手头的事,也容易漏掉报错或中断。

系统级桌面通知是常见做法,但 DSH 本身不内置这套逻辑。下面介绍社区插件 dsh-notification(维护者 omdsh-dev):在 Web GUI 里监听会话完成,通过浏览器 Notification API 弹出桌面通知,并按回合结果、关键词规则精细控制是否提醒。

这是什么

dsh-notification 是 DSH 的客户端插件,分类为「客户端」,当前版本 v0.1.3,许可证 MIT

插件在会话某一回合结束时,由浏览器弹出系统通知,标题为 DSH finished,正文展示该回合的摘要(例如 deploy done)。你无需改 Harness 核心:Host 侧贡献一份会话投影(每个会话最近一次已完成回合的有界摘要),客户端监听会话列表的完成提醒,再结合本地持久化的偏好决定是否弹窗。

数据流大致如下:

host:  notification projection (last turn's reason/text/tools) --session/projection--> browser
client: session list completion reminder (live, dedup) + persisted settings
        -> permission + current-session visibility gate
        -> new Notification("DSH finished", { body: "deploy done" })

核心功能

按回合结果开关

Host 投影会带上回合结束原因(reason)。可在设置里分别控制是否在以下情况通知:

回合结果 默认
completed(正常完成)
error(出错)
aborted / blocked / token limit

关键词包含 / 排除规则

规则针对三类文本匹配:会话标题、该回合回复正文、该回合调用的工具名。

  • 包含规则(include):配置了 include 时,至少一条须匹配才会通知。
  • 排除规则(exclude):任一条匹配则抑制通知。
  • 支持字面量或正则,可选大小写敏感标志。

可见性与去重

  • Only notify when the task is out of view(默认开):当前正在查看的会话完成时不弹通知;页面隐藏、或你在看别的会话 / 工作区时仍会通知。关掉后,即使盯着该会话也会弹。
  • 同一会话的新通知会替换旧通知。
  • Require manual dismiss(默认关):开启后通知需手动关闭才会消失。

对模型与日志无侵入

方面 影响
Token 消耗 无——纯 UI,不进入请求
工具调用 无——模型不获得新工具
会话日志 不变——投影只读现有日志,不写事件
Prompt 不变——不注册 system-prompt 段落

偏好保存在浏览器 localStorage。设置页还提供授权浏览器通知权限、发送测试通知。

安装与启用

默认 dsh web profile 已包含所需客户端组合(会话列表、设置壳、locale)。安装后需重启 Web 服务,Host 与客户端 bundle 才会加载插件。

dsh plugin --profile web add https://github.com/omdsh-dev/dsh-notification/archive/refs/tags/v0.1.3.tar.gz

设置入口:Settings > Notifications

Host 配置

可在 cordis.yml 的插件行调整 Host 侧参数:

- id: dsh-notification
  name: dsh-notification
  config:
    maxBodyChars: 400      # projection body budget; longer replies are ellipsized host-side

maxBodyChars 限制投影正文字符数,超长回复在 Host 侧截断并加省略号;规则匹配在客户端对投影内容执行,正文不会超过该预算。

典型用法

  1. 按上文命令安装并重启 dsh web
  2. 打开 Settings > Notifications,允许浏览器通知权限,点测试通知确认系统能收到。
  3. 保持默认:正常完成与出错时通知;仅当该会话不在当前视图时弹出。
  4. 若只想在部署、CI 等关键词出现时才提醒,添加 include 规则(字面量或正则均可)。
  5. 对嘈杂会话加 exclude 规则,例如排除标题含 debug 的会话。

完成后即可切到其他标签;回合结束且规则命中时,桌面会收到 DSH finished 及正文摘要。点击通知仅聚焦浏览器窗口,不会深链到具体回合。

适用场景与注意

适合谁

  • 长时间跑 Agent 任务、经常多标签或多会话并行的人。
  • 需要按「完成 / 报错 / 中断」区分是否打扰的场景。
  • 希望通过关键词过滤,只对特定任务类型弹通知的场景。

权限与运行边界

  • 插件随当前 DSH 进程与 Web 客户端运行;安装前请自行查看 源码 与 MIT 许可证。
  • Host 仅对会话日志做纯投影,经 projection seam 送到浏览器;插件不写日志、不注册面向模型的工具。
  • 客户端仅在用户授予 Notification 权限后弹窗;站点权限被拒绝时,页面内无法绕过。
  • 规则匹配在客户端对投影内容执行。

已知限制

  • 页面须保持打开(可隐藏标签,关闭标签后不再通知);断线期间完成的回合,重连后不会补发。
  • 每个已完成回合触发一次(running→idle 边沿);关键词只匹配会话标题与最后一回合的回复与工具名,更早回合不参与。
  • 通知正文为纯文本片段,无跳转到具体回合的深链。

链接

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

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

小夜