DeepSeek Harness 任务完成通知插件

当 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 进程权限运行,安装前请检查源码与许可证。
羽毛球分组比赛记分
小程序二维码

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

小夜