在 DeepSeek Harness (dsh) 的 headless 或後臺模式下,任務狀態(完成、出錯、阻塞等)往往只有進程自己知道,開發者難以第一時間獲知智能體的運行結果或遇到的阻礙。dsh-notify 作爲一個監控通知插件,將任務狀態主動推送到配置的通道上,解決了後臺任務不可見的問題。
這是一個爲 DeepSeek Harness (dsh) 設計的任務監控通知插件,由 ikashana 維護。它監聽任務的生命週期事件,並在特定條件下通過 HTTP webhook、A2A agent、MCP 工具或 Windows 本地語音通知用戶。插件採用純 Node.js 實現,零運行時依賴,免構建,隨 dsh 的 bundle patch 機制安裝。
核心功能¶
dsh-notify 提供了四種主要的觸發機制和四種分發通道:
- turn/end 告警:監聽任務完成、出錯、阻塞、超出 token 上限等狀態。默認僅監聽,不發送通知。支持配置監聽的
reason.kind白名單,例如排除用戶主動取消的aborted狀態。多輪作業中,若在冷卻窗口(默認 10 秒)內開始新輪次,前一輪通知會被取消,僅報告最終狀態。 - 人工確認與超時升級:當觸發需要人工確認的對話框或
ask_user_question工具調用時發送通知。若 10 分鐘內無確認結果,會通過 SAPI 語音和優先級通道進行升級報警。 - SAPI 語音通知:僅支持 Windows 平臺,調用系統語音合成播報通知。通過 PowerShell 的
-EncodedCommand以 UTF-16LE Base64 傳輸,避免中文亂碼。無控制台窗口乾擾,後臺獨立播放。 - 多通道支持:
- HTTP:支持 QQ 機器人、ServerChan、釘釘、企業微信、ntfy 等服務,支持模板渲染和失敗重試。
- A2A:單向發送 JSON-RPC 2.0 消息到 A2A 協議 agent,支持 UUID 去重。
- MCP:作爲流式 HTTP 通知橋接,支持協議版本握手。
- 零依賴免構建:純 Node.js 實現,無額外運行時依賴,通過 dsh 的 bundle patch 機制安裝。
- 模型主動通知工具:提供
notify工具(默認關閉),允許模型在運行過程中主動向用戶推送消息。
安裝與啓用¶
插件默認爲“僅監聽,不發送”模式(無 HTTP/A2A/MCP 通道,語音關閉,工具關閉)。安裝後需在配置中顯式開啓通道。
安裝命令¶
dsh plugin --profile web add github:ikashana/dsh-notify
headless 模式同樣適用,語音和 HTTP/A2A/MCP 通道仍可正常發送。
配置方法¶
插件通過 bundle patch 插入,配置文件爲 cordis.patch.yml。由於是替換整個配置對象,需重寫保留的鍵。
- id: notify
config:
http:
channels:
- id: ntfy
url: 'https://ntfy.sh/my-topic'
sapi:
enabled: true
tools:
notify:
enabled: true
配置支持模板變量({{title}}、{{reason}}、{{text}}、{{duration}}、{{timestamp}})。私有配置(包含密鑰的 URL)建議放在本地文件並通過 gitignore,倉庫中無硬編碼密鑰。
典型用法¶
- 配置 HTTP 通道:利用 HTTP 模板渲染功能,支持環境變量(
${env:XXX})和憑證(${credential:REF})。 - 啓用 SAPI 語音:在 Windows 環境下開啓語音通知。
- 模型主動通知:在配置中開啓
tools.notify.enabled: true,模型即可調用notify工具推送消息。 - 確認結果上報:設置
notifyDecided: true,在人工確認結束後發送“已確認/已拒絕”等結果。 - 多輪作業:默認情況下,若在冷卻窗口(默認 10 秒)內開始新輪次,前一輪通知會被取消,僅報告最終狀態。
適用場景與注意¶
- 適用場景:需要長期運行後臺任務的開發者,希望實時獲知任務成敗或阻塞情況;需要通過語音或特定 Webhook 通道進行告警的場景。
- 注意事項:
- 插件以當前 dsh 進程的權限運行,安裝前應檢查源碼與許可證(MIT)。
- 模型主動的
notify消息會繞過turnEnd.includeText隱私開關,以原文形式出現在通知中,默認關閉是爲了安全。 - 需要依賴
@deepseek-ai/schemastery。 - SAPI 語音僅支持 Windows。
- 多輪作業默認僅報告最終狀態,若需中間狀態需調整冷卻窗口或配置。
dsh-notify 提供了從狀態監聽、人工確認到多通道分發的一整套方案。它默認靜默,僅在配置後生效,適合追求輕量、零依賴的 DSH 生態用戶。更多信息及源碼可訪問 GitHub 倉庫。