当 DeepSeek Harness (DSH) 的 agent 转入空闲、错误或阻塞状态时,缺少外部反馈。该插件订阅 DSH 内置的 agent/status 事件,在任务完成、出错或阻塞时向你的设备推送通知。
安装¶
使用本地文件路径安装插件。其他 profile 的安装命令同理。
dsh plugin --profile web add file:/path/to/dsh-task-notify
若 pnpm v11 拦截供应链策略,需在命令末尾追加 --config.minimum-release-age=0。
配置¶
编辑 ~/.dsh/settings.yaml,在文件末尾添加 task-notify: 段。
task-notify:
enabled: true
notifyOn: [idle, error, blocked] # 可选事件:idle error blocked goal-completed
agents: root # root=只通知顶层代理 | all
coalesceWindowMs: 2000 # 同会话窗口内合并重复通知
desktop:
enabled: auto # auto | on | off
sound: true # macOS 播放 Glass 提示音;Windows 静音开关
format:
time: short # hidden | short | full
showDuration: true # 负载携带 durationMs 时追加「用时 X」
icons:
enabled: true # 图形图标总开关
urlTemplate: "" # 远程图标模板,如 https://host/icons/{event}.svg
bark:
enabled: false
server: https://api.day.app
deviceKey: "你的deviceKey"
ntfy:
enabled: false
server: https://ntfy.sh
topic: "只有你知道的随机topic"
token: ""
serverchan:
enabled: false
sendKey: ""
webhook:
enabled: false
url: ""
headers: {}
配置项优先级从高到低为:patch 显式配置 > settings.yaml > 环境变量 > 默认值。
功能与渠道¶
该插件支持多平台与多渠道分发,并在桌面端提供通知合并去重。
桌面端¶
- macOS:调用
osascript调用系统通知中心。受限于系统限制,仅支持纯文本 + 提示音,无法自定义通知图。 - Windows:通过 PowerShell + WinRT 发送 Toast 通知,支持嵌入 PNG 图标。
移动端与网络¶
- iOS:通过 Bark 推送。
- Android / iOS:通过 ntfy 推送。
- 微信:通过 Server酱 推送。
- 通用:通过任意 Webhook 发送 JSON 载荷。
通知内容¶
正文由 composeBody 统一格式化为:内容摘要 · 时间 · 用时 X。
* format.time 控制时间显示:short=HH:mm,full=YYYY-MM-DD HH:mm:ss,hidden=隐藏。
* format.showDuration 控制是否显示任务耗时。
* 时间与用时后缀不参与截断,始终完整显示。
图标¶
- 标题一律纯文本,无 emoji。
- 图标资源在包内
assets/icons/,包含 SVG 矢量源与 64×64 PNG。 - Windows:PNG 以
appLogoOverride嵌入。 - Bark / ntfy:配置
icons.urlTemplate后自动附加 icon 参数。 - Webhook:JSON 载荷附带 icon 与内联 iconSvg。
- macOS:无自定义图,仅纯文本。
菜单与测试¶
交互式配置¶
不想手编 YAML,可运行交互菜单。菜单会自动备份原配置为 settings.yaml.bak-<时间戳>。
npm run menu
自测¶
向所有启用的渠道发送一条样例通知。
node self-test.mjs
# 仅测试桌面通道
node self-test.mjs --channel desktop
冒烟测试¶
在真实环境中验证安装路径与事件处理。
npm run smoke
注意事项¶
- Node.js 版本:需安装 Node.js
^22.19.0 || >=24。 - 依赖:纯 ESM 模块,无构建步骤。
- 运行权限:插件以当前 dsh 进程权限运行,安装前请检查源码与许可证。