bark-notify:DSH 任务状态通过 Bark 推到 iPhone / Apple Watch

前言

在 DeepSeek Harness(DSH)里跑 Agent,常见情况是任务在后台跑很久、需要你回到终端点「允许」,或者中途报错。盯着终端或反复切窗口并不现实。邮件、Webhook 也能做提醒,但 iPhone 用户往往更希望一条系统级推送,必要时在 Apple Watch 上也能扫一眼。

下面介绍社区插件 bark-notify(npm 包名 @lijixu/bark-notify,GitHub 仓库 xuliji/bark-notify)。它在 Agent 运行结束、需要人工授权或运行出错时,通过 Bark 把通知推到你的 iPhone;配对 Apple Watch 时会自动镜像。维护者为 xuliji,在 DSH 插件目录中归类为联网工具。

这是什么

bark-notify 是 DSH 的 bundle 插件:监听 Harness 里的任务生命周期与授权事件,向 Bark 服务器 POST 推送。你只需在 iPhone 安装 Bark App,把 App 首页显示的 Key 写进 DSH 配置;插件只发通知,不会在 DSH 里替你完成授权。

什么时候会收到通知

什么时候 收到什么
任务跑完 ✅ 任务完成
有个工具调用需要你点「允许」 🔔 需要授权
运行出错 ⚠️ 运行出错
你自己点了「停止」 不推送(默认行为)

几条默认策略是为了减少打扰:

  • 手动停掉的任务不会被报成「任务完成」。若希望中止也通知,将 notifyOnAbort 设为 true,会收到 ⏹️ 已中止。
  • 出错只推一条,不会在错误通知后再补一条「任务完成」。
  • 子 Agent 默认静默;一次任务可能派生多个子 Agent,全开容易刷屏。需要时设 includeSubagents: true。
  • 授权仍须在 DSH 里正常确认,插件不改动授权结果。

通知正文通常包含标题行、简要说明,以及任务标题 + 会话 ID 前 8 位,便于区分是哪条会话在叫你。示例形态(来自官方 README):

✅ 任务完成
Agent 本轮运行已结束
重构登录模块(7dbd389b)
🔔 需要授权
工具:bash
原因:在工作区外写入文件
重构登录模块(7dbd389b)

安装与启用

前置:在 iPhone 安装 Bark App,打开首页可见 https://api.day.app/xxxxx,其中 xxxxx 即为你的 Key。

在 DSH 中执行官方安装命令:

plugin_manager: { action: "install_bundle", target: "@lijixu/bark-notify" }

装完后重启 DSH。若要从 GitHub 或本地路径安装(例如 github:xuliji/bark-notify),写法见仓库 PUBLISHING.md。

配置:deviceKey 为必填项。未填写时插件仅在日志中提示,不会联网推送。

推荐写入 profile 的 patch 层(~/.dsh/profiles/desktop/cordis.patch.yml),优先级较高,插件升级时不易丢配置:

- id: bark-notify
  name: '@lijixu/bark-notify'
  config:
    deviceKey: '你的 Bark Key'

修改后再次重启 DSH 生效。

可选配置

配置 默认值 说明
serverUrl https://api.day.app Bark 服务器;自建 bark-server 时改为自己的域名
notifyOnFinish true 任务跑完是否推送
notifyOnApproval true 需要授权时是否推送
notifyOnError true 运行出错是否推送
notifyOnAbort false 手动中止时是否推送
includeSubagents false 子 Agent 是否也推送
settleMs 1500 结束多久后再推(毫秒),用于跳过「刚结束又立刻开始」的抖动;0 表示立即推
timeoutMs 10000 单次推送超时(毫秒)
group DeepSeek Harness Bark 通知分组
sound 空 Bark 铃声名,留空为系统默认
level active 打扰级别:active / timeSensitive / passive / critical
icon 空 通知图标 URL
url 空 点击通知打开的链接

若只想在需要授权时被提醒,可将 notifyOnFinish、notifyOnError 设为 false,或将 level 改为 passive。

典型用法与排查

只想授权时响铃:在 patch 中关闭完成与错误推送,保留 notifyOnApproval: true。

完全收不到通知时,可按顺序检查:

  1. deviceKey 是否填写、有无抄错。
  2. 改配置后是否重启 DSH(配置在启动时读取)。
  3. 使用自建 bark-server 时,serverUrl 是否已改。
  4. iPhone 上 Bark 通知权限、专注模式是否拦截。
  5. level 是否为 passive(不亮屏、不响,仅进通知中心)。

一次任务多条通知:检查是否开启 includeSubagents;也可适当调整 settleMs。

卸载或临时关闭:

彻底卸载:

plugin_manager: { action: "remove_bundle", target: "@lijixu/bark-notify" }

临时禁用:

plugin_manager: { action: "set_bundle", target: "@lijixu/bark-notify", enabled: false }

以上操作均需重启 DSH 生效。

适用场景与注意

适合在 DSH 中长期跑 Agent、又习惯用 iPhone / Apple Watch 收推送的开发者。DSH 生态强调「一切皆插件」;社区目录站点 skillhub.cn 上的 bark-notify 页 与 DeepSeek / 幻方无官方从属关系,安装前请自行查看源码与 MIT 许可证。

插件以当前 DSH 进程权限运行;deviceKey 仅保存在本机 DSH 配置中,推送时 POST 到你配置的 serverUrl(默认为官方 api.day.app)。安装联网类插件前,建议确认仓库来源与行为是否符合你的安全预期。

结尾

bark-notify 把 DSH 里「跑完、要授权、出错」三类关键时刻接到 Bark,减少盯终端的成本。目录页:https://www.skillhub.cn/plugins/xuliji/bark-notify;源码与完整说明:https://github.com/xuliji/bark-notify。

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

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

Xiaoye