@camusugar/dsh-notify:DSH 會話等待時的系統通知插件

前言

DSH 的核心理念是「一切皆插件」。在實際使用中,智能體會話經常需要等待用戶操作,例如等待權限批准、回答問題或確認 Plan 方案。如果此時應用窗口被最小化或切換到了其他任務,用戶往往無法及時感知到這些待處理事項。

@camusugar/dsh-notify 插件通過監聽會話狀態和窗口焦點變化,在應用窗口失焦時觸發操作系統級的通知(Windows Toast / macOS 通知中心),從而解決這一問題。

插件簡介

  • 名稱:@camusugar/dsh-notify
  • 定位:DSH 用戶級插件,用於在會話等待用戶操作且應用窗口失焦時彈窗。
  • 維護者:Camusugar
  • 許可證:MIT

核心功能

該插件不修改 DSH 本體,完全通過插件機制實現,具體特性如下:

  1. 純事件驅動:通過訂閱 uiSession.sessionStatus 和監聽 DOM 事件(visibilitychange / blur / focus)來觸發通知,沒有任何定時器或輪詢機制。
  2. 零侵入安裝:隨 profile 安裝,不改動 DSH 核心代碼,應用升級後配置保留。
  3. 容錯設計:如果 uiSession 服務缺失或發生錯誤,插件會靜默禁用,不會向系統拋出異常或導致應用崩潰。
  4. 去重與限制:按 key 對通知進行去重,單個會話最多顯示 16 條通知,超出部分會靜默抑制。
  5. 多會話併發:支持同時處理多個會話。每個會話有獨立的狀態快照和通知,不同會話的 key(如 approval:N / question:N)通過全局遞增計數器保證跨會話唯一。各會話的通知獨立彈出和關閉。
  6. 自動語言切換:根據 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 平臺要求應用必須爲簽名構建,否則通知中心可能無法正常工作。
  • 卸載方式:
    1. 退出應用。
    2. 編輯配置文件(Windows 路徑:C:\Users\<用戶名>\.dsh\profiles\desktop\package.json):從 dsh.profile.bundles 和 dependencies 中刪除 @camusugar/dsh-notify。
    3. (可選)刪除同目錄下的 node_modules\@camusugar。
    4. 重啓應用。

故障恢復

如果插件導致應用啓動失敗,可使用內置恢復功能:
1. 啓動失敗時,在錯誤對話框中選擇「禁用全部插件並重啓」。
2. 應用會將 cordis.patch.yml 備份爲 cordis.patch.yml.bak-<時間戳>,並將 dsh.profile.bundles 重置爲默認值。
3. 重啓後可重新安裝本插件。

如果需要手動恢復自定義配置,請按照上述卸載步驟操作。

總結

該插件通過輕量級的事件監聽和系統通知機制,提升了 DSH 在多任務處理時的可用性。適合需要頻繁處理多個會話或長時間運行 Agent 任務的用戶。源碼與文檔見:GitHub。

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

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

小夜