前言¶
在 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。
完全收不到通知时,可按顺序检查:
deviceKey是否填写、有无抄错。- 改配置后是否重启 DSH(配置在启动时读取)。
- 使用自建 bark-server 时,
serverUrl是否已改。 - iPhone 上 Bark 通知权限、专注模式是否拦截。
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。