dsh-notify-center:DSH 本機桌面通知與 Webhook 插件

前言

在 DeepSeek Harness 中,頂層 Agent 執行任務時可能完成、進入等待或等待審批。如果開發者不在終端窗口或 Web UI 前,容易錯過這些狀態。dsh-notify-center 是 SingleOne 維護的 DSH 插件,MIT 許可。它把頂層 Agent 的完成或審批等待事件發送成本機桌面通知,也可以投遞到已配置的 Webhook。下面介紹它的定位、能力、安裝方式和需要注意的地方。

這是什麼

dsh-notify-center 是統一的本機桌面通知和 Webhook 通知插件。它面向需要離開當前終端但仍要接收 DSH 狀態提醒的使用者。

它主要解決三個問題:

1、頂層 Agent 完成一輪任務後,及時通知使用者。
2、頂層 Agent 等待審批時,提醒用戶處理,但不接管審批 waterfall。
3、把通知送到本機桌面,或推送到已配置的遠程 Webhook。

它不額外產生提示詞、Token、工具調用或模型行爲開銷。

核心功能

完成與審批事件

插件以 session/event → turn/end 保存準確的結束原因,並在頂層 Agent 進入 idle 後派發完成通知。

它監聽持久的 approval/asked 審計事件,提醒用戶處理審批。默認會過濾子 Agent;同一 Agent 連續完成多輪時,按順序逐輪通知。

本機桌面通知

本機通知支持:

  • Windows 原生 Toast,失敗時降級爲 NotifyIcon 氣泡。
  • macOS osascript。
  • Linux notify-send。

每條本機通知使用 session + turn/event 唯一標識,避免 Windows 因複用 tag 靜默吞掉後續通知。

Webhook 通知

插件支持飛書、企業微信、釘釘、Slack、Discord 和自定義 JSON Webhook。

每個 Webhook 可獨立選擇事件和摘要權限;遠程通道默認 includeSummary: false,啓用後會發送該輪迴復的有界摘要。

Webhook 支持超時和指數退避重試;投遞不阻塞 Agent,日誌不會輸出 Webhook URL。

過濾與正文控制

插件支持按完成結果開關、關鍵詞/正則包含與排除規則、正文長度上限。事件範圍和規則可以在 DSH Web UI 設置頁調整,也可以在 profile 基礎配置中提供組合基礎值。

安裝與啓用

插件運行環境要求 Node >=20。

從 GitHub 安裝到 DSH web profile:

dsh plugin --profile web add github:SingleOne/dsh-notify-center

安裝後重啓 dsh web。

如果從源碼開發,可在插件倉庫根目錄執行:

npm install
npm run check

然後安裝本地目錄:

dsh plugin --profile web add .

源碼驗證可執行:

npm run typecheck
npm test
npm run build

典型用法

1、打開 DSH 左側設置入口,選擇“通知中心”。
2、修改本機通知、Webhook、事件範圍、摘要權限或正文長度上限等設置。
3、保存後即時生效。

也可以在 ~/.dsh/profiles/web/cordis.patch.yml 中爲插件行添加 config 作爲組合基礎值:

- id: dsh-notify-center
  config:
    webhooks:
      feishu:
        url: 'https://open.feishu.cn/open-apis/bot/v2/hook/REPLACE_ME'
        includeSummary: false

頁面保存的用戶層位於:

$DSH_HOME/dsh-notify-center/settings.json

未設置 DSH_HOME 時:

~/.dsh/dsh-notify-center/settings.json

該文件由插件維護,不建議手工編輯。

桌面橋接

可選的桌面 App 橋接可以優先把通知交給桌面 App 展示。橋接缺失或失敗時,自動回退系統原生通知。

桌面 App 啓動 DSH 子進程時可注入:

DSH_NOTIFY_BRIDGE_URL
DSH_NOTIFY_BRIDGE_TOKEN

獨立系統通知的點擊行爲由操作系統負責;只有桌面橋接通知支持喚醒 App 並定位會話。

適用場景與注意

適合:

  • 頂層 Agent 長時間執行,希望在完成或等待審批時收到提醒。
  • 需要把 DSH 狀態推送到飛書、企業微信、釘釘、Slack、Discord 或自定義 Webhook。
  • 希望在 DSH Web UI 中調整通知設置,而不是隻改 profile 基礎配置。

使用前注意:

  • 插件以當前 dsh 進程權限運行,安裝前應檢查源碼與許可證。本插件許可證爲 MIT。
  • 插件僅向顯式配置的 HTTP(S) 地址發請求。
  • Webhook URL 只存在當前用戶的 Host 設置文件或 profile 基礎配置中,並以 secret 字段持久化、不會回傳瀏覽器。
  • 插件配置 API 僅接受迴環同源請求,並從所有響應中剝離 URL;Webhook URL 不寫入會話日誌,也不會進入模型上下文。
  • Linux 系統必須提供 notify-send。
  • 可視化設置頁僅隨 DSH Web UI 加載;headless 使用方式仍通過 profile 配置。
  • 缺少 WebServer 時只會停用頁面和配置 API,不影響本機通知與 Webhook 投遞。
  • 投遞隊列僅保存在內存中;DSH 進程退出時不會持久化未完成重試。
  • Windows 首次通知會創建開始菜單快捷方式 dsh-notify-center.lnk,並在當前用戶的 HKCU\Software\Classes\AppUserModelId 下注冊 DeepSeekHarness.NotifyCenter;不寫入系統級註冊表。移除快捷方式和該 HKCU 項即可撤銷。

結尾

dsh-notify-center 的價值比較集中:把 DSH 頂層 Agent 的完成和審批等待狀態送到本機桌面或已配置 Webhook,同時保留默認關閉摘要、URL 脫敏和進程內投遞等限制邊界。

GitHub 倉庫:

https://github.com/SingleOne/dsh-notify-center
羽毛球分组比赛记分
小程序二维码

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

小夜