前言¶
用 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/requestwaterfall。 - 默認僅窗口不在前臺時由插件接管;窗口在前臺、用戶切回或通知超時後,退回 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
典型用法¶
在系統通知裏批權限¶
- 把 DSH 窗口切到後臺或最小化。
- 觸發需要審批的工具操作。
- 在系統通知中點擊「拒絕」或「允許一次」。
- 若切回 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)