前言¶
在使用 DeepSeek Harness (DSH) 進行對話開發或日常使用時,對話通常在後臺運行。如果 Web GUI 關閉或切換到其他窗口,很難即時獲知一輪對話是否完成。本插件通過 Host 進程向 macOS 系統發送通知,即使 GUI 不可見也能接收反饋。
核心功能¶
對話完成通知
Host 進程監聽 agent/status 事件,在根會話從 running 變爲 idle 的邊沿觸發。使用 terminal-notifier 彈出系統通知,標題爲會話名,正文爲助手回覆(超過 60 字符的標題或 200 字符的正文會被截斷)。僅根會話觸發,跳過 subagent 與 automation 驅動的回合。點擊通知不會激活應用窗口,僅作爲提示。
合成提示音
插件不依賴外部音頻文件,而是進程內合成 16-bit PCM 單聲道 WAV 提示音(44.1kHz,20ms 線性起音 + 指數衰減,音符間隔 120ms)。該提示音與 Settings 卡片中的 Web Audio 試聽參數完全一致,離線可用,通過 terminal-notifier -sound 播放。
Settings 卡片
卡片渲染於「設置 → 通用」的 settings.general.item 插槽,提供中英雙語界面。包含「啓用系統通知」開關、「播放提示音」開關、音調選擇(柔和 / 清脆 / 低沉)以及「試聽提示音」按鈕。該按鈕同時作爲用戶手勢觸發瀏覽器通知授權。
持久化與降級
配置寫入 $DSH_HOME/settings.yaml,命名空間爲 notifications。在 Host 加載前,使用瀏覽器 monitor + localStorage 進行降級處理;Host 加載後接管通知邏輯,避免雙重通知。
安裝¶
在安裝前,請確保已安裝 terminal-notifier。該插件對 Homebrew 安裝的 terminal-notifier 路徑進行了硬編碼(/opt/homebrew/bin/terminal-notifier),請通過 brew install terminal-notifier 安裝。
- 編輯
$DSH_HOME/profiles/web/package.json。 - 在
dependencies中增加依賴項:
"dsh-plugin-notifications": "file:<本倉庫路徑>"
- 在
dsh.profile.bundles中增加 bundle 名稱:
"dsh.profile.bundles": {
...
"dsh-plugin-notifications": {}
}
- 確保
node_modules/dsh-plugin-notifications可解析到本倉庫。 - 重啓
dsh web。若不重啓,Host 將處於未加載狀態,僅瀏覽器側有降級邏輯。
配置¶
配置通過 Web GUI 卡片或直接編輯 $DSH_HOME/settings.yaml 完成。默認值如下:
notifications:
enabled: false # 一輪對話完成後彈系統通知
sound: true # 通知時同時播放提示音
tone: soft # 音調: soft | crisp | low
使用¶
- 打開 Web GUI → 設置 → 通用 → 對話完成通知。
- 開啓「啓用系統通知」,並根據需要開啓提示音並選擇音調。
- 點擊「試聽提示音」確認聲音效果。
- 首次使用時,在 macOS 系統彈窗中授予通知權限。
注意事項¶
- 平臺限制:僅支持 macOS 平臺。
- 權限行爲:點擊通知不會激活應用窗口,僅提示。
- 通知行爲:通知僅提示,不打開任何窗口。
- 配置權限:配置寫入
$DSH_HOME/settings.yaml。settings.mutateRPC 僅放行內置命名空間,第三方插件通過自有路由GET /notifications/status、POST /notifications/update讀寫配置。
生態¶
本插件由 NattoCB 維護,屬於 DSH 生態的一部分,並非 DeepSeek 或幻方官方出品。插件目錄與源碼可在 GitHub 查看。