dsh-perch-notify:DSH 會話生命週期通知插件

前言

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 來處理遠程代理的審批和完成通知,可以參考該插件的設計思路。更多細節可查閱目錄頁或源碼倉庫。

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

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

小夜