前言¶
在 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 使用标准NotificationAPI。首次点击或按键时会请求权限;默认仅在窗口隐藏或未聚焦时弹出(可通过browserOnlyWhenHidden: false修改)。 - Webhook(
webhookUrl):向 URL 发送 JSONPOST,载荷含 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