前言¶
在 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。
典型用法¶
- 只关心「跑完告诉我」:保持默认的回合完成/失败通知,关闭
notifyOnQuestion、notifyOnApproval和后台任务相关开关。 - 长时间 agent 任务且会弹批准框:打开
notifyOnApproval(必要时打开notifyOnQuestion),离开桌面后手机收到「等你批准」或「等你选择」。 - 后台 shell / 任务无人看守:打开
notifyOnJobSuccess或notifyOnJobFailure,并设置合适的minJobSeconds,避免极短任务刷屏。 - 同一会话多条通知合并观感:在设置里配置
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 已有工作流衔接。