前言¶
DeepSeek Harness (DSH) 在運行智能體任務時,通常會在後臺持續執行。如果僅僅依賴瀏覽器原生的通知機制,當頁面處於後臺標籤頁、最小化窗口或關閉標籤頁時,通知往往會丟失。這意味着開發者可能錯過任務結束的信號、需要人工決策的時刻,或者任務失敗的報錯信息。
dsh-notify-linux 解決了這個問題。它通過 DSH 的主進程發送系統級通知,確保無論瀏覽器窗口狀態如何,桌面通知和提示音都能準時送達。
插件簡介¶
dsh-notify-linux 是一個爲 DSH 設計的 Linux + GNOME 平臺插件,由開發者 Wlaeg 維護。其核心價值在於:當 DSH 完成一輪任務、需要用戶選擇、等待工具調用批准,或發生錯誤時,通過 notify-send 發送桌面通知,並通過 paplay 或 canberra-gtk-play 播放提示音。
核心功能¶
該插件通過 DSH 的主進程進行通知分發,具備以下能力:
- 事件監聽與通知:監聽四種事件類型,每種類型均可獨立配置:
turnEnd:任務回合結束。question:模型請求用戶進行選擇。approval:工具調用等待人工批准。error:執行步驟或整輪任務失敗。
- 系統級通知:使用
notify-send(依賴 libnotify)發送通知,通知標題和內容包含會話信息(工作區 · 會話 ID)。 - 聲音提示:使用
paplay播放提示音,當paplay不可用時,回退使用canberra-gtk-play。 - 瀏覽器回退機制:當系統通知能力不可用時,使用 Web Notification 和 Web Audio 作爲降級方案,確保通知不丟失。
- 靈活配置:所有開關(包括主開關、事件開關、系統通知開關、聲音開關等)均可通過 DSH 設置頁面的「任務通知」導航項,或直接編輯 JSON 配置文件進行管理。
安裝與啓用¶
這是一個 DSH Cordis 插件包。請通過 DSH 的插件管理器進行安裝。
在終端中執行以下命令,將插件指向本地目錄或 Git 倉庫:
# 方式一:指向本地目錄
plugin_manager install_bundle /home/wlaeg/文檔/deepseek-harness/default-workspace/dsh-notify
# 方式二:指向 Git 倉庫
plugin_manager install_bundle https://github.com/Wlaeg/dsh-notify-linux
安裝完成後,插件即處於激活狀態。爲使瀏覽器端(設置頁面、Toast 彈窗)生效,請刷新 DSH 的 Web UI 頁面。
配置與使用¶
配置文件¶
所有配置選項存儲在單個 JSON 文件中:
$DSH_PROFILE_DIR/dsh-notify-linux
該文件默認位於 ~/.dsh/profiles/web/dsh-notify-linux.json。配置文件採用原子寫入模式,可以直接編輯並保存。
設置頁面¶
在 DSH 的設置頁面中,導航至「任務通知」部分。這裏包含主開關、四個事件類型的獨立開關、系統通知/聲音開關、主題選擇以及「測試」按鈕。設置頁面支持中英文本地化。
環境要求與注意事項¶
系統依賴¶
- 平臺:Linux + GNOME(已在 Manjaro GNOME、Wayland 環境下驗證)。
- 運行環境:Node.js 版本需大於等於 22。
- 外部工具:
notify-send(來自 libnotify)。paplay(來自 pulseaudio-utils)或canberra-gtk-play(來自 libcanberra)。- 聲音文件路徑:
/usr/share/sounds/freedesktop/stereo。
注意事項¶
- 後臺運行:通知由 DSH 主進程發送,因此即使瀏覽器頁面關閉,通知依然有效。
- 語言:當前通知字符串爲中文。
- 插件替換:若要替換已安裝的插件副本(例如修改源碼後),必須重啓 DSH 的宿主進程。僅刷新 Web UI 頁面是不夠的,舊的路由和處理器會繼續運行。
- 依賴可選性:插件具備優雅降級能力。如果系統缺少
notify-send或paplay,插件不會阻塞任務執行,而是回退到瀏覽器端的 Web Notification 和 Web Audio。
總結¶
dsh-notify-linux 通過系統級的通知機制,解決了 DSH 在後臺運行時信息反饋不及時的問題。它提供了清晰的四種事件反饋,並支持靈活的配置,適合需要在 Linux 環境下長時間運行 DSH 任務的開發者使用。