前言¶
DeepSeek Harness(DSH)在處理多輪任務或複雜 Agent 工作流時,一輪執行結束後容易錯過。瀏覽器通知權限綁定在 DSH 的隨機迴環端口上,每次重啓都會丟失,無法保證窗口不在前臺時也能看到。dsh-turn-notify 通過 Host 進程直接調用 Windows Toast API 解決這個問題,讓任務完成通知更可靠。
這是什麼¶
dsh-turn-notify 是一個客戶端插件,維護者爲 XEsx630。它的核心功能是在 DSH 每輪任務結束時,彈出一條真正的 Windows 系統通知(Toast + 提示音),並進入 Windows 通知中心。
核心功能¶
- 任務結束才通知:監聽 UI 的
uiSession.sessionStatus,在該輪running從true變爲false時觸發。不是每條消息、每次工具調用,也不是插件啓動時。 - 真正的系統 Toast:由 Host 進程通過 PowerShell WinRT 發出,進入 Windows 通知中心;不依賴瀏覽器 Notification 權限,也不受 DSH 每次啓動隨機迴環端口的影響。
- 窗口不在前臺也能看到:DSH 最小化或被其他應用蓋住時,Toast 仍顯示在最上層。
- 每輪都通知:包括當前正在查看的會話;跳過子代理會話和空白會話。
- 提示音:應用內 WebAudio 播放兩聲短音,不依賴 Windows 通知音設置。
- 設置頁:在 DSH 的設置 → 通知 中可開關,也可發送一條測試通知。
安裝與啓用¶
需要 Windows 上的 DeepSeek Harness Desktop,插件在 0.2.1-rc.2 上開發並測試。
從 GitHub 直接安裝:
dsh plugin --profile desktop add github:XEsx630/dsh-turn-notify
或克隆後從本地目錄安裝:
git clone https://github.com/XEsx630/dsh-turn-notify.git
dsh plugin --profile desktop add .\dsh-turn-notify
安裝後如果設置裏暫時沒有”通知”,重啓一次 DSH。
典型用法¶
- 打開 設置 → 通知,確認”任務完成”開關爲開啓狀態。
- 點”發送測試通知”,應看到 Windows 系統 Toast(即使 DSH 不在前臺)。
- 之後每輪任務完成時都會收到通知:標題爲會話名,正文爲”任務已完成 · 點擊返回會話”。
實現原理¶
插件分兩半:
- Client(
client.js):訂閱uiSession.sessionStatus,檢測每輪完成;播放提示音,並調用 Host 的/dsh-turn-notify/notify。 - Host(
index.js):在本機迴環路由上接收請求,用 PowerShell 的 WinRT 投影直接發送 Windows Toast。Toast 本身靜音,聲音由 Client 播放,避免重複。
這樣做的原因:渲染進程的 Notification 權限綁定在 DSH 的隨機迴環端口上,每次重啓都會丟失;Host 直接發 Toast 則不受影響。
適用場景與注意¶
適合在 DSH 中運行多輪任務或複雜 Agent 工作流的開發者,需要持續監控任務進度並確保不遺漏輪次。
注意:插件僅支持 Windows;Toast 依賴 electron.app.DeepSeek Harness 這個 AppUserModelID,DSH 桌面端更新後如改動 AUMID,需要同步修改 index.js。DSH 窗口可以最小化或處於其他應用後面,但需要保持運行;完全退出 DSH 後無法檢測任務完成,也就不會通知。提示音由渲染進程播放;如果渲染進程被銷燬,Host Toast 仍可能顯示,但不會有提示音。
結尾¶
dsh-turn-notify 通過 Host 進程直接調用 Windows Toast API,讓任務完成通知在窗口不在前臺時也能可靠顯示,適合需要持續監控多輪任務進度的場景。插件已在 0.2.1-rc.2 上測試通過,支持 Windows 平臺。