前言¶
在 DeepSeek Harness(DSH)裏跑長任務時,常見做法是盯着界面等一輪結束,或在工具需要審批、代理向你提問時再回來操作。人一旦離開電腦或切到別的窗口,就容易錯過「回合結束」「等待批准」「等待回答」這幾類節點。郵件、自建腳本或第三方監控可以補位,但都要自己接事件、管密鑰、還要和 DSH 的會話狀態對齊。
下面介紹社區插件 dsh-notify(維護者 miiy,分類:客戶端)。它在 DSH Host 側監聽會話事件,在你配置的渠道上發出通知:本機通知中心、瀏覽器標籤頁、ntfy 推送到手機、飛書自定義機器人,可任意組合。密鑰走 Host 憑證接口,不寫入配置文件。
這是什麼¶
dsh-notify 的定位是:爲 DeepSeek Harness 提供跨設備通知(Cross-device notifications for DeepSeek Harness)。長任務運行期間不必「人在場」;當一輪結束、或進入等待你的批准/回答時,在你啓用的渠道上推送消息。
插件當前版本爲 0.2.1(見倉庫 package.json),許可證 MIT。運行要求:node >= 22,dsh >= 0.2.1-0。
核心功能¶
通知渠道¶
| 渠道 | 投遞方式 | 憑證 |
|---|---|---|
local |
macOS 通知中心、Windows Toast、Linux notify-send |
無 |
browser |
已打開的 GUI 標籤頁觸發系統通知 | 瀏覽器通知權限 |
ntfy |
ntfy 發佈 API | topic,可選 token |
feishu |
飛書/Lark 自定義機器人 Webhook | Webhook 前綴 + token,可選簽名校驗 secret |
觸發條件¶
在 Settings → Notifications 中可分別配置:
- Turn completes:回合在
completed/error/max-tokens時通知;用戶主動停止(aborted)不會提供通知選項。 - Waiting for approval:工具調用需要你決策時通知。
- Waiting for an answer:代理向你提問時通知。
離開才發、在場不打擾¶
每條通知默認會等待一段「無輸入窗口」(默認 60 秒,可在 Wait before sending 調整;設爲 0 則立即發送)。若在該窗口內你已回覆、批准、回答,或你正在閱讀該會話的回覆(回合結束後在該會話內滾動、點擊或按鍵會被視爲已讀),則消息不會發出。設計意圖是:人還在電腦前處理對話時,不重複用外部渠道轟炸。
配置與密鑰¶
- 圖形配置入口:Settings → Notifications(選渠道、填憑證、Send test 測通)。
- 非敏感配置落在
~/.dsh/dsh-notify/config.json(權限0600)。 - 敏感信息經 Host credential seam 存儲;設置頁只顯示「是否已設置」,不展示明文。
消息模板支持佔位符(未知佔位符會原樣保留):
- 回合結束:
{title}{outcome}{project}{duration}{preview}{error} - 等待批准:
{title}{project}{tool}{reason} - 等待回答:
{title}{project}{question}{count}
模板第一行爲標題,其餘爲正文;Restore 可恢復默認文案。
安裝與啓用¶
官方提供三種方式,安裝命令以 README 爲準。
1. 通過 Host 的 installBundle(安裝並啓用)¶
在對話裏讓代理執行,或在 Settings → Plugins 的安裝框粘貼同一 spec:
install the plugin `github:miiy/dsh-notify`
或安裝 spec:
github:miiy/dsh-notify
Host 的 installBundle 會安裝包、寫入 dsh.profile.bundles 並熱應用,一步完成。
2. CLI(僅安裝,需手動開啓)¶
dsh plugin --profile <profile> add github:miiy/dsh-notify
dsh plugin 在 profile 目錄內轉發給 pnpm,不會自動 compose。插件會出現在 Settings → Plugins 中且默認 關閉;打開開關後纔會加入 dsh.profile.bundles。若開關未即時生效,可重啓 dsh web。純 JavaScript bundle 無 build 腳本,一般無需 allowBuilds 審批。
接受的 spec 形式還包括:git+https://…、託管倉庫 URL、本地絕對路徑、npm 包名等。
3. 本地 checkout 開發¶
見倉庫 MAINTENANCE.md 中 Run from a checkout。
典型用法¶
- 按上文任選方式安裝並啓用插件。
- 打開 Settings → Notifications,勾選需要的渠道並完成憑證(Browser 需點 Allow notifications)。
- 配置觸發項與 Wait before sending,按需編輯消息模板。
- 對每個已保存配置的渠道點 Send test,確認能收到真實測試消息。
- 啓動一個會跑較久或需要中途審批的任務,離開當前會話;在空閒窗口滿足條件後,應能在所選渠道收到對應事件通知。
倉庫內開發者自檢(與日常使用無關,摘自 README):
node --check index.js && node --check client.js
node tests/harness.mjs # host half
node tests/client.mjs # settings page
適用場景與注意¶
適合誰:經常在 DSH 裏跑長回合、需要離開工位又不願漏掉「結束 / 待批 / 待答」的開發者;希望用手機 ntfy 或飛書機器人做輕量提醒的用戶。
權限與安全:插件以當前 dsh 進程 的權限運行,能訪問該進程可訪問的資源。安裝前請閱讀 GitHub 源碼 與 MIT 許可證,自行評估是否滿足環境要求。社區目錄 skillhub.cn 爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。
架構概覽(便於排查問題):Host 半在 index.js 處理會話事件與通知出站;客戶端半在 client.js 提供設置頁、瀏覽器渠道與已讀回執;channels.js 實現 local / ntfy / feishu 發送;配置與校驗在 config.js。
結尾¶
dsh-notify 把 DSH 會話裏的關鍵節點接到本機、瀏覽器、ntfy 與飛書,並用空閒窗口與已讀回執減少誤擾。需要進一步瞭解參數與截圖時,可看倉庫 README 與設置頁說明。