dsh-notify:給 DeepSeek Harness Web 補上待處理提醒

前言

DSH Web 裏最讓人不安的不是工具跑得慢,而是它太安靜。審批在等你確認、提問在等你回答、方案審閱在等你過一眼——頁面只是停在那裏,沒有任何聲音或浮層。你需要盯窗口、需要點進對應會話,一旦切到別的應用或最小化,就很容易錯過。現有的解決方案往往依賴第三方客戶端或外部監聽腳本,配置成本高於它解決的問題。

下面介紹 HansyLin-xCoFe 維護的 dsh-notify。它做的是同一件事:在 DSH Web 自身頁面內,爲「等待你處理」的狀態加上提示音、右上角浮層卡片和後臺系統通知。

插件歸在 SkillHub 目錄的「客戶端」分類下,採用 MIT 許可證。目錄頁是獨立的社區站點,與 DeepSeek / 幻方沒有官方從屬關係。

它解決什麼問題

DSH Web 本體不帶任何提醒手段。當你離開頁面窗口時,等待狀態只體現爲會話狀態值的變化(approval / question / plan-review),UI 本身沒有視覺或聽覺信號。dsh-notify 監聽這幾個掛起狀態,在它們出現時補上三層提醒:聲音、浮層、系統通知。

一句話定位:把「等你處理」這件事從被動翻頁變成主動提醒,且不需要離開 DSH Web 環境。

能力一覽

下面只列 README 中明確出現的能力。

  1. 觸發條件:approval(審批)、question(提問)、plan-review(方案審閱)開始等待用戶處理時觸發提醒。
  2. 提示音:6 款內置柔和音色,分別爲玻璃 / 風鈴 / 木琴 / 水滴 / 花開 / 脈衝,音量可調;審批音與提問音可分別選擇。默認音色爲「風鈴 / 花開」。音效由純數學 PCM 合成,不依賴音頻文件。
  3. 右上角提醒卡片:半透明浮層,帶有彈簧緩動、背景模糊和懸停微動效。卡片顯示會話名與工具/問題摘要,點「前往處理」直接跳轉到等待中的會話,關閉後收成帶角標的小鈴鐺。
  4. 後臺提醒:窗口不在前臺時可發系統桌面通知(瀏覽器中授權一次),同時讓標籤頁標題閃爍。
  5. 自定義音頻:支持上傳 MP3 / WAV / OGG / M4A,單個文件不超過 1.5 MB。音頻寫入當前瀏覽器的 localStorage,不會上傳到遠端。
  6. 界面語言:中文 / English,跟隨 DSH 的語言設置。

設置項集中在 設置 → 通用 → 提醒,包括總開關、音量、審批音 / 提問音、自定義音頻、試聽、桌面通知開關、橫幅開關、標題閃爍開關和效果預覽。

安裝與啓用

要求:DSH 版本不低於 0.2.1-rc.2,且運行在 Web 形態。

在 DSH Web 的 設置 → 插件 中添加以下 spec:

github:HansyLin-xCoFe/dsh-notify

另一個等價方式是使用 plugin_manager 工具的 install_bundle,target 填同一個 spec。

安裝後刷新一次頁面,到 設置 → 通用 → 提醒 就能看到入口。之後用右側開關啓用即可。

以上是官方 README 寫明的兩種方式,不是從插件名拼出來的命令。

配置與自定義

啓用後進入設置頁,點「設置」展開詳細選項。有三項值得先說清。

  • 「預覽審批提醒」與「預覽提問提醒」會直接彈出卡片並播放對應聲音,用來確認當前音色是否符合預期。
  • 「測試 Windows 通知」會立刻發送一條系統通知,用來驗證瀏覽器的通知權限和 Windows 通知設置。這條測試不受前臺限制,隨時可用。
  • 「允許桌面通知」需要你在瀏覽器彈窗裏允許一次。之後只有窗口不在前臺(切到其它應用或最小化)時纔會發系統通知,避免正盯着頁面時被打斷。

自定義音頻上傳後需要點試聽確認解碼正常。如果瀏覽器自動播放策略限制了音頻解鎖,正常使用 DSH 時會有一次交互在前,通常不會感知到這個限制。

工作原理

插件在瀏覽器側半監聽 Client 的 ctx.uiSession.sessionStatus 源。該源是三種掛起交互的統一發布點。新的 pending key 出現時,插件按順序做三件事:播放對應提示音、在 shell.overlay 槽位渲染右上角卡片、在窗口處於後臺時發系統通知並閃爍標題。

pending 消失(已處理或已撤回)時卡片自動淡出。首幀加載時已經存在的掛起只顯示卡片、不響鈴,避免刷新頁面後重復響;如果掛起在首幀之後才同步到,仍會正常響一次。Host 側(index.js)無路由、無狀態,全部邏輯在瀏覽器端完成,隨頁面啓動加載。

測試與構建

倉庫裏同時包含可安裝產物和源碼。構建與測試命令如下,需要 Node 22 及以上:

node scripts/build-client.mjs            # 構建 client.js
node scripts/build-client.mjs --check    # 只校驗產物是否最新
node scripts/test-client.mjs             # 無瀏覽器行爲測試
node scripts/test-sound-engine.mjs       # 音頻渲染與調度斷言

client.js 由 src/main.js 注入 src/sound-engine.js 生成,README 明確要求不要手改這個文件。最新版本號見倉庫的 package.json。

適用場景與注意

適合日常使用 DSH Web 且需要頻繁處理審批、提問、方案審閱的用戶,尤其是經常切窗口、多任務並行的場景。

需要留意的邊界,全部來自 README:

  • 提醒只在 DSH Web 頁面打開時生效,沒有 Service Worker 推送。關掉頁面後,系統通知不會到達。
  • 偏好設置與自定義音頻保存在當前瀏覽器的 localStorage,跨瀏覽器、跨設備不同步。
  • 桌面通知需要一次性授權,如果被瀏覽器拒絕,需要在站點設置裏恢復。
  • 與其它「等待交互提醒」類插件(README 中提到了 dsh-whale-widget 的等待氣泡)可以並存,同時開啓會各自提醒一次。只想保留一套就關掉另一套。

此外,插件運行在當前 dsh 進程的權限範圍內。安裝任何第三方插件前,建議先打開倉庫目錄審查源碼與許可證。本插件是 MIT 許可證,可以從包的 files 字段列出的文件確認產物範圍。

結尾

dsh-notify 做的事情很窄:在 DSH Web 裏,審批、提問、方案審閱等待用戶處理時給出聲音、浮層和後臺通知。它沒有擴展新的審批邏輯,也不改會話狀態,只是把已經存在但不可感知的等待狀態變得可感知,適合作爲日常體驗的一個補充。

目錄頁:https://www.skillhub.cn/plugins/HansyLin-xCoFe/dsh-notify
GitHub:https://github.com/HansyLin-xCoFe/dsh-notify

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

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

小夜