DeepSeek Harness 的第三方 Server酱提醒插件:在主机端监控审批、计划评审和问答,超过设定时间仍未处理时发送手机提醒,无需保持浏览器打开。
安装
# npm 包(预构建)
dsh plugin --profile web add dsh-serverchan-watchdog
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:MaRi23333/dsh-serverchan-watchdog
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
中文 · English
当 DeepSeek Harness(DSH)等待审批、计划评审或 ask_user_question 答复超过设定时间,本插件会从 DSH 主机端经 Server酱发送手机提醒;无需保持浏览器页面打开。
dsh-serverchan-watchdog是社区独立开发的第三方插件,与 Server酱及 DeepSeek Harness 官方无隶属、赞助或背书关系;相关名称仅用于说明兼容对象。
它解决什么
浏览器内通知适合人在电脑前时即时提示;本插件负责主机端计时,在你离开电脑、标签页已经关闭时继续监控,并在等待超过阈值后提醒手机。两类通知可以并用。
- 主机端监控:监听持久会话事件流,不依赖浏览器连接。
- 三类原生等待:问答、计划评审、工具审批/沙箱升级。
- 重启恢复:DSH 重启后从会话日志重新挂起尚未闭合的等待,并保留原开始时间。
- 克制的失败处理:网络错误、超时或 HTTP 5xx 最多重试两次;HTTP 4xx(含 429)、Server酱业务错误和异常响应立即停止,避免失控消耗额度。
- 本机加密存储:SendKey 以 AES-256-GCM 密文保存,不进入仓库、日志或 API 响应。
监控哪些等待
| 场景 | 开始 | 结束 |
|---|---|---|
ask_user_question 问答 |
对应 tool/call |
匹配 callId 的 tool/result |
exit_plan_mode 计划评审 |
对应 tool/call |
匹配 callId 的 tool/result |
| 工具审批 / 沙箱升级 | approval/asked |
匹配 ID 的 approval/decided |
默认等待 5 分钟后提醒一次。可以设置重复提醒间隔;一次推送失败只会在仍待处理时执行有界重试。尚未配置凭据时只延后检查,不会发出网络请求,也不消耗重试预算。
界面截图
安装
推荐从 npm 安装稳定版本:
dsh plugin --profile web add dsh-serverchan-watchdog
# PATH 中没有 dsh 时
npx -p @deepseek-ai/dsh dsh plugin --profile web add dsh-serverchan-watchdog
如果此前通过 GitHub 安装,重新执行上面的 npm 命令即可切换到 npm 渠道。需要主动跟随后续 main 时,也可以使用滚动安装;它不具备稳定版本的可复现性:
dsh plugin --profile web add github:MaRi23333/dsh-serverchan-watchdog
本地开发目录也可直接安装:
dsh plugin --profile web add E:\path\to\dsh-serverchan-watchdog
安装后请从普通终端重启 dsh web。
配置
重启后打开 DSH 设置页 → 插件 → Server酱推送小助手。
第一次使用 Server酱:先按官方 SendKey 指南开通 Server酱 Turbo(通常推送到微信)或 Server酱³(推送到独立 App),再把控制台给出的 SendKey 或完整推送地址填入下方设置。
- 推送地址 / SendKey:支持经典
SCT...、Server酱³sctp...,或控制台给出的官方完整 HTTPS 推送地址。SCT...对应 Server酱 Turbo,通常推送到微信。sctp...对应 Server酱³,推送到 Server酱³ App。
- 阈值:默认 5 分钟;修改只影响之后新开始的等待。
- 重复提醒间隔:默认 0,即成功送达一次后不重复。
- 网络代理:可选 HTTP/HTTPS 代理;不接受 URL 中的用户名或密码。
- 打开 Harness 的链接:默认
http://127.0.0.1:3080。手机上的127.0.0.1指向手机自身;需要从手机访问时应使用受保护的局域网/VPN 地址。 - 测试推送:使用当前设置发送一条测试消息。
设置页保存值优先于 bundle patch。可用的默认配置如下:
- id: serverchan-watchdog
config:
enabled: true
thresholdMinutes: 5
repeatMinutes: 0
title: DSH 等待人工确认
webUrl: http://127.0.0.1:3080
proxy: ''
也可通过环境变量 DSH_SERVERCHAN_SENDKEY 注入凭据;它适合已有外部凭据管理的环境。不要把真实值写进仓库或命令输出。
数据流与安全
推送正文会把以下信息发送给 Server酱:交互类型、会话 ID、问题/计划/审批摘要、等待时长和配置的 Harness 链接。这些内容会离开本机,并受 Server酱渠道与账号的消息保留策略约束;不要在待确认文本或链接中放入密钥等敏感信息。
- SendKey 保存在
$DSH_HOME/serverchan-watchdog/state.json,加密密钥为同目录key.bin。两者会尽力收紧文件权限,但能同时读取这两个文件的本机账户仍可恢复 SendKey;这不是系统凭据库。 - 只接受 Server酱官方 HTTPS 端点,拒绝带 userinfo、query、fragment、错误主机、错误路径或 UID 不匹配的地址。
- 配置、状态和测试接口只接受本机回环请求;同机不受信进程仍可能读取待处理摘要、修改设置或触发测试消息。不要直接把 DSH 暴露到公网,反向代理、LAN/VPN 场景应在外层配置认证和访问控制。
- 失败日志只保留
timeout、network-failed、HTTP 状态或业务错误类别,不记录 SendKey、完整 URL、响应正文或原始异常。 - Server酱额度、失败计费和消息保留期限随渠道及套餐而异,请以官方发送说明和常见问题为准。
本机接口
| 接口 | 方法 | 说明 |
|---|---|---|
/serverchan-watchdog/status |
GET | 生效配置摘要与当前等待列表,不含凭据和状态目录路径 |
/serverchan-watchdog/config |
GET | 可编辑设置视图,不含凭据 |
/serverchan-watchdog/config |
POST | 保存 SendKey、阈值、重复间隔、代理或链接 |
/serverchan-watchdog/test |
POST | 发送一条测试推送 |
写接口要求 JSON 及回环同源校验。
已知限制
- 如果主机在人工已答复但结果尚未写入会话日志的极短窗口内崩溃,重启恢复可能多提醒一次。
- DSH 重启时,多个已经超过阈值且仍未处理的等待会同时恢复计时,可能在短时间内发送多条提醒并消耗 Server酱额度。
- 推送前会重新确认该交互仍在等待,但无法撤销已经发出的 HTTP 请求。
- 手机提醒只是入口;能否从手机打开 Harness 取决于你配置的地址和网络访问控制。
开发
pnpm install --frozen-lockfile
pnpm run typecheck
pnpm test
pnpm run build
pnpm run check:smoke
pnpm run check:pack
git diff --exit-code -- lib
CI 在 Node.js 22/24 上执行同等门禁。项目使用 autoInstallPeers:false,确保运行时依赖不会被本机自动补齐行为掩盖。
License
链接
同类插件
xmanrui/dsh-im★ 1283
通过二维码或机器人凭据将 IM 机器人接入 DeepSeek Harness(支持飞书、微信、钉钉、企业微信、QQ、Slack、Telegram、Discord 和 WhatsApp 共 9 种渠道)。
alvinunreal/openpets#dsh★ 1186
将 DeepSeek Harness 的生命周期状态、错误与审批请求,桥接到本地运行的 OpenPets 桌面伙伴。
shaobeichen/dsh-pocket★ 1096
手机远程访问 DSH Web 界面:扫码即用局域网或公网(cloudflared 隧道)访问,实时同屏、移动端适配布局,带设置页管理。
inclusionAI/Avernet#deepseek-harness-channel-bcn★ 551
通过 WebSocket V2 将 DeepSeek Harness 接入 Avernet Bot 协作网络,支持自动注册、Agent 会话隔离、工具调用事件和多 Bot 路由工具。
THEWOLFWALKER/dsh-notifier★ 98
DSH 多渠道通知与手机控制插件:一个 `notify()` API 接入 27 个渠道,支持事件推送、手机审批与提问、手机任务接管(`/tasks` · `/use`)、图片入会话、六条入站控制通道、本机 Web 管理台、双语消息(`lang` 切换 zh/en)、多 agent 路由和零运行时依赖。
omdsh-dev/dsh-notification★ 83
回合完成桌面通知,按结果分控 + 关键词过滤。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。