前言¶
在 DeepSeek Harness(DSH)里跑长任务时,常见做法是盯着界面等一轮结束,或在工具需要审批、代理向你提问时再回来操作。人一旦离开电脑或切到别的窗口,就容易错过「回合结束」「等待批准」「等待回答」这几类节点。邮件、自建脚本或第三方监控可以补位,但都要自己接事件、管密钥、还要和 DSH 的会话状态对齐。
下面介绍社区插件 dsh-notify(维护者 miiy,分类:客户端)。它在 DSH Host 侧监听会话事件,在你配置的渠道上发出通知:本机通知中心、浏览器标签页、ntfy 推送到手机、飞书自定义机器人,可任意组合。密钥走 Host 凭证接口,不写入配置文件。
这是什么¶
dsh-notify 的定位是:为 DeepSeek Harness 提供跨设备通知(Cross-device notifications for DeepSeek Harness)。长任务运行期间不必「人在场」;当一轮结束、或进入等待你的批准/回答时,在你启用的渠道上推送消息。
插件当前版本为 0.2.1(见仓库 package.json),许可证 MIT。运行要求:node >= 22,dsh >= 0.2.1-0。
核心功能¶
通知渠道¶
| 渠道 | 投递方式 | 凭证 |
|---|---|---|
local |
macOS 通知中心、Windows Toast、Linux notify-send |
无 |
browser |
已打开的 GUI 标签页触发系统通知 | 浏览器通知权限 |
ntfy |
ntfy 发布 API | topic,可选 token |
feishu |
飞书/Lark 自定义机器人 Webhook | Webhook 前缀 + token,可选签名校验 secret |
触发条件¶
在 Settings → Notifications 中可分别配置:
- Turn completes:回合在
completed/error/max-tokens时通知;用户主动停止(aborted)不会提供通知选项。 - Waiting for approval:工具调用需要你决策时通知。
- Waiting for an answer:代理向你提问时通知。
离开才发、在场不打扰¶
每条通知默认会等待一段「无输入窗口」(默认 60 秒,可在 Wait before sending 调整;设为 0 则立即发送)。若在该窗口内你已回复、批准、回答,或你正在阅读该会话的回复(回合结束后在该会话内滚动、点击或按键会被视为已读),则消息不会发出。设计意图是:人还在电脑前处理对话时,不重复用外部渠道轰炸。
配置与密钥¶
- 图形配置入口:Settings → Notifications(选渠道、填凭证、Send test 测通)。
- 非敏感配置落在
~/.dsh/dsh-notify/config.json(权限0600)。 - 敏感信息经 Host credential seam 存储;设置页只显示「是否已设置」,不展示明文。
消息模板支持占位符(未知占位符会原样保留):
- 回合结束:
{title}{outcome}{project}{duration}{preview}{error} - 等待批准:
{title}{project}{tool}{reason} - 等待回答:
{title}{project}{question}{count}
模板第一行为标题,其余为正文;Restore 可恢复默认文案。
安装与启用¶
官方提供三种方式,安装命令以 README 为准。
1. 通过 Host 的 installBundle(安装并启用)¶
在对话里让代理执行,或在 Settings → Plugins 的安装框粘贴同一 spec:
install the plugin `github:miiy/dsh-notify`
或安装 spec:
github:miiy/dsh-notify
Host 的 installBundle 会安装包、写入 dsh.profile.bundles 并热应用,一步完成。
2. CLI(仅安装,需手动开启)¶
dsh plugin --profile <profile> add github:miiy/dsh-notify
dsh plugin 在 profile 目录内转发给 pnpm,不会自动 compose。插件会出现在 Settings → Plugins 中且默认 关闭;打开开关后才会加入 dsh.profile.bundles。若开关未即时生效,可重启 dsh web。纯 JavaScript bundle 无 build 脚本,一般无需 allowBuilds 审批。
接受的 spec 形式还包括:git+https://…、托管仓库 URL、本地绝对路径、npm 包名等。
3. 本地 checkout 开发¶
见仓库 MAINTENANCE.md 中 Run from a checkout。
典型用法¶
- 按上文任选方式安装并启用插件。
- 打开 Settings → Notifications,勾选需要的渠道并完成凭证(Browser 需点 Allow notifications)。
- 配置触发项与 Wait before sending,按需编辑消息模板。
- 对每个已保存配置的渠道点 Send test,确认能收到真实测试消息。
- 启动一个会跑较久或需要中途审批的任务,离开当前会话;在空闲窗口满足条件后,应能在所选渠道收到对应事件通知。
仓库内开发者自检(与日常使用无关,摘自 README):
node --check index.js && node --check client.js
node tests/harness.mjs # host half
node tests/client.mjs # settings page
适用场景与注意¶
适合谁:经常在 DSH 里跑长回合、需要离开工位又不愿漏掉「结束 / 待批 / 待答」的开发者;希望用手机 ntfy 或飞书机器人做轻量提醒的用户。
权限与安全:插件以当前 dsh 进程 的权限运行,能访问该进程可访问的资源。安装前请阅读 GitHub 源码 与 MIT 许可证,自行评估是否满足环境要求。社区目录 skillhub.cn 为独立站点,与 DeepSeek / 幻方无官方从属关系。
架构概览(便于排查问题):Host 半在 index.js 处理会话事件与通知出站;客户端半在 client.js 提供设置页、浏览器渠道与已读回执;channels.js 实现 local / ntfy / feishu 发送;配置与校验在 config.js。
结尾¶
dsh-notify 把 DSH 会话里的关键节点接到本机、浏览器、ntfy 与飞书,并用空闲窗口与已读回执减少误扰。需要进一步了解参数与截图时,可看仓库 README 与设置页说明。