dsh-notify-bridge:DSH 桌面通知與 Discord 轉發

前言

在 DeepSeek Harness(DSH)裏跑長任務時,審批卡片、定時提醒和任務完成往往發生在當前標籤頁之外:窗口失焦、切到其他應用,或者整頁關掉後,只靠頁面內提示很容易漏掉。社區裏另有獨立通知類插件;dsh-notify-bridge 走另一條路——自帶通知引擎,並把審批、日程、待辦和 Token 用量橋接到 Discord Bot,便於離席時仍能處理與彙總。

下面按定位、能力、安裝配置和注意點介紹該插件。事實以 GitHub 倉庫 README 爲準;維護者爲 harienlook,SkillHub 分類爲客戶端。

這是什麼

dsh-notify-bridge 是 DSH 的通知與 Discord 轉發插件:在客戶端側提供桌面通知、提示音、標籤頁標題標記和審批快捷按鈕;在宿主側把審批、定時任務提醒、待辦摘要、/goal 開始提示等轉發到 Discord,並在已執行任務的提醒末尾附上本次任務的 Token 用量。

README 明確寫:完全獨立實現,不依賴 dsh-notify-me;兩者可共存,互不影響。 許可證 MIT,當前包版本 0.1.0。運行要求:DSH Desktop 0.2.2-rc.1(桌面/Web 均可)、Node ≥ 20;使用 Discord 轉發時需自行準備 Bot Token、頻道 ID 與用戶 ID。

獨立通知引擎

設置 → 通知設置 → 通知提醒 由插件自帶引擎驅動,無需再裝其他通知插件。配置存在 localStorage[dshNotifyBridge.config],與 dsh-notify-me 的配置隔離。

觸發源來自 DSH uiSession 的待處理交互(審批、提問、計劃複覈)以及 sessionStatus.completionUnread 完成標記;插件訂閱會話列表快照做去重與標題解析。

提醒方式包括:右上角頁內 toast(審批類帶「同意 / 拒絕」,直接調用 DSH answer('allowed-once' | 'rejected'))、系統通知(Windows 通知中心)、WebAudio 雙音提示。標籤頁標題用 ● 表示待處理、✓ 表示完成未讀,讀後恢復。

離席策略可按配置選擇:background 僅在離開時提醒,smart 跳過當前會話,always 總是提醒。默認忽略子代理會話的完成提醒。通知語言支持 auto、簡體中文與 English。

審批橋與 Discord 轉發

審批橋:頁面有實時客戶端時走 DSH 原生審批卡片;頁面關閉時發 Discord 卡片,點擊後真實結算爲 allowed-once / rejected;超時爲 unavailable,中斷爲 cancelled。審批模式可設爲 auto(在線原生、離線 Discord)或 always(總是 Discord)。

定時任務:轉發 DSH 原生 schedule 的單條與批量提醒(提醒本身不附 Token,任務尚未執行)。

任務完成:turn/end 推送完成摘要並附本次任務 Token;定時任務執行完成後同樣附 Token。

待辦摘要:每天固定時間讀取 dsh-memory-evolve 的待辦文件,只發未完成項;空列表不發。

Goal:檢測 goal/change 的 create,發送「任務開始執行」提示(不附 Token)。

Token 用量:每條已執行提醒末尾追加「本次任務 / 會話累計 / 本日」,數據來自 assistant/message.usage,並用 DSH tokenUsage 投影校正;未執行的定時任務、待辦摘要與 goal 開始提示不附 Token。

除 Discord Bot 外,README 還列出多通道:Discord webhook、Bark、Gotify、飛書、ServerChan、WxPusher、自定義 webhook(HMAC 簽名)。Bot 就緒後會在頻道發一條按鈕控制面板(狀態 / Tokens / 任務 / 記憶包),默認不註冊斜槓命令。

安裝與啓用

安裝後必須把 dsh-notify-bridge 加入 dsh.profile.bundles,並完整重啓 DSH Desktop(含托盤退出)。

方式一:從 GitHub 安裝(推薦)

在 desktop profile 的 package.json 中增加依賴與 bundle:

{
  "dependencies": {
    "dsh-notify-bridge": "git+https://github.com/harienlook/dsh-notify-bridge.git"
  },
  "dsh": {
    "profile": {
      "bundles": ["...", "dsh-notify-bridge"]
    }
  }
}

在 profile 目錄執行 pnpm install,再重啓 DSH Desktop。

"dsh-notify-bridge": "link:<你的工作區>/dsh-notify-bridge"

方式三:Releases 的 tgz

到 Releases 下載 dsh-notify-bridge-0.1.0.tgz:

cd ~/.dsh/profiles/desktop
pnpm add ~/Downloads/dsh-notify-bridge-0.1.0.tgz

同樣需把 bundle 寫入 profile 並重啓。

配置

重啓後打開 DSH 設置 → 通知設置。通知提醒 Tab 修改後即時生效;Discord Tab 保存後需重啓 DSH Desktop 才生效。配置寫入 ~/.dsh/notify-bridge/config.json;Bot Token 寫入 ~/.dsh/notify-bridge/discord.json,設置頁不回顯 Token。

通知提醒 Tab(節選)

字段 說明
啓用提醒 總開關
提示音 / 音量 WebAudio 雙音
審批快捷按鈕 toast 上「同意 / 拒絕」
回覆完成 background / smart / always
離開判定(分鐘) 無輸入多久算離開
測試按鈕 立即彈測試通知

Discord Tab(節選)

字段 說明
Bot Token 留空表示不修改已存 Token
頻道 ID 通知、控制面板、審批卡片
你的用戶 ID 限制誰可點審批與查詢
代理 僅 HTTP/HTTPS;示例 http://127.0.0.1:7897
審批模式 auto / always
轉發開關 回覆完成、審批、goal、定時任務、待辦摘要
待辦時間 24 小時制 HH:MM
Token 時區 本日統計與待辦日期

環境變量 DSH_NOTIFY_BRIDGE_PROXY 可作代理兜底(顯式配置優先)。插件不會自動讀取系統代理或 HTTP_PROXY;socks5 不支持,非法代理會導致 Bot 不啓動並在健康頁報錯。

Discord 準備(簡要步驟)

  1. Discord Developer Portal 創建應用 → Bot → Reset Token。
  2. OAuth2 URL Generator:scope=bot,permissions=52224(View Channels、Send Messages、Embed Links、Attach Files),邀請到服務器。
  3. 開啓 Developer Mode 後複製頻道 ID、你的用戶 ID。
  4. 在 DSH 設置 → 通知設置 → Discord 粘貼 Token、頻道 ID、用戶 ID。

健康頁與自測

在 loopback 上提供診斷與日誌(端口爲當前 DSH Web 端口):

http://127.0.0.1:<DSH Web 端口>/__dsh-notify-bridge/
http://127.0.0.1:<DSH Web 端口>/__dsh-notify-bridge/health
http://127.0.0.1:<DSH Web 端口>/__dsh-notify-bridge/logs?limit=50

健康 JSON 中的 clientDebug 可判斷設置頁客戶端 bundle 是否執行;stage = registered 表示設置頁已註冊。Proxy 卡片會標明代理來源或錯誤,便於排查 Discord 連不上問題。

適用場景與注意

適合誰:需要在離席或關頁時仍能收到審批與任務結果、並希望把摘要彙總到 Discord(或配置的其他 webhook 通道)的 DSH 用戶;本地仍想要系統通知、提示音和標題角標,且不想依賴 dsh-notify-me 的單插件方案。

運行與安全:插件以當前 DSH 進程權限運行,會讀寫 ~/.dsh/notify-bridge/ 下配置與狀態;安裝前宜自行審閱 源碼與 MIT 許可證。健康路由與設置 API 僅允許 loopback;Token 不進日誌與健康頁。

已知邊界(來自 README):Discord 側需能訪問 discord.com,國內環境常需正確配置 HTTP 代理;/goal 開始提示依賴 DSH goal/change 事件,其他插件替換 goal 命令時可能收不到;「記憶包」會把 ~/.dsh/memories 打成 ZIP 發到當前頻道,公開頻道勿點;系統通知上的快捷審批在頁內 toast,而非 OS 通知按鈕本身。

DSH 生態主張「一切皆插件」;SkillHub 插件目錄 爲社區站點,與 DeepSeek / 幻方無官方從屬關係。

結尾

dsh-notify-bridge 把客戶端提醒和 Discord(及可選 webhook)串成一條鏈路:就近處理審批,遠端收摘要與 Token,並用健康頁把 Bot、代理和客戶端狀態攤開。若要查看分類與簡介,可打開 SkillHub 目錄頁;安裝與細節以 GitHub 倉庫 README 爲準。

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

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

小夜