前言¶
DeepSeek Harness(DSH)開發中,代理的狀態常顯示爲 idle。但這通常只代表調度器空閒,後臺任務或子代理仍在運行。若在 idle 時觸發提示音,一個任務可能會響鈴多次。dsh-work-done-bell 解決了這個問題,它等待的是“真正的完成”。
插件定位¶
這是一個 DeepSeek Harness 客戶端插件,由 FunctionHookTJU 維護。它會在 DSH 會話真正完成所有工作後(即進入靜默狀態),播放 Windows 系統提示音,並在右下角彈出 Toast 通知。該插件將完成提示的狀態持久化存儲,支持開關切換。
核心功能¶
插件通過“靜默檢測”機制判斷會話是否結束,避免誤報。
- 靜默檢測條件:會話必須同時滿足以下條件纔算真正完成:
- 狀態爲
idle。 - 沒有屬於該會話的運行中或正在停止的任務。
- 沒有屬於該會話的運行中代理。
- 狀態爲
- 超時保護:靜默檢測存在 90 秒的截止期限。如果超過 90 秒仍未檢測到靜默,該次會話將不再觸發提示音。
- 去重處理:在 2.5 秒內的多次完成會合併爲一次提示音,防止併發任務導致聲音疊加。
- 提示音邏輯:聲音來源是 DSH 日誌中的
turn/end原因,而非猜測:completed/blocked/max-tokens:播放Asterisk(默認通知音)。error:播放Hand(停止音)。aborted/interrupted(包括手動停止):靜音。
- UI 交互:右下角提供持久開關,用於控制提示音和 Toast 的顯示。
安裝與啓用¶
使用 file: 協議安裝,確保依賴能正確解析。
1、克隆倉庫:
git clone https://github.com/FunctionHookTJU/dsh-work-done-bell
2、在目錄下執行安裝命令:
dsh plugin --profile web add file:/absolute/path/to/dsh-work-done-bell
3、重啓 DSH 後端,無需在配置文件中手動編輯其他內容。
診斷與狀態查詢¶
插件提供 HTTP 接口供調試。瀏覽器端每秒輪詢該接口獲取狀態。
通過以下命令檢查當前狀態(開啓 verbose=1 可查看詳細原因和策略):
curl "http://127.0.0.1:3080/dsh-work-done-bell/state?verbose=1"
平臺限制與注意事項¶
- 聲音限制:聲音播放功能僅支持 Windows 平臺,通過
System.Media.SystemSounds執行。在其他平臺上,插件加載並顯示 Toast,但保持靜音。移植時需修改play()函數中的命令爲afplay或paplay。 - 沙盒策略:播放聲音的命令必須攜帶已解析的沙盒策略。如果宿主 shell 服務拒絕該命令,聲音將無法播放。在
verbose=1模式下,lastError和lastPolicy字段會記錄原因。 - Toast 顯示:Toast 通知需要瀏覽器有打開的頁面才能顯示,聲音播放不依賴頁面打開。
- 命名方式:Toast 通知顯示的是會話的短 ID,而非標題。
總結¶
dsh-work-done-bell 是一個實用的 DSH 客戶端插件,通過精確的“靜默檢測”和超時機制,解決了後臺任務導致的誤報問題。對於需要長時間運行或包含子代理的複雜任務,它能提供清晰的聽覺反饋。
- 插件目錄:https://www.skillhub.cn/plugins/FunctionHookTJU/dsh-work-done-bell
- GitHub 倉庫:https://github.com/FunctionHookTJU/dsh-work-done-bell