前言¶
在 DeepSeek Harness(DSH)里跑长任务时,人离开电脑很常见:任务跑完、中途报错、或卡在「等你点同意」——这些时刻若没有人盯着,往往要事后翻日志才知道。社区里也有用 dsh-remote 等方案远程盯会话的做法;dsh-watchman(守夜人告警)则把「待审批、报错、任务结束、订阅断线、登录态失效」等事件推到手机(Server酱 / Bark / 企业微信群机器人),并在 DSH 设置页里可视化配置,不必手改配置文件。
下面介绍这个插件的定位、能力与安装用法。事实以 GitHub 仓库 README 为准;DSH 插件生态由社区目录等站点聚合,与 DeepSeek / 幻方无官方从属关系。
这是什么¶
dsh-watchman 由维护者 Beeasy-L 发布,在 SkillHub 等目录中归类为 联网工具。当前 package.json 版本为 0.1.0,许可证 MIT,Node 要求 >=20。
一句话:把 DSH 里需要你拍板、任务报错、任务结束、订阅断线、harness cookie 失效等时刻,通过 Server酱(微信)、Bark(iPhone)或企业微信群机器人通知到你;凭据只存本机,界面与日志里以打码形式展示。
核心功能¶
推送通道¶
三种通道任选其一,完整 URL 或只填 key 均可识别:
| 通道 | 填写内容 | 获取方式 |
|---|---|---|
serverchan |
SENDKEY(SCT 开头) |
sct.ftqq.com 微信扫码;免费额度有限 |
bark |
https://api.day.app/<key> 或 key |
iPhone 安装 Bark App |
wecom |
群机器人 webhook 或 key | 企业微信内部群 → 群机器人(需管理员开启权限) |
设置页与宿主路由¶
安装并重启 DSH 后,在 设置 → 守夜人告警 可查看状态、选通道、配置推哪些事件、发送测试、查看日志。
宿主侧提供四条路由(均做同源校验):
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /plugins/watchman/state |
打码后的配置、进程状态、日志尾部 |
| POST | /plugins/watchman/config |
保存 channel、target、enabled、dedup_minutes、pushOn |
| POST | /plugins/watchman/test |
立即发一条测试推送 |
| POST | /plugins/watchman/control |
start / stop / restart 守夜人进程 |
事件与分级¶
事件订阅复用 dsh-remote 运行时里的 dsh-events.mjs。未安装 dsh-remote 时插件仍可安装并发送测试推送,但收不到 DSH 宿主事件流。
默认推送的事件包括:
| 事件 | 级别 | 默认 |
|---|---|---|
approval-request 工具放行待批 |
待审批 | 开 |
user-question / plan-review 等你回答 |
待审批 | 开 |
session-error 任务报错 |
报错 | 开 |
turn-end 任务结束 |
结束(异常结束会升格) | 开 |
gap 订阅断线 |
断线 | 开 |
auth-error cookie 失效 |
报错 | 开 |
同一事件在默认 30 分钟 去重窗口内只推一次;去重表落盘到 ~/.dsh-watchman/watchman.dedupe.json,进程重启也不会重复轰炸。若「任务结束」太吵,可在配置里关掉 pushOn.turnEnd,仅异常结束仍推送。
架构要点¶
订阅与推送跑在 独立进程 lib/watchman.mjs 中,告警链路不依赖 DSH 主进程重启;使用 pid 锁保证单实例。数据目录默认 ~/.dsh-watchman(可用插件配置 dataDir 覆盖),事件源默认读 ~/.dsh-remote(可用 relayDir 覆盖)。
安装与启用¶
前置:DSH 桌面端或 Web 端,且具备 settings.section 槽位。
官方 README 给出的安装方式如下(装完需 重启 DSH):
# 从 GitHub 装(推荐,无需等 npm 发布)
dsh plugin --profile desktop add "github:Beeasy-L/dsh-watchman"
# 或从本地源码装(开发时)
dsh plugin --profile desktop add "file:C:\path\to\dsh-watchman"
# 若已发布到 npm
dsh plugin --profile desktop add dsh-watchman
典型用法¶
设置页配置¶
- 重启 DSH 后打开 设置 → 守夜人告警。
- 选择通道并填写 Server酱 SENDKEY、Bark key 或企业微信 webhook。
- 按需开关各事件类型,点击「发送测试到手机」确认通道可用。
- 状态区出现「已连上宿主事件流」时,事件源正常。
命令行改配置(可选)¶
向本机 DSH 端口 POST JSON(端口替换为实际值):
curl -X POST http://127.0.0.1:<DSH端口>/plugins/watchman/config \
-H 'content-type: application/json' \
-d '{"channel":"serverchan","target":"SCT....","enabled":true}'
独立运行守夜人进程¶
不经 DSH 界面也可前台调试:
node lib/watchman.mjs # 前台运行
node lib/watchman.mjs --dry-run # 只打印不发送
node lib/watchman.mjs --verbose # 输出事件分类明细
node lib/watchman.mjs --test # 发测试推送后退出
通道层离线自测:
node test/notify.selftest.mjs
适用场景与注意¶
适合谁:经常在 DSH 里挂长任务、需要离席但仍要及时处理审批或报错的开发者;已有 Server酱、Bark 或企业微信内部群机器人的人上手最快。
权限与安全:插件以当前 DSH 进程权限运行,安装前建议阅读仓库源码与 MIT 许可证。推送 key 仅保存在本机 config.json,README 说明插件不会把完整凭据发往第三方;路由失败被 try/catch 隔离,避免拖垮宿主。
排查收不到推送:先在设置页发测试;看日志是否「已连上宿主事件流」;DSH 换端口后可在设置页重启守夜人;企业微信须 内部群 且已开群机器人。若同时启用 dsh-remote 的微信机器人,同一事件可能收到两条通知,可按需关闭一侧。
与 dsh-remote 的关系:事件流复用 dsh-remote 的 dsh-events.mjs,推送走你自己的 Server酱 / Bark / 企业微信,与 dsh-remote 的 ilink 机器人互不冲突。
结尾¶
dsh-watchman 把 DSH 长任务里「人不在场」的空窗补上:分级事件、去重防抖、独立进程与设置页配置,适合需要手机侧及时知晓审批与报错的场景。
- 目录页:https://www.skillhub.cn/plugins/Beeasy-L/dsh-watchman
- GitHub:https://github.com/Beeasy-L/dsh-watchman