前言¶
DeepSeek Harness 運行在 Node.js 環境中。在 macOS 上,命令行輸出與桌面交互有限。dsh-macos-notify 插件通過原生通知中心將 Harness 的運行狀態反饋到系統桌面,並提供了一套完整的過濾與音效配置機制。
插件介紹¶
這個插件提供原生 macOS 通知,支持按事件類型播放不同音效、通知過濾、多任務合併以及 DSH Web UI 內的一級設置頁面。由 CrombastiC 維護,許可證爲 MIT。
安裝與啓用¶
安裝只需執行以下命令:
npx -y @deepseek-ai/dsh plugin --profile web add dsh-macos-notify
安裝後,在 DSH 的 Web 界面設置導航中打開 Settings → macOS notifications。
若要移除插件,執行:
npx -y @deepseek-ai/dsh plugin --profile web remove dsh-macos-notify
核心功能¶
事件通知與音效¶
插件會在以下情況觸發通知中心彈窗:
* 任務回合完成
* 任務失敗或被阻塞
* 任務等待批准
* 任務被中止
針對不同事件,支持設置不同的系統音效。任何事件都可以被靜音。在設置頁面的音效選擇器中,可以使用系統自帶音效,並通過 afplay 命令在頁面內預覽。支持導入自定義音效,文件會被轉換爲 AIFF 格式,限制爲 5MB 大小和 10 秒時長,最多管理 20 個文件,總容量限制 50MB,存儲在 ~/Library/Sounds。
過濾與合併策略¶
爲了避免並行任務淹沒通知中心,插件內置了合併機制:
* 合併窗口:默認 1.5 秒的合併窗口,在此期間的結果會合併爲一條通知。
* 摘要模式:可選的定期摘要功能。
* 重複錯誤抑制:可配置冷卻窗口,抑制同一會話內的重複錯誤通知。
項目規則與過濾¶
通過項目路徑規則,可以精細化控制通知行爲:
* 靜音:完全屏蔽指定路徑下的所有通知。
* 僅錯誤:僅允許錯誤、阻塞事件和批准請求的通知。
* 重要項目: bypass 最小持續時間、焦點、空閒時間、安靜時段和臨時暫停等過濾器。
此外,還支持:
* 最小回合時長過濾:避免回覆時間過短(默認 30 秒)觸發通知。
* Web 標籤頁焦點抑制:當 DSH Web 界面有標籤頁處於聚焦狀態時,抑制完成通知。
* HID 空閒時間 gating:要求鍵盤或鼠標空閒一定時間(默認 0 秒)後才發送完成通知。
安靜時段與診斷¶
- 安靜時段:支持每日的本地時間安靜時段,並可選擇在安靜時段內繼續發送錯誤和批准通知。
- 臨時暫停:支持自定義時長的臨時暫停,並顯示剩餘時間。
- 通知診斷:設置頁面會記錄最近 50 條決策(發送、排隊、抑制、失敗)及原因,數據持久化至
~/Library/Application Support/dsh-macos-notify/state.json,並在重啓後保持。
終端支持¶
插件支持 OSC 9 通知協議,兼容 iTerm2、WezTerm、Kitty、Ghostty、Warp 等終端,以及通過 DCS passthrough 支持的 tmux 會話。
注意事項¶
- 系統限制:插件僅支持 macOS。原生通知依賴
osascript,自定義音效導入依賴 macOS 音頻工具。 - 音效行爲差異:在 OSC 9 渠道下,終端控制音效的播放與否及方式,此時忽略插件內的單事件音效選擇。
- Web 設置通道:Web 設置頁面使用受信任的
/macos-notifyRPC 通道,這是由於當前 DSH Web 設置代理對內置設置有命名空間白名單限制。 - 音效管理:僅 v0.2.0 及之後導入的音效會被標記爲“管理音效”。手動複製到
~/Library/Sounds的舊文件在刪除插件後仍會保留,需手動清理。
結語¶
該插件解決了 DSH 在 macOS 上缺乏原生反饋的問題,通過豐富的過濾和音效配置,讓任務狀態通知更加可控。源碼與目錄可訪問:[GitHub 鏈接]。