dsh-notify: DeepSeek Harness 任務監控通知插件

在 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 倉庫。

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

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

小夜