前言¶
DeepSeek Harness (DSH) 的插件生態允許在瀏覽器端擴展交互能力。在開發智能體或工具時,Agent 處於後臺運行狀態,或者用戶不在當前頁面時,視覺反饋往往會被忽略。dsh-sonic 插件通過瀏覽器實時合成音效,填補了聽覺反饋的空白,用於在 Agent 需要用戶確認(如審批請求、等待作答)或任務完成(Agent 狀態變爲 idle)時播放提示音。
插件概述¶
dsh-sonic 是一個由 xjwwjx 維護的客戶端插件。它利用 Web Audio API 實時合成 8 種音效,無需加載任何外部音頻文件。插件旨在提供清晰、即時的聽覺反饋,幫助用戶感知 Agent 的狀態變化。
核心功能¶
音效觸發¶
- 確認音:在審批請求(沙箱提權、插件運行授權)、
ask_user_question等待用戶作答時觸發。 - 完成音:當 Agent 狀態由
running轉爲idle時觸發。
8 種實時合成音效¶
所有音效均由瀏覽器端實時合成,支持以下類型:
- ding:單音清脆
- dingdong:門鈴雙音
- pop:輕快氣泡
- chime:柔和三連音
- success:上揚琶音
- beep:電子短嗶
- alarm:提醒雙音
- marimba:木琴敲擊
設置面板¶
在 DeepSeek Harness Web 的設置 → 通用中,可配置以下選項:
- 一鍵靜音
- 音量滑塊
- 分別挑選確認音與完成音
- 點擊即試聽
- 自動保存配置並同步給模型
模型工具¶
插件向模型提供了兩個工具:
- sonic_play:立即播放指定的音效(用於測試或演示)。
- sonic_status:讀取當前面板的選擇狀態。
安裝與啓用¶
dsh-sonic 以 bundle 插件的形式安裝,類似於 @liustack/modlens,隨 Web profile 自動加載。
- 將本包鏈接進 profile。編輯
~/.dsh/profiles/web/package.json:
- 在dependencies中添加:"dsh-sonic": "file:<本包路徑>"
- 在dsh.profile.bundles列表中添加:"dsh-sonic" - 在 profile 目錄執行安裝命令:
pnpm install - 重啓 DeepSeek Harness Web —— 插件隨組合自動加載,進程重啓後依然生效。
工作原理¶
插件採用 Host 與 Browser 分離的架構:
- Host 端:監聽
approval/request、ask_user_question、agent/status等事件,將通知放入隊列。提供POST /sonic/state接口接收設置,以及GET /sonic/drain接口供瀏覽器拉取待播放的音效隊列。 - Browser 端:每 1 秒輪詢
/sonic/drain,根據返回的數據播放對應的音效。同時維護設置面板,通過settings.general.item接收用戶配置。
自定義音效¶
音效的配置位於 dsh/client.js 的 PRESETS 常量中。每個音效是一組音符參數,支持頻率(freq/endFreq)、時長(at/dur)、波形(type)和音量(gain/attack)。
若需新增音效,在 PRESETS 中添加條目,並在 Host 端 sonic_play 工具的枚舉中補充對應的 key 即可。
注意事項¶
- 安裝方式:本文介紹的是靜態 bundle 插件的安裝方式。動態版(會話內
cordis_define加載)源碼位於examples/dynamic-host.js與examples/dynamic-client.js,僅作參考,且進程重啓後會丟失。 - 權限與路徑:靜態版安裝需配置 profile 的
package.json和dsh.profile.bundles,請確保本地文件路徑配置正確。