dsh-plugin-notifications:Turn 完成通知與提示音

前言

在使用 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 安裝。

  1. 編輯 $DSH_HOME/profiles/web/package.json。
  2. 在 dependencies 中增加依賴項:
    "dsh-plugin-notifications": "file:<本倉庫路徑>"
  1. 在 dsh.profile.bundles 中增加 bundle 名稱:
    "dsh.profile.bundles": {
      ...
      "dsh-plugin-notifications": {}
    }
  1. 確保 node_modules/dsh-plugin-notifications 可解析到本倉庫。
  2. 重啓 dsh web。若不重啓,Host 將處於未加載狀態,僅瀏覽器側有降級邏輯。

配置

配置通過 Web GUI 卡片或直接編輯 $DSH_HOME/settings.yaml 完成。默認值如下:

notifications:
  enabled: false   # 一輪對話完成後彈系統通知
  sound: true      # 通知時同時播放提示音
  tone: soft       # 音調: soft | crisp | low

使用

  1. 打開 Web GUI → 設置 → 通用 → 對話完成通知。
  2. 開啓「啓用系統通知」,並根據需要開啓提示音並選擇音調。
  3. 點擊「試聽提示音」確認聲音效果。
  4. 首次使用時,在 macOS 系統彈窗中授予通知權限。

注意事項

  • 平臺限制:僅支持 macOS 平臺。
  • 權限行爲:點擊通知不會激活應用窗口,僅提示。
  • 通知行爲:通知僅提示,不打開任何窗口。
  • 配置權限:配置寫入 $DSH_HOME/settings.yaml。settings.mutate RPC 僅放行內置命名空間,第三方插件通過自有路由 GET /notifications/status、POST /notifications/update 讀寫配置。

生態

本插件由 NattoCB 維護,屬於 DSH 生態的一部分,並非 DeepSeek 或幻方官方出品。插件目錄與源碼可在 GitHub 查看。

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

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

小夜