前言¶
在 DeepSeek Harness (DSH) 的智能體開發與運行場景中,審批任務、任務完成狀態或錯誤信息往往容易被後臺進程淹沒。dsh-notifier 插件解決了這一問題,它通過瀏覽器 Notification API 和系統原生 Toast(Windows PowerShell WinRT / macOS osascript / Linux notify-send)提供獨立的通知渠道,確保用戶即使不在瀏覽器前也能收到關鍵事件提醒。本插件 fork 自 wingsky-1/dsh-notifier,爲 DSH 提供了輕量級的事件分發能力。
安裝¶
安裝前需確認 dsh web 已正常啓動。本插件爲獨立構建,不依賴上游插件倉庫。
dsh plugin --profile web add @jypjypjypjyp/dsh-notifier
安裝/卸載/更新後需重啓一次 dsh web 以使 bundle 生效。若未全局安裝 dsh,可使用 npx 臨時拉起(需本機安裝 pnpm 與 Node.js):
npx @deepseek-ai/dsh plugin --profile web add @jypjypjypjyp/dsh-notifier
訪問方式¶
插件所有接口均受 loopback 圍欄 保護,僅接受本機迴環(127.0.0.1 / localhost)調用。因此從局域網瀏覽器直連 HTTP 接口會返回 403,通知通道不工作。
請選用下列任一形態訪問:
| 形態 | 訪問方式 | 說明 |
|---|---|---|
| 本機桌面 | http://127.0.0.1:3080 |
安全上下文,瀏覽器通知與系統通知均可用 |
| 局域網 HTTPS | https://<IP>:3443 |
需配合 dsh-lan-proxy,滿足安全上下文與迴環校驗 |
| 隧道 | ssh -L 3080:127.0.0.1:3080 <服務器> |
SSH 隧道轉發後訪問本機地址 |
核心功能¶
插件通過雙通道分發事件,並支持多種管理策略。
1. 事件類型¶
- 向你提問(默認開):
ask_user_question/ GUI 提問彈窗觸發時通知。 - 審批提醒:真實審批路徑觸發,含任務標題、工具名、申請理由與操作提示。
- 完成提醒:任務從運行到空閒時通知。子代理完成需開啓
notifySubagentDone(默認關)。 - 錯誤提醒:任務出錯時通知,錯誤信息會脫敏處理(前 300 字符)。同類錯誤 60 秒內自動合併。
- 輪次完成(默認關):
agent/turn-stopping時通知。
2. 通知渠道¶
- 系統通知:Windows 使用 PowerShell WinRT,macOS 使用
osascript,Linux 使用notify-send,均無需額外安裝。 - 瀏覽器通知:通過 SSE 推送,僅在頁面隱藏時彈出。
- 降級策略:非安全上下文(如局域網 HTTP)自動降級爲頁面內橫幅、提示音及標題提醒。
3. 管理策略¶
- 免打擾時段:支持跨午夜設置(如 22:00-08:00),可配置緊急例外。
- 完成風暴聚合:多任務/子代理同時收尾時聚合爲“另有 N 個任務已完成”,避免刷屏。
- 審批超時二次提醒:等待超過
askRemindMin分鐘(默認 5)未處理時再次提醒。
配置與接口¶
配置文件默認位於 ~/.dsh/dsh-notifier.json,通過 /api/dsh-notifier/config 接口讀寫。
常用配置項:
{
"notifyAsk": true,
"notifyTaskDone": true,
"notifyTaskError": true,
"notifySubagentDone": false,
"quietHours": { "enabled": false, "start": "22:00", "end": "08:00", "allowKinds": [] },
"errorMergeWindowMs": 60000,
"askRemindMin": 5
}
接口列表:
- GET/PUT /api/dsh-notifier/config:讀取/保存配置。
- GET /api/dsh-notifier/events:SSE 訂閱通知幀。
- POST /api/dsh-notifier/test:測試通知(繞過免打擾)。
- GET /api/dsh-notifier/history:獲取最近通知記錄(最多 200 條)。
- DELETE /api/dsh-notifier/history:清空記錄。
- GET /api/dsh-notifier/health:健康檢查。
安全與限制¶
- 安全上下文:瀏覽器通知需 HTTPS 或 localhost。iOS Safari 普通標籤頁無 Web Notifications API,需添加到主屏幕獲得 PWA 級通知。
- Loopback 保護:所有接口拒絕非本機調用。
- 數據脫敏:錯誤通知、審批理由、提問文本中包含的路徑、私鑰、令牌、密碼等敏感信息會被脫敏爲佔位符。
- 通知目標區分:瀏覽器通知推送到當前瀏覽器客戶端;系統通知(Toast)彈在 dsh web 運行的宿主機器桌面。
驗證¶
本地健康檢查:
curl -s http://127.0.0.1:3080/api/dsh-notifier/health