dsh-notify:DSH 跨設備任務通知

前言

在 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 中可分別配置:

  1. Turn completes:回合在 completed / error / max-tokens 時通知;用戶主動停止(aborted)不會提供通知選項。
  2. Waiting for approval:工具調用需要你決策時通知。
  3. 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。

典型用法

  1. 按上文任選方式安裝並啓用插件。
  2. 打開 Settings → Notifications,勾選需要的渠道並完成憑證(Browser 需點 Allow notifications)。
  3. 配置觸發項與 Wait before sending,按需編輯消息模板。
  4. 對每個已保存配置的渠道點 Send test,確認能收到真實測試消息。
  5. 啓動一個會跑較久或需要中途審批的任務,離開當前會話;在空閒窗口滿足條件後,應能在所選渠道收到對應事件通知。

倉庫內開發者自檢(與日常使用無關,摘自 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 與設置頁說明。

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

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

小夜