前言¶
DeepSeek Harness (DSH) 在运行会话时,通常需要在审批请求或轮次结束时获得外部反馈。本插件提供了一个轻量级的解决方案,通过 Webhook 将这些生命周期事件推送到指定的接收端。
核心功能¶
本插件的核心作用是监听 DSH 会话的事件日志,并将符合条件的事件转发出去。它不包含提示词、回复、工具参数或文件内容,仅转发生命周期事实。
- 事件过滤与转发:默认监听
turn/end(轮次结束)和approval/asked(审批请求)事件。 - 多种格式支持:支持
json(默认)、ntfy(推送通知)和bark(iOS 推送)格式。 - 纯 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 来处理远程代理的审批和完成通知,可以参考该插件的设计思路。更多细节可查阅目录页或源码仓库。