dsh-desktop-notify:在系統通知裏完成 DSH 審批與提醒

前言

用 DeepSeek Harness(DSH)跑智能體時,權限確認、提問和任務結束往往發生在瀏覽器標籤頁裏。窗口被別的應用擋住,或你只是暫時切走,很容易漏掉「允許一次」或回答提問。DSH 自帶應用內審批面板能兜底,但你得先切回窗口。

下面介紹社區插件 dsh-desktop-notify(倉庫 HonestShine/dsh-desktop-notify)。它把審批、提問、完成與錯誤提醒接到操作系統原生通知裏;在 Windows 上還能在通知條上直接點「拒絕 / 允許一次」。插件歸類爲客戶端方向,維護者爲 HonestShine;在 SkillHub 目錄頁可查簡介與鏈接(skillhub.cn 條目)。目錄站爲社區聚合,與 DeepSeek / 幻方無官方從屬關係。DSH 本身提倡「一切皆插件」,本插件即其一例。

這是什麼

dsh-desktop-notify 是 DSH 的桌面原生通知插件(npm 包名 @honorshine/dsh-desktop-notify,當前資料中版本 0.1.1,MIT 許可)。一句話定位:在系統通知中處理權限審批按鈕,併爲任務完成、提問與會話錯誤提供可配置的提醒與鈴聲。

Host 側註冊 Cordis 服務 ctx.desktopNotify,其他插件也可調用 show() 彈出帶按鈕的通知;Client 側在 設置 → 通知提醒 提供配置頁(鈴鐺圖標)。

核心功能

跨平臺實現

平臺 通知顯示 內聯按鈕
Windows WinRT toast(PowerShell) 支持,dshnotify: 協議 + VBS 回傳
macOS terminal-notifier 支持
Linux notify-send 需 libnotify 0.7.10+ 且守護進程支持 actions

權限審批

  • 權限類通知附帶「拒絕」「允許一次」,點擊結果回到 Host 的 approval/request waterfall。
  • 默認僅窗口不在前臺時由插件接管;窗口在前臺、用戶切回或通知超時後,退回 DSH 原生審批面板。
  • 交互提示音與通知鈴聲分開配置,窗口在前臺也會響(便於你在應用內面板旁聽到待處理事項)。

其他提醒

提問(含 ask_user_question)、根會話任務完成(running → idle)、根會話 agent/error 均可單獨開關,並可限制爲「僅後臺」提醒。通知正文優先用會話標題,否則用工作目錄名。

鈴聲與離開判定

  • 通知鈴聲:system / bundled / custom / none,設置頁可試聽。
  • 交互提示音:默認內置 alert.wav,模式爲 bundled / custom / none。
  • 前臺無鍵鼠輸入超過設定秒數視爲離開(默認 180 秒,0 關閉),用於配合「僅後臺」邏輯。

Windows 特有

自動讀取安裝包註冊的 DeepSeek Harness.lnk 的 AppUserModelID,讓 toast 顯示應用名與圖標;設置頁可修復 dshnotify: 協議並打開系統通知設置。

DSH 版本

資料記載已在 0.2.0-rc.2 / 0.2.1-rc.5 / 0.2.2-rc.1 上審計適配;0.2.2+ 使用原生 settings.section.icon,更早版本用 DOM 補丁顯示鈴鐺。若組合未注入 configForms,通知與審批仍可用,只是沒有設置頁。

安裝與啓用

安裝前請自行查閱倉庫源碼與 MIT 許可證。插件在 當前 DSH 進程權限下運行(Windows 上會寫當前用戶註冊表、調用 wscript.exe 等),安裝前確認你可接受其行爲。

任選一種方式安裝;裝完後重啓 dsh web(桌面端則完全退出後重開),瀏覽器 F5 刷新,在 設置 → 通知提醒 中配置。

從 GitHub 安裝(一條命令)

適用於無需本地解壓目錄的場景:

dsh plugin --profile web add github:HonestShine/dsh-desktop-notify

固定版本示例(資料原文):

dsh plugin --profile web add github:HonestShine/dsh-desktop-notify#v0.1.1

需要 Node.js ^22.22.2 || ^24.15.0 || >=26.0.0(寫在 package.json 的 engines 中)。

從 npm 安裝

dsh plugin --profile web add @honorshine/dsh-desktop-notify

或:

dsh plugin --profile web add @honorshine/dsh-desktop-notify@0.1.1

本地目錄或 Release 包

完整目錄(含 package.json、cordis.patch.yml、lib/、assets/)可先卸載同名插件,再用絕對路徑安裝,例如:

dsh plugin --profile web remove dsh-desktop-notify
dsh plugin --profile web add link:D:\Plugins\dsh-desktop-notify

macOS/Linux 在 link: 安裝前若目錄無 node_modules,需在插件目錄執行 pnpm install。Release 中的 .tgz 也可用 file: 路徑安裝。

說明:上述命令的 profile 爲 web。桌面 Electron 的 desktop profile 由應用內置插件管理,CLI 會拒絕 --profile desktop。

卸載:

dsh plugin --profile web remove dsh-desktop-notify

典型用法

在系統通知裏批權限

  1. 把 DSH 窗口切到後臺或最小化。
  2. 觸發需要審批的工具操作。
  3. 在系統通知中點擊「拒絕」或「允許一次」。
  4. 若切回 DSH 前臺,通知會關閉,改由應用內審批面板處理。

窗口在前臺時不彈審批通知,但交互提示音仍會按配置播放。

在設置頁調行爲

在 設置 → 通知提醒 中切換各類提醒與鈴聲;高級項含 Windows AppUserModelID、macOS 定製 terminal-notifier 路徑等。

配置文件寫在 profile 的 cordis.patch.yml,entry id 爲 desktop-notify。常用字段如下(完整表見倉庫中文文檔):

字段 默認值 說明
enabled true 插件總開關
approval.enabled true 接管權限確認通知
approval.onlyWhenHidden true 僅窗口不在前臺時接管
approval.timeoutSeconds 30 通知等待上限(5–300)
events.question / turnEnd / errors true 提問、完成、錯誤提醒
events.onlyWhenHidden true 上述三類僅後臺
sound.mode bundled system / bundled / custom / none
attention.enabled true 交互提示音(前臺也響)
presence.idleSeconds 180 無輸入視作離開的秒數;0 關閉

給其他插件複用通知

Host 註冊 ctx.desktopNotify 後,其他插件可調用 show() 展示帶按鈕的通知(細節見倉庫「架構」一節)。

適用場景與注意

適合誰: 長時間開多個應用、希望 DSH 在後臺仍能通過系統通知處理「允許一次」或聽到待辦提示的開發者;Windows 用戶最能享受帶頭像的應用名 toast 與內聯按鈕。

平臺注意:

  • macOS 通知發送方顯示爲 terminal-notifier,不是 DeepSeek Harness(node-notifier 3 的限制);可自行構建帶圖標的 notifier 並在設置中填寫路徑。
  • Linux 無 actions 支持時按鈕不可用,會退回應用內面板。
  • Windows 自定義通知音頻僅支持 WAV;按鈕回傳依賴 Host 進程存活,退出後舊通知按鈕不再處理。

安全與合規: 不要憑包名臆造安裝命令;Windows 協議註冊位於 HKCU\Software\Classes\dshnotify。安全軟件攔截 wscript.exe 會導致按鈕失效,可在設置頁嘗試「修復通知按鈕協議」。

結尾

dsh-desktop-notify 把 DSH 的審批與狀態變化接到操作系統通知層,並在 Windows 上儘量保持與安裝包一致的應用身份。若你已在用 DSH 0.2.x RC,可從 GitHub 或 npm 安裝後於 設置 → 通知提醒 按需開關。

  • 目錄頁:https://www.skillhub.cn/plugins/HonestShine/dsh-desktop-notify
  • 倉庫與文檔:https://github.com/HonestShine/dsh-desktop-notify(中文說明:docs/README.zh-CN.md)
羽毛球分组比赛记分
小程序二维码

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

小夜