前言¶
DeepSeek Harness (DSH) 的 Web UI 在运行智能体任务时,会话状态的变化(等待批准、回答问题、计划审查等)需要用户主动检查。当浏览器窗口最小化或切换到其他标签页时,这些状态更新很容易被错过。纯客户端插件 dsh-system-notifications 通过浏览器的桌面通知 API,在状态变化时主动提醒用户,并支持点击通知直接跳转到对应的会话页面。
插件定位¶
这是一个纯客户端插件,安装在 DeepSeek Harness 的 Web UI 中。它不依赖后端,通过读取会话状态和浏览器权限来工作。维护者 purejiang。
核心功能¶
- 状态触发:当会话进入等待批准、回答问题、计划审查等
pendingInteraction状态,或running状态从true变为false时触发通知。 - 通知内容:标题为
<项目> · <事件>,例如harness-plugins · Approval required;正文显示会话标题和原因,如"Refactor the toolbar" requests to run bash and is waiting for your approval.。完成通知包含插件观测到的运行耗时。 - 点击跳转:点击通知会激活浏览器窗口并打开对应的会话页面。
- 图标:使用嵌入的 128×128 DeepSeek 章鱼标记 PNG 数据 URL,不依赖外部请求。
- 免打扰:当会话的对话面板可见且浏览器窗口有焦点时,不发送通知。
- 去噪:子代理会话被跳过;同一会话的重复通知会合并(使用
tag);最多保留 6 个未读通知。
安装与启用¶
安装¶
插件未发布到 npm,直接从 GitHub 安装:
dsh plugin --profile web add github:purejiang/dsh-system-notifications
或在 Web UI 中:Plugins → Install,粘贴 github:purejiang/dsh-system-notifications。安装后刷新页面即可生效。
启用与权限¶
- 打开 Settings → General → System Notifications 并开启开关。
- 首次点击页面或按下按键时,插件会请求浏览器通知权限;也可以点击该设置行的 Authorize 按钮。
- 若已拒绝权限,需在
chrome://settings/content/notifications允许http://127.0.0.1:3080(或地址栏的站点图标),然后刷新重试。
测试通知¶
设置行标题为 “System Notifications”(存储在 sessionStorage 中)。双击该标题可触发测试通知。也可以在 URL 后加 ?dshNotificationTest=1 打开页面进行测试。
工作原理¶
插件通过客户端扩展点实现功能,无需修改 DSH 主程序:
| 需求 | 扩展点 |
|---|---|
| 检测等待/完成 | shell.overlay 组件读取 props.useSessionStatus() |
| 会话标题 | props.useSessions() → SessionListState.byId[id].displayTitle |
| 项目名称 | props.useWorkspaces()(工作区标题/会话归属),失败时回退到 cwd 目录名 |
| 是否正在查看 | props.usePanelInfo().activePanelId、document.hasFocus()、visibilityState |
| 发起通知 | 浏览器 Notification API |
| 点击打开会话 | ctx.get('uiWorkspace').openSession(sessionId) |
| 设置控件 | settings.general.item |
running 状态的转换通过 React 快照和订阅 uiSession.sessionStatus 两种方式观测,以避免后台标签页因渲染节流导致短时运行被合并为无可见变化。
限制¶
- 页面必须保持打开:关闭标签页后无法发送通知。
- 通知布局由浏览器和操作系统控制,无法自定义字体、颜色或额外按钮。
- 页面刷新后,旧通知点击可能无法打开会话(页面上下文已丢失)。
- 通知标题会被操作系统截断,项目名放在首位以保持可见。
- 若浏览器权限被拒绝,插件不会发送任何通知,设置行会说明原因。
适用场景与注意¶
适合需要长时间运行智能体任务、频繁切换窗口或使用多个标签页的开发者。插件依赖当前 DSH 进程的浏览器权限,安装前应检查源码与许可证(MIT)。
总结¶
dsh-system-notifications 将 DSH 会话状态变化转化为桌面通知,在无需离开当前工作流的情况下及时提醒用户。通过点击即可跳转到对应会话,减少了对任务进度的遗漏。安装与启用流程简单,无需构建,适合在本地开发环境中使用。
- 目录页:https://www.skillhub.cn/plugins/purejiang/dsh-system-notifications
- GitHub:https://github.com/purejiang/dsh-system-notifications