前言¶
在 DeepSeek Harness(DSH)裏跑長任務或遠程會話時,人往往不會一直盯着界面。任務結束、失敗、需要審批或提問時,若沒有任何提醒,只能反覆刷新或靠記憶回去看。社區插件 dsh-notify(維護者 iruoy)面向同一類需求:在 DSH 0.2.0-rc.2 API 之上,把會話事件推到瀏覽器桌面通知和 Slack Incoming Webhook,並可在設置頁裏按事件類型分別開關。瀏覽器側即使 DSH 跑在遠程服務器上,只要本機有打開 DSH 的標籤頁,仍可在當前電腦上收到通知;Slack 則在無瀏覽器連接時也能繼續投遞。
下面介紹插件定位、能力邊界、安裝步驟與配置要點。事實以 GitHub 倉庫 README 爲準;當前資料中 package 版本爲 0.2.6,許可證 MIT。
這是什麼¶
dsh-notify 是 DSH 的 Web 側插件:監聽 Harness 會話生命週期事件,向瀏覽器和/或 Slack 發送結構化通知。倉庫已包含編譯產物,安裝後無需本地 build。
維護者與倉庫:github:iruoy/dsh-notify;SkillHub 目錄頁:https://www.skillhub.cn/plugins/iruoy/dsh-notify(社區目錄,與 DeepSeek / 幻方無官方從屬關係)。
環境與依賴¶
安裝與運行前需滿足 README 中的要求:
- DeepSeek Harness,且具備 0.2.0-rc.2 API。
- Node.js 22.19+ 或 24+(與
package.json中engines一致)。 - 瀏覽器通知:桌面瀏覽器支持 Notifications、Web Locks、EventSource;站點爲 HTTPS 或 localhost 上的 HTTP。
- Slack 通知:有效的 Slack Incoming Webhook URL。
核心功能¶
雙通道通知¶
- 瀏覽器:在查看 DSH 的電腦上彈出系統級通知(權限由瀏覽器與操作系統共同決定)。
- Slack:通過 Webhook 發消息;可配置 DSH base URL,消息裏可帶 Open in DSH 鏈接。
兩類通道的事件勾選相互獨立;八種主事件默認對兩種通道均開啓。
事件類型¶
| 事件 | 通知含義 |
|---|---|
completed |
任務完成 |
error |
任務失敗 |
aborted |
任務中止 |
blocked |
任務被阻塞 |
max-tokens |
達到 token 上限 |
interrupted |
DSH 在恢復過程中報告 turn 中斷 |
approval |
請求審批 |
question |
提問(Slack 側僅含會話標識,不含問題正文) |
子 agent 的瀏覽器通知與 Slack 通知是單獨 opt-in,默認關閉。Slack 在開啓子 agent 選項後也不會發送子任務完成;其他已選中的子 agent 終端/審批類事件可發送。Slack 的 Include response summaries 默認關閉;開啓後最多附加 1,500 字符的助手回覆(可能含代碼或敏感內容)。
Slack 消息內容¶
除事件與會話標題外,消息可包含:工作區路徑、human input(最多 1,500 字符,不含注入指令與 tool 結果)、耗時、model/provider、reasoning effort、單 turn 的 token 用量(按 model/effort 分組;缺失時標爲 partial)。配置了 base URL 時附帶打開會話的鏈接。
預估 API 成本(Slack)¶
對 Models.dev 公開目錄中與 openai、anthropic 精確匹配的 provider/model,Slack 通知可顯示 Estimated API-equivalent cost(USD);codex 映射爲 openai,claude / claude-code 映射爲 anthropic。價格爲社區維護的公開列表價,不是賬單或訂閱費用;無需 API key。插件在啓動時若緩存缺失或超過 24 小時會從 https://models.dev/api.json 後臺拉取,並每小時檢查更新;有效價格與 state.json 同目錄下的 pricing.json 持久化。
投遞歷史與重試¶
設置頁 Recent deliveries 展示最近 20 條事件及瀏覽器/Slack 投遞狀態。
- 瀏覽器:重連後可從最近 200 條存儲事件中補發;多標籤同 profile 時每個事件只彈一次;點擊通知可聚焦 DSH 並打開對應會話。
- Slack:持久隊列最多 100 條待發送,可 survive DSH 重啓;網絡/限流/服務端錯誤最多共 6 次嘗試,並尊重 Slack 返回的重試間隔。
安裝與啓用¶
在已具備 DSH Web profile 的環境中,使用 README 給出的命令(勿自行改寫倉庫路徑):
dsh plugin --profile web add github:iruoy/dsh-notify
dsh web
安裝完成後在 Web UI 打開 Settings → Notify 進行配置。
典型用法¶
瀏覽器通知¶
- 點擊 Enable notifications,並在瀏覽器權限彈窗中允許。
- 勾選需要觸發瀏覽器通知的事件類型。
- 點擊 Save settings。
- 點擊 Send test notification 驗證是否送達。
至少保留一個 DSH 標籤頁打開才能收到瀏覽器通知。若權限曾被拒絕,需在瀏覽器站點設置中重新允許;系統通知設置也可能靜音。
Slack 通知¶
- 在 Webhook 字段粘貼 Incoming Webhook URL。
- 將 DSH base URL 設爲訪問 DSH 的地址,例如
https://dsh.example.com(保存時若未填,默認使用當前瀏覽器 origin)。 - 勾選要發往 Slack 的事件。
- Save settings 後點擊 Send Slack test。
更換 Webhook:輸入新 URL 並保存;留空則保留已有 Webhook。刪除:點擊 Remove webhook 再保存。
測試按鈕與事件勾選無關,可單獨用來驗通道。
狀態存儲與遠程訪問¶
設置、Webhook(僅存服務端,瀏覽器側僅顯示是否已配置)、待投遞隊列與歷史寫入:
$DSH_HOME/dsh-notify/state.json
未設置 DSH_HOME 時默認爲 ~/.dsh/dsh-notify/state.json。狀態文件權限爲僅屬主讀寫。
適用場景與注意¶
適合:本地或遠程跑 DSH、需要任務終態或審批/提問提醒的開發者;希望在 Slack 頻道彙總會話摘要與(可選)token/預估成本信息的團隊。
注意:
- 插件在當前 dsh 進程權限下運行;安裝前請自行審閱 源碼與 MIT 許可證。
- 瀏覽器通知只表示瀏覽器已接受展示請求,操作系統仍可能抑制;休眠機器或掛起標籤會延遲送達。
- Slack 摘要選項可能泄露任務細節;Webhook 與
state.json應妥善保護。 - 升級插件時,README 對舊版隊列中無法區分主/子 agent 的完成事件有取消策略,升級後若依賴 Slack 排隊投遞,需對照 README Delivery history and retries 一節預期行爲。
結尾¶
dsh-notify 把 DSH 會話的八種標準事件接到瀏覽器與 Slack,並在設置頁集中管理權限、事件、子 agent 與 Slack 摘要策略;適合「Harness 在遠端、人在本機或 IM 裏收信」的工作方式。更多細節與後續更新見 GitHub:iruoy/dsh-notify,目錄索引見 SkillHub 插件頁。