前言¶
DeepSeek Harness (DSH) 的通知插件通常運行在渲染層(瀏覽器頁面內的 JS)。當你把標籤頁切走、關閉瀏覽器窗口,或者最小化 DSH 時,這類通知就會失效。這恰好是你最需要被叫回來處理任務的時候。
dsh-win-notify 插件運行在宿主層(Cordis host 半身),即 DSH 的主進程。事件在進程內直接產生,不經過瀏覽器。因此,前臺窗口是否打開、標籤頁是否在瀏覽器中,都不影響通知送達。它利用 Windows 原生 Toast API,提供對話完成、子代理狀態、後臺任務等事件的通知。
核心功能¶
插件通過監聽 DSH 的宿主事件觸發通知,覆蓋以下場景:
- 對話事件:對話回合完成、出錯或中斷。
- 子代理事件:子任務完成或異常結束。
- 後臺任務:任務完成、失敗或取消。
- 用戶交互:模型提問、工具審批請求。
- 通知特性:
- 前臺探測:默認
auto模式下,通過 Win32 API 探測前臺窗口,正在看 DSH 時不彈窗。可設爲always或never。 - 合併與去重:同一工作區短時間內的多會話完成會合併爲一條通知;後臺任務與回合完成也會合並。
- 速率控制:支持全局速率配額(
minIntervalMs/ratePerMinute)和免打擾時段(quietHours)。 - 音效:使用 Windows 系統具名音效(
Notification.*),按事件區分(完成、提問、審批、出錯)。 - 點擊行爲:Desktop 配置下點擊通知抬回窗口;其他場景打開帶鑑權 token 的 Web UI。
- 前臺探測:默認
安裝與啓用¶
插件包名爲 @zhang-tod/dsh-win-notify。
CLI 安裝¶
適用於 web、headless、sdk、acp 及自建配置檔:
dsh plugin --profile <profile> add @zhang-tod/dsh-win-notify
安裝完成後,必須重啓 DSH 才能加載宿主層插件。
Desktop 安裝¶
DSH Desktop 的配置檔由 Electron 應用獨佔管理,CLI 命令會被拒絕。請通過應用內入口操作:
- 側欄點擊 插件。
- 點擊 Add plugin,輸入
@zhang-tod/dsh-win-notify。 - 安裝後啓用該 bundle,隨後重啓 DSH。
配置方法¶
配置文件位於配置檔的 cordis.patch.yml 中。按以下格式編寫:
id: dsh-win-notify
config:
# 前臺探測模式:auto (默認), always, never
mode: 'auto'
# 是否開啓對話回合通知
turns: true
# 是否開啓子代理通知
subagents: true
# 是否開啓後臺任務通知
jobs: true
# 是否開啓提問通知
questions: true
# 是否開啓審批通知
approvals: true
# 是否播放音效
sound: true
# 端口:0 表示自動獲取 DSH 實際端口,不要寫死
port: 0
# 免打擾時段,如 "23:00-07:30",支持跨午夜
quietHours: ""
# 免打擾時段內是否放行緊急事件(提問/審批)
quietUrgent: true
# 全局速率限制:相鄰通知最小間隔毫秒數
minIntervalMs: 3000
# 合併窗口:同工作區多會話完成合並的時間窗口
mergeWindowMs: 3000
限制與不做¶
插件有明確的能力邊界,使用前需瞭解:
- 平臺限制:僅支持 Windows,不支持 macOS 或 Linux。
- 音效限制:音效不可自定義,必須使用 Windows 系統具名音(
Notification.*前綴)。sound僅是開關,不能更改音色。 - 審批限制:不支持 toast 按鈕一鍵審批;不支持常駐通知(
scenario="reminder")。 - 點擊限制:點擊通知不會跳轉到具體會話,僅打開 DSH 主界面(Desktop 下抬回窗口)。
- 權限依賴:若 DSH 處於全權限模式(
approval: never),系統層面不會發出審批請求,插件自然收不到通知。 - 安裝限制:Desktop 配置檔不能通過 CLI 的
--profile desktop安裝,必須走應用內設置。 - 技術細節:
- 不聲明
@deepseek-ai/dsh-*peerDependencies。 - 不提供圖形設置頁,配置直接寫
cordis.patch.yml。 - 通知歸屬可能顯示爲通用值(取決於系統註冊的應用標識)。
- 前臺探測可能因窗口標題被修改而失效。
- 不聲明
總結¶
dsh-win-notify 爲 Windows 上的 DSH 提供了可靠的宿主層通知能力,解決了瀏覽器關閉後消息丟失的問題。它通過合併、去重和速率控制,保持了通知系統的整潔。由於依賴 Windows 原生 API,其配置較爲底層,需要直接編輯 cordis.patch.yml。