DeepSeek Harness 插件

MaRi23333/dsh-serverchan-watchdog

Star 数 ★ 0 下载量(近 30 天) 1,998 分类 通知与集成 收录于 2026-09-08 npm dsh-serverchan-watchdog

DeepSeek Harness 的第三方 Server酱通知插件:在主机端监控审批、计划评审和问答,超过设定时间仍未处理时通过微信(Server酱 Turbo)或 Server酱³ App 发送手机提醒,无需保持浏览器打开。

安装

# 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

dsh-serverchan-watchdog:DSH 人工确认超时后通过 Server酱发送手机提醒

CI

当 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 分钟后提醒一次。可以设置重复提醒间隔;一次推送失败只会在仍待处理时执行有界重试。尚未配置凭据时只延后检查,不会发出网络请求,也不消耗重试预算。

界面截图

宿主与桌面端兼容

本轮目标宿主为 DSH 0.2.0-rc.2 与同版本桌面客户端。开发侧报告迁移后可用,运行时版本与 bundle 准入条件已核对;桌面设置页、真实后台提醒及通知客户端中的 dsh:// 点击链路仍需按实际使用环境验证,不把加载兼容等同于端到端验收。

0.2.2 将网络请求依赖 Undici 升级到 7.30.1,包含上游安全修复,提醒逻辑与现有配置不变。此前 0.2.1 新增卡住确认的「忽略 / 恢复提醒」:忽略立即生效、重启后保留,只影响所选会话中的那一项,不会批准或回答原来的确认。已有配置草稿不会因此保存或丢失。完整变更见 CHANGELOG.md。

安装

桌面客户端(推荐)

桌面客户端与 Web 的插件安装和启用状态各自独立;在 Web 安装不会自动在桌面端启用。桌面图形界面安装无需配置 PATH。

  1. 打开桌面客户端,进入侧栏 插件(Plugins) → 添加插件(Add plugin)。
  2. 输入 npm 包名 dsh-serverchan-watchdog@latest 并安装。
  3. 安装完成后点击 立即启用(Enable now);只关闭安装完成对话框会让插件保持停用。
  4. 仅在界面提示需要重启时,通过应用菜单 退出(Quit) 完整退出再重开。关闭窗口可能只是隐藏应用。

启用后可在设置页中找到 Server酱推送小助手;页面顶部有总开关和实时状态。

先启动桌面客户端一次以完成初始化。在应用菜单打开 Manage dsh Command… → Install,注册桌面随附的 dsh 命令,再打开新终端;若界面报告 PATH 冲突,先按其提示处理。

通过 Quit 完整退出桌面客户端后,使用刚注册的桌面随附 CLI:

dsh plugin --profile desktop add dsh-serverchan-watchdog@latest
dsh plugin --profile desktop list

完成后重开桌面客户端。npm 安装的 dsh 和 npx 不能管理 desktop profile。命令注册说明见官方桌面文档。

Web

以下命令只管理 Web 的插件。使用启动该 Web 实例的同一套、与宿主版本匹配的 dsh CLI,从 npm 安装稳定版本:

dsh plugin --profile web add dsh-serverchan-watchdog@latest

安装后停止当前 dsh web 进程,用同一套 CLI 重新运行 dsh web,再刷新页面。

渠道切换:如果此前通过 GitHub 或本地目录安装,重新执行上面的 npm @latest 命令即可切换到 npm 渠道。需要主动跟随后续 main 时,也可以使用滚动安装;它不具备稳定版本的可复现性:

dsh plugin --profile web add github:MaRi23333/dsh-serverchan-watchdog

本地开发目录也可直接安装:

dsh plugin --profile web add E:\path\to\dsh-serverchan-watchdog

第一次收到提醒

安装并启用后,打开 设置 → Server酱推送小助手。准备好 SendKey 或完整推送地址;尚未开通 Server酱时,先看配置里的官方指南。

1. 保存推送设置

在「推送通道」填入 SendKey 或完整推送地址,开启总开关,点击 保存设置。页面修改要保存后才生效;已保存的 SendKey 不会回显,留空会保留原值。

2. 先让手机收到测试消息

点击 发送测试推送,查看微信(Server酱 Turbo)或 Server酱³ App 是否收到「DSH ServerChan 配置测试」。测试使用已保存的设置,刚输入但未保存的 SendKey 或代理不会参与;暂停提醒时也可以发送测试。

收到这条消息说明推送通道可用。接下来用一次真实等待,确认插件能检测到需要你处理的提问。

3. 留下一条真实提问,等它提醒

  1. 记下「多久没回复就提醒」的原值,临时改为 1 分钟并保存。这个改动只对保存后新开始的等待生效。

  2. 在 DSH 会话中发送下面的测试请求,出现提问卡片后先不作答:

    请调用 ask_user_question 工具,用提问卡片问我一个测试问题,然后等我答复,不要自行继续。
    
  3. 在设置页的 等待中的确认 中确认出现了这条提问。列表约每 10 秒刷新一次;普通聊天文字里的问句不会进入监控。

  4. 等待满 1 分钟后,检查手机是否收到提醒。收到后回到 DSH 答复这条问题,等待列表会在刷新后移除它。这就走通了本次提问的检测与推送;重复提醒默认关闭,同一条等待只提醒一次。

  5. 把提醒时间恢复为原值并保存(默认值为 5 分钟)。

如果没有收到提醒,按下面两种情况排查:

  • 等待列表没有这条提问:确认 DSH 实际调用了 ask_user_question 并显示交互卡片,以及插件已在当前使用的客户端启用。
  • 列表里有,手机没收到:确认总开关开启、凭据已保存,重新发送测试推送。如果测试也失败,按错误提示检查凭据与网络;配置了代理时,再检查代理是否可用。暂停状态会延后发送提醒。

手机通知不能用于远程答复或批准,也不是任务完成通知。收到提醒后,请回到桌面客户端或 Web 界面处理那条等待。

配置

安装并启用后,在你使用的桌面客户端或 Web 界面中打开 DSH 设置 → Server酱推送小助手。

第一次使用 Server酱:先按官方 SendKey 指南开通 Server酱 Turbo(通常推送到微信)或 Server酱³(推送到独立 App),再把控制台给出的 SendKey 或完整推送地址填入下方设置。

  • 推送地址 / SendKey:支持经典 SCT...、Server酱³ sctp...,或控制台给出的官方完整 HTTPS 推送地址。
    • SCT... 对应 Server酱 Turbo,通常推送到微信。
    • sctp... 对应 Server酱³,推送到 Server酱³ App。
  • 总开关:保存后暂停或恢复提醒,无需重启。关闭期间已跟踪的等待项保留在队列中;已到期的等待每 5 分钟重新检查,重新打开后在下一次检查继续提醒。
  • 阈值:默认 5 分钟;修改只影响之后新开始的等待。
  • 重复提醒间隔:默认 0,即成功送达一次后不重复。
  • 推送标题:可保存最多 32 个字符,留空使用默认标题。实际发送取前 20 个字符,为重复提醒的次数后缀保留空间。
  • 网络代理:可选 HTTP/HTTPS 代理;不接受 URL 中的用户名或密码。
  • 推送里的跳转链接:默认留空,推送正文不附链接。可选 dsh://open:在安装并注册该协议的电脑上打开时,将 DeepSeek Harness 桌面客户端拉到前台;它不能从手机远程唤起电脑,通知客户端是否允许此类链接也需自行验证。填 http(s):// 则用浏览器打开——手机上的 127.0.0.1 指向手机自身,需要手机访问时应使用受保护的局域网/VPN 地址(当前桌面客户端的 Web GUI 仅绑定本机回环)。
  • 等待队列:显示当前正在计时的等待项,含类型、内容、已等待时长和已提醒次数。
  • 测试推送:使用当前设置发送一条测试消息。

修改会先暂存在页面上,点击「保存设置」才写入。已保存的 SendKey 不会回显,留空即保持不变;如需更换请直接输入新的密钥。

设置页保存值优先于 bundle patch。可用的默认配置如下:

- id: serverchan-watchdog
  config:
    enabled: true
    thresholdMinutes: 5
    repeatMinutes: 0
    title: DSH 等待人工确认
    webUrl: ''
    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/ignore POST 忽略或恢复一条等待中的确认({ sessionId, id, restore? }),写入本机状态
/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

MIT

内容来自项目 README(GitHub)↗

链接

同类插件

查看整个分类 →

社区评论

评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。