前言¶
DSH 的核心理念是「一切皆插件」。在實際使用中,智能體會話經常需要等待用戶操作,例如等待權限批准、回答問題或確認 Plan 方案。如果此時應用窗口被最小化或切換到了其他任務,用戶往往無法及時感知到這些待處理事項。
@camusugar/dsh-notify 插件通過監聽會話狀態和窗口焦點變化,在應用窗口失焦時觸發操作系統級的通知(Windows Toast / macOS 通知中心),從而解決這一問題。
插件簡介¶
- 名稱:
@camusugar/dsh-notify - 定位:DSH 用戶級插件,用於在會話等待用戶操作且應用窗口失焦時彈窗。
- 維護者:Camusugar
- 許可證:MIT
核心功能¶
該插件不修改 DSH 本體,完全通過插件機制實現,具體特性如下:
- 純事件驅動:通過訂閱
uiSession.sessionStatus和監聽 DOM 事件(visibilitychange/blur/focus)來觸發通知,沒有任何定時器或輪詢機制。 - 零侵入安裝:隨 profile 安裝,不改動 DSH 核心代碼,應用升級後配置保留。
- 容錯設計:如果
uiSession服務缺失或發生錯誤,插件會靜默禁用,不會向系統拋出異常或導致應用崩潰。 - 去重與限制:按 key 對通知進行去重,單個會話最多顯示 16 條通知,超出部分會靜默抑制。
- 多會話併發:支持同時處理多個會話。每個會話有獨立的狀態快照和通知,不同會話的 key(如
approval:N/question:N)通過全局遞增計數器保證跨會話唯一。各會話的通知獨立彈出和關閉。 - 自動語言切換:根據
navigator.language自動選擇中文或英文文案。
安裝與啓用¶
使用官方安裝命令即可添加該插件:
dsh plugin add https://github.com/Camusugar/dsh-notify
插件安裝後會自動加載,無需額外配置。
典型用法¶
當滿足以下條件時,插件會自動觸發系統通知:
* 會話處於等待權限批准狀態。
* 會話處於等待用戶回答問題(ask_user_question)的狀態。
* Plan 模式下處於方案確認階段。
* 應用窗口最小化、切換到別的窗口或失焦。
技術細節與注意事項¶
- 通知機制:使用標準 Web Notification API,理論上支持跨平臺。
- 依賴要求:需要注入依賴
@deepseek-ai/dsh-client-ui-session。 - macOS 限制:macOS 平臺要求應用必須爲簽名構建,否則通知中心可能無法正常工作。
- 卸載方式:
- 退出應用。
- 編輯配置文件(Windows 路徑:
C:\Users\<用戶名>\.dsh\profiles\desktop\package.json):從dsh.profile.bundles和dependencies中刪除@camusugar/dsh-notify。 - (可選)刪除同目錄下的
node_modules\@camusugar。 - 重啓應用。
故障恢復¶
如果插件導致應用啓動失敗,可使用內置恢復功能:
1. 啓動失敗時,在錯誤對話框中選擇「禁用全部插件並重啓」。
2. 應用會將 cordis.patch.yml 備份爲 cordis.patch.yml.bak-<時間戳>,並將 dsh.profile.bundles 重置爲默認值。
3. 重啓後可重新安裝本插件。
如果需要手動恢復自定義配置,請按照上述卸載步驟操作。
總結¶
該插件通過輕量級的事件監聽和系統通知機制,提升了 DSH 在多任務處理時的可用性。適合需要頻繁處理多個會話或長時間運行 Agent 任務的用戶。源碼與文檔見:GitHub。