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