前言¶
在 DeepSeek Harness(dsh)里跑一轮较长的任务时,开发者常会切到别的窗口、标签页或另一个 helper 实例。Web UI 侧边栏在你盯着看时,会用绿色「完成」点提示状态;一旦视线移开,回合结束或 agent 停下来等你审批、回答问题,就容易被漏掉。
下面介绍社区插件 dsh-helper-plugin-notify-away(维护者 x102201):把「会话已空闲」或「在等你操作」转成操作系统级 toast;在 dsh-helper 里通过宿主 chrome.webview.postMessage 弹出,在系统浏览器里走 Notification API。默认在你正在看这场会话时也会通知;打开卡片上的「Only when away / 离开才通知」后,仅在你盯看该会话的本实例时保持安静。
这是什么¶
dsh-helper-plugin-notify-away 是面向 DeepSeek Harness Web 配置文件的 客户端(system-notification)插件,分类为客户端组件。它不写入自有 session-event 词汇,只读取与侧边栏相同的 sessions 列表快照和 pendingInteractions;不负责代你点审批或答 question。
仓库:github.com/x102201/dsh-helper-plugin-notify-away
目录页:skillhub.cn 插件页
许可证:MIT(README 徽章);包版本 0.1.0,README 标注兼容 dsh 0.1.5-rc.2。
核心功能¶
何时弹出通知¶
| 触发 | 行为 |
|---|---|
| 完成边沿(completion) | 列表里某会话的 running 从 true 变为 idle 时触发。首次观测只记录状态,加载时已 idle 的会话不会补 toast。 |
| 等待边沿(wait) | 该会话的 uiSession.pendingInteractions newly 出现待你处理的请求时触发。等待期间 running 仍为 true,完成监视器不会误报。已知类型:approval、question、plan review;其余类型走 otherWait,可在配置里单独关闭。 |
「离开才通知」门控(away gate)¶
- 默认关闭(
onlyWhenAway: false):无论焦点在哪,满足上述边沿即 toast。 - 打开后:仅当本实例里你正在看该会话(面板在屏、helper 在前、
list.current匹配)时保持静音;隐藏标签、另一实例、失焦窗口、后台会话结束或阻塞仍会通知。
正在本实例看该会话 → 静音
其他实例 / 其他窗口 / 其他标签 → 系统通知(完成或等你)
根会话与子 agent¶
- 完成边沿默认忽略子 agent 行(
origin: 'subagent'或有parentId),避免并行子任务刷屏;配置includeSubagents: true可一并通知。 - 等待边沿不受该开关约束:子 agent 阻塞在你这边时仍会 toast。
其它行为¶
- 去重:每条 toast 标签为
notify-away:<sessionId>,重复会替换而非堆叠。 - 点击:聚焦窗口并
ctx.sessions.open(sessionId);helper 侧通过dsh-helper-notify-click事件回跳。 - 权限:dsh-helper 内嵌面板无需额外权限;系统浏览器首次点击或按键时请求通知权限(Safari 仅手势触发时可授予),macOS 还需在系统设置里允许对应浏览器通知。
安装与启用¶
前提:dsh plugin 会把参数转给 pnpm,需保证 pnpm 在 PATH 上(例如 corepack enable pnpm),否则 CLI 会报 pnpm not found on PATH 并以 127 退出。
包为纯 ESM + ModuleLoader 客户端工厂,无构建步骤、无运行时依赖,安装时无需 pnpm allowlist 构建脚本。
从 GitHub 安装¶
dsh plugin --profile web add github:x102201/dsh-helper-plugin-notify-away
需要可复现版本时可固定修订号:
dsh plugin --profile web add github:x102201/dsh-helper-plugin-notify-away#<tag-or-commit>
从本地目录链接安装¶
路径须为绝对路径,或相对于执行命令时的工作目录:
dsh plugin --profile web add link:/absolute/path/to/dsh-helper-plugin-notify-away
link: 会符号链接到 checkout,改 index.js / client.js / lib/*.js 后重启 dsh web 即可生效,无需重装。
挂载与验证¶
安装后重启 Web 配置:
dsh web
检查 composed 配置里是否出现 notify-away 宿主行:
dsh --profile web --dump-config | grep -A2 notify-away
在系统浏览器中首次使用时按页面提示授予通知权限;dsh-helper 嵌入面板不需要这一步。
卸载¶
dsh plugin --profile web remove dsh-helper-plugin-notify-away
典型用法¶
- 按上文命令为
--profile web安装插件并执行dsh web。 - 在 Web UI 发起一条会跑较久的任务,切到其它应用或标签。
- 根会话变为 idle,或出现 approval / question / plan review 等等你操作时,应出现以会话名称为标题的系统通知;点击应聚焦 Web UI 并打开该会话。
- 若希望「盯着这场会话时不要弹窗」,打开侧边栏 Plugins → dsh-helper-plugin-notify-away 卡片上的 Only when away(离开才通知);在本实例前台看该会话时不应再 toast,切走或后台完成仍应通知。
配置项 intended 修改方式:同一卡片上的七个开关,点击即写入,无 Save 按钮;写入 profile 的 cordis.patch.yml 用户层,立即生效,无需重启。宿主加载时也会校验相同键(未知键或类型错误会导致启动失败)。
默认配置示例(均可选,空映射即用默认):
- id: notify-away
config:
onlyWhenAway: false
includeSubagents: false
body: Task finished.
completion: true
approval: true
question: true
planReview: true
otherWait: true
| 键 | 类型 | 默认 | 含义 |
|---|---|---|---|
onlyWhenAway |
boolean | false |
为 true 时,仅在本实例盯看该会话时静音 |
includeSubagents |
boolean | false |
完成通知是否包含子 agent |
body |
string | Task finished. |
通知正文(完成类;等待类有各自文案逻辑) |
completion |
boolean | true |
会话 idle 完成是否通知 |
approval |
boolean | true |
审批等待是否通知 |
question |
boolean | true |
question 等待是否通知 |
planReview |
boolean | true |
plan review 等待是否通知 |
otherWait |
boolean | true |
其它等待类型是否通知 |
不安装完整包、仅试宿主行时,checkout 内提供 examples/standalone.patch.yml;浏览器侧仍须能通过 link: 解析包名 dsh-helper-plugin-notify-away(依赖 package.json 的 dsh.client 声明)。
适用场景与注意¶
适合:长时间用 dsh web 或 dsh-helper 跑 agent,经常多窗口协作、希望「人不在会话前时才用系统托盘/通知中心提醒」的开发者。
注意:
- 插件随当前 DSH Web 进程与用户配置加载运行;安装前请自行查看仓库源码与 MIT 许可证,确认符合你的环境策略。
- 社区目录 skillhub.cn 为独立站点,与 DeepSeek / 幻方无官方从属关系;DSH 生态强调「一切皆插件」,本插件是其中一条客户端通知链路。
- Node 引擎要求
>=20(见package.json)。
结尾¶
dsh-helper-plugin-notify-away 把 Harness 里「回合结束」和「在等你」映射成可点击的系统 toast,并用「离开才通知」对齐「正在看就不吵、切走才提醒」的使用习惯。需要细节时以仓库 README(含 README.zh.md)为准。
- 目录页:https://www.skillhub.cn/plugins/x102201/dsh-helper-plugin-notify-away
- GitHub:https://github.com/x102201/dsh-helper-plugin-notify-away