dsh-bark-notify:把 DSH 回合结束与待办提醒推到 Bark

前言

在 DeepSeek Harness(DSH)里跑 agent,回合往往要几分钟甚至更久。人离开桌面后,很难知道对话是正常结束、出错截断,还是 agent 在等你选选项、批准工具调用。邮件或第三方 IM 可以接,但 iOS 用户若已用 Bark 做自定义推送,更习惯在通知中心里一眼看到卡片摘要。

下面介绍社区插件 dsh-bark-notify(维护者 Lloydly007,分类:联网工具)。它在 DSH 侧监听会话与可选的后台任务事件,通过 Bark API 向手机推送可配置的卡片;设备 key、服务器、每种场景的开关和 Bark 官方参数都在 设置 → 插件 → Bark 通知 里改,改完下一次推送生效。

这是什么

dsh-bark-notify 是 DSH 的 Bark 推送插件:对话回合结束时推一张卡片;可选在 agent 等你选择 / 批准、以及后台任务结算时再推。仓库地址:https://github.com/Lloydly007/dsh-bark-notify;社区目录页:https://www.skillhub.cn/plugins/Lloydly007/dsh-bark-notify。当前 package 版本 1.2.0,许可证 MIT。插件在 DSH Desktop(2026-10)上验证,其他版本未在 README 中声明。

DSH 生态强调「一切皆插件」;SkillHub 等目录是社区站点,与 DeepSeek / 幻方无官方从属关系。安装前请自行查看源码与许可证——插件以当前 DSH 进程权限运行,设备 key 只写在 profile patch 层,不写进仓库。

核心功能

回合完成与失败

监听 session/event 中的回合生命周期。turn/end 为 completed 时推「对话完成」;error / max-tokens 推「对话出错」。用户自行中止、打断、子代理回合、以及 aborted / interrupted / blocked / forked 等结束原因不推送。可通过 notifyOnSuccess、notifyOnFailure 单独开关,并可用 minTurnSeconds 过滤过短的回合。

等你回应(可选)

  • tool/call 且工具为 ask_user_question:推「等你选择」,正文带问题标题、选项(受 notifyOnQuestion 控制)。
  • approval/asked:推「等你批准」,带原因与工具名(受 notifyOnApproval 控制)。

回合尚未结束时也会推,避免你只等「回合结束」而漏掉交互。

后台任务(可选,默认关闭)

订阅 ctx.jobs.events 的 settled,在 notifyOnJobSuccess / notifyOnJobFailure 打开时推送。只推主会话里没人 await 的任务,跳过 teardown 和子代理任务;可用 minJobSeconds 设最短时长。后台任务卡与同一回合的完成卡可能各推一张,属预期行为。

卡片内容与投递

副标题优先用会话标题服务里的标题,否则取该会话第一条真人消息;正文默认取最后一条 assistant 回复摘要(previewChars 默认 80 字)。时长按事件自带的 time 计算。网络错误、超时、429、5xx 会按 retries(默认 1 次)重试;按 bark-server 返回的 data[] 逐台核对,失效 key 会告警且日志里只显示前 6 位。

设置页可调的 Bark 参数

服务器默认 https://api.day.app,可填自建 bark-server。deviceKeys 每行一个,同 key 去重;公开 bark-server 一次请求最多 10 个 key,自建不限。其余字段与 Bark 官方参数对应(如 level、sound、group、collapse / collapseId、markdown、ttl 等),完整列表见 README 参数表或设置页。未实现端到端加密与按 id 删除通知。

安装与启用

前提:DSH Desktop 已初始化 profile;手机已安装 Bark 并取得设备 key。

从 GitHub 安装

在 PowerShell(或其他 shell)中执行(desktop 换成你的 profile 名):

dsh plugin --profile desktop add https://github.com/Lloydly007/dsh-bark-notify.git

也可以在 设置 → 插件 → 安装 中填写同一 GitHub URL。装完后重启一次 DSH Desktop,在 设置 → 插件 → Bark 通知 中填写 Bark 服务器与设备 key,并打开启用开关。仓库自带的 cordis.patch.yml 故意不含 key。

典型用法

  1. 只关心「跑完告诉我」:保持默认的回合完成/失败通知,关闭 notifyOnQuestion、notifyOnApproval 和后台任务相关开关。
  2. 长时间 agent 任务且会弹批准框:打开 notifyOnApproval(必要时打开 notifyOnQuestion),离开桌面后手机收到「等你批准」或「等你选择」。
  3. 后台 shell / 任务无人看守:打开 notifyOnJobSuccess 或 notifyOnJobFailure,并设置合适的 minJobSeconds,避免极短任务刷屏。
  4. 同一会话多条通知合并观感:在设置里配置 group、collapse 与 collapseId(支持 {session} / {kind} / {turn} 占位)。

诊断方面:打开 trace 可在 Host 日志里看到回合与推送相关事件;配置 logFile 可落盘每次推送一行。开发者可在插件目录执行 node simulate.mjs 做 63 项分支仿真(本机假 bark 服务器,不响手机);真机自检用 node selftest.mjs <key> …(会推送到指定设备)。

适用场景与注意

适合已在用 Bark、希望 DSH 对话与可选后台任务「离场可感知」的开发者。不适合不想把设备 key 交给本机 DSH profile 的环境——key 仅存 profile patch,但进程仍具备读取与发送能力。

注意:子代理会话不推;没有用户消息开启的回合不推;一个回合只推一张完成卡。改设置页参数无需重启;只有改 index.js / client.js 才需重启或重载插件。Node 要求 >=20,peer 依赖 @deepseek-ai/schemastery(>=3.0.0)。

结尾

dsh-bark-notify 把 DSH 回合结束、待你回应和可选的后台任务结算,收敛成 Bark 上可配置的卡片推送,参数集中在设置页,适合与 Bark 已有工作流衔接。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜