dsh-perch-notify: DSH Session Lifecycle Notification Plugin

前言

DeepSeek Harness (DSH) 在运行会话时,通常需要在审批请求或轮次结束时获得外部反馈。本插件提供了一个轻量级的解决方案,通过 Webhook 将这些生命周期事件推送到指定的接收端。

核心功能

本插件的核心作用是监听 DSH 会话的事件日志,并将符合条件的事件转发出去。它不包含提示词、回复、工具参数或文件内容,仅转发生命周期事实。

  1. 事件过滤与转发:默认监听 turn/end(轮次结束)和 approval/asked(审批请求)事件。
  2. 多种格式支持:支持 json(默认)、ntfy(推送通知)和 bark(iOS 推送)格式。
  3. 纯 JavaScript 实现:无构建步骤,直接运行。

安装与启用

安装命令如下。请确保在安装前已检查源码与许可证。

dsh plugin --profile web add github:chenweigao/dsh-perch-notify

安装后,需要在启动 DSH 之前配置环境变量。

配置与使用

配置通过环境变量完成。以下示例使用 ntfy.sh 作为通知接收端:

export DSH_NOTIFY_URL="https://ntfy.sh/my-topic"
export DSH_NOTIFY_FORMAT="ntfy"
export DSH_NOTIFY_EVENTS="turn/end,approval/asked"
dsh web

如果需要持久化配置,可以在 profile 的 cordis.patch.yml 中添加以下内容:

- id: perch-notify
  name: dsh-perch-notify
  config:
    url: https://ntfy.sh/my-topic
    format: ntfy
    events: ['turn/end', 'approval/asked']
    timeoutMs: 8000

发送内容格式

插件会根据 DSH_NOTIFY_FORMAT 的设置发送不同格式的数据。

JSON 格式(默认):

{
  "event": "turn/end",
  "sessionId": "3d60430f-…",
  "time": "2026-09-21T13:29:56.155Z",
  "text": "dsh 轮次结束:3d60430f · completed",
  "detail": { "turn": 1, "reason": "completed" }
}

审批请求的格式中包含 detail.toolName 和 detail.reason。

ntfy 格式:
发送文本,并附带 Title 和 Tags 头部,适合手机推送。

Bark 格式:
发送符合 Bark 协议的 {title, body} 结构。

适用场景与注意

  • 隐私与安全:插件仅发送一个出站 POST 请求到配置的 URL。无遥测、无存储、无其他网络调用。未配置 url 时,插件为惰性状态,不发送任何数据。
  • 容错机制:如果通知发送失败,错误会被记录到 DSH 控制台,但绝不会阻塞或重试代理运行。
  • 权限范围:插件以当前 DSH 进程的权限运行。

短结尾

该插件由 chenweigao 构建,即 Perch 项目的作者。如果你在 Mac 上使用 Perch 来处理远程代理的审批和完成通知,可以参考该插件的设计思路。更多细节可查阅目录页或源码仓库。

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

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

Xiaoye