dsh-notification-badge:在 Agent 回合结束、出错或待审批时提醒你

前言

在 DeepSeek Harness(DSH)里跑 Agent,一轮对话往往要几分钟。你切到别的窗口干活,回来时才发现任务早就跑完了,或者更糟——界面一直停在工具审批,你根本不知道它在等你点确认。

盯着标签页不是办法。社区插件 dsh-notification-badge 订阅 Harness 自身的生命周期事件,在需要你看一眼的时候通过桌面通知、浏览器通知、Webhook 或应用图标角标提醒你,而不必一直守着 Web UI。

这是什么

dsh-notification-badge 由维护者 suleymanyaryev(Suleyman Yaryev)发布,当前包版本为 0.1.0,MIT 许可证。它面向在 macOS、Linux、Windows 上使用 DSH 的开发者:当 Agent 完成一轮、出错、等待审批,或浏览器侧出现 pendingInteraction 时发出通知;窗口未聚焦时,还可以在桌面壳的应用图标上显示待处理数量。

插件监听的是 Harness 事件,而不是轮询页面 DOM。子 Agent 会话不会触发通知或角标;过短的回合(低于 minTurnDurationMs)默认也会被忽略。

核心功能

下面按「触发条件」和「输出通道」说明插件行为,均来自官方 README。

触发条件

事件 触发方式 默认
Agent 完成 agent/status 从 running 变为 idle,且本轮时长 ≥ minTurnDurationMs 开启
Agent 出错 agent/error 开启
需要审批 approval/request 瀑布流(仅观察,始终 next() 委托) 开启
等待你操作 会话出现 pendingInteraction(浏览器侧) 开启
应用图标角标 上述任一情况,且窗口未聚焦(桌面壳) 开启

输出通道

每种事件可以走以下通道之一或组合:

  • 桌面通知(desktop):在运行 dsh 服务端的本机弹出。macOS 用 osascript,Linux 用 notify-send,Windows 用 PowerShell toast;macOS 可选系统提示音。
  • 浏览器通知(browser):Web UI 使用标准 Notification API。首次点击或按键时会请求权限;默认仅在窗口隐藏或未聚焦时弹出(可通过 browserOnlyWhenHidden: false 修改)。
  • Webhook(webhookUrl):向 URL 发送 JSON POST,载荷含 Slack 兼容的 text 字段,可直接对接 Slack Incoming Webhook。Discord 等不读 text 的服务需自建中继或 Slack 兼容桥接。
  • 应用图标角标(badge):统计需要你注意的会话数,显示在 macOS Dock、Windows 任务栏按钮或 Linux 启动器图标上;窗口重新获得焦点后默认清零,表示「还没看过」,不是未读消息数。

各通道适用的运行位置:

通道 运行位置 更适合
desktop 运行 dsh 服务端的机器 本机 dsh web
browser 打开 Web UI 的机器 远程服务端或任意 Web 使用
badge 打开 Web UI 的机器(仅桌面壳) 一眼看到「有几件事在等你」
webhookUrl URL 指向处 手机、Slack、无人值守运行

在 DSH 桌面应用中,服务端与页面同机,默认 desktop 与 browser 都会开,一次事件可能弹出两条通知。若只想保留页面侧通知和角标,可在配置里关闭 desktop(见下文典型用法)。

注意: 不要与 dsh-dock-badge 同时启用。两者都驱动 Badging API,加载页面时会互相覆盖角标计数。本插件已覆盖前者能力,并会从 uiSession.sessionStatus 读取待交互状态,只保留其一即可。

安装与启用

包以 bundle 形式安装:dsh plugin add 会写入依赖并选中 bundle 行。插件为纯 ESM JavaScript,无需构建步骤,Web UI 下次加载即可拉取客户端 bundle。

Web 或 headless 配置档:

dsh plugin --profile web add dsh-notification-badge

desktop 配置档由应用管理:在 DeepSeek Harness 应用内通过 Settings → Plugins 安装。也可在应用完全退出且 desktop 配置档已初始化后执行 dsh plugin --profile desktop add dsh-notification-badge(未初始化的 desktop 配置档会被 dsh 拒绝修改)。

手动方式:在 ~/.dsh/profiles/<profile>/package.json 增加依赖,并在 dsh.profile.bundles 中加入 dsh-notification-badge。

插件在 package.json 中声明 engines.dsh 为 ^0.2.1-rc.2,安装前请确认本机 DSH 版本兼容。

典型用法

覆盖配置

在对应 profile 的 cordis.patch.yml 中覆盖 bundle 行(默认 id 为 notify-badge):

- id: notify-badge
  name: dsh-notification-badge
  config:
    minTurnDurationMs: 10000        # 仅对 ≥10s 的回合通知
    webhookUrl: 'https://hooks.slack.com/services/XXX/YYY/ZZZ'
    notifyOnApproval: true
    desktop: true
    browser: true
    badge: true
    badgeMode: count                # count | dot
    title: 'DSH'

常用字段默认值与含义(节选):

字段 类型 默认 含义
notifyOnIdle boolean true 回合结束时通知
notifyOnError boolean true agent/error 时通知
notifyOnApproval boolean true 工具调用待审批时通知
minTurnDurationMs number 5000 短于该毫秒的回合不通知
desktop / browser / badge boolean true 各通道开关
browserOnlyWhenHidden boolean true 聚焦窗口时不弹浏览器通知
webhookUrl string '' 可选 POST 地址
title string 'DeepSeek Harness' 通知标题
sound string 'Glass' macOS 系统音名或音频路径;'' 静音
badgeMode count | dot count 数字或圆点
badgeClearOnFocus boolean true 聚焦后清除角标

配置项均为 .volatile(),经 dsh-settings 热更新,无需重载页面。webhookUrl 标记为 role('secret'),下发到浏览器前会被剥离。

Webhook 载荷示例:

{
  "text": "Agent finished — done in 2m 14s",
  "summary": "Agent finished",
  "body": "done in 2m 14s",
  "level": "info",
  "ts": "2026-08-21T12:34:56.000Z"
}

桌面应用里避免双通知

本机桌面壳中,可只保留页面通知与角标:

# ~/.dsh/profiles/desktop/cordis.patch.yml
- id: notify-badge
  name: dsh-notification-badge
  config:
    desktop: false     # 页面已通知,并负责应用图标角标

远程或 headless 上跑 dsh web、页面在别处时,保持 desktop: true 更合适。

适用场景与注意

适合长时间让 Agent 自主跑任务、需要离开界面又不愿漏掉「回合结束」「报错」或「审批」的 DSH 用户;配合 Webhook 可把提醒推到 Slack 或手机侧中继。

DSH 生态强调「一切皆插件」;社区目录站点与 DeepSeek / 幻方无官方从属关系,安装前请在 GitHub 阅读源码与许可证,并理解插件以当前 dsh 进程权限运行(桌面通知、Webhook 出站等均受此约束)。

结尾

dsh-notification-badge 把 Harness 生命周期事件接到桌面、浏览器、Webhook 与应用角标四条通道上,减少「Agent 早就停了你还不知道」的情况。更多说明见社区目录页与仓库 README。

  • 目录页:https://www.skillhub.cn/plugins/suleymanyaryev/dsh-notification-badge
  • GitHub:https://github.com/suleymanyaryev/dsh-notification-badge
羽毛球分组比赛记分
小程序二维码

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

Xiaoye