在 DSH(DeepSeek Harness)環境中開發 Agent 或執行任務時,確認任務是否完成是日常開發中的高頻操作。通常開發者需要手動刷新界面或查看日誌來獲取狀態。本插件通過輪詢機制檢測任務狀態,並在任務結束時在桌面右下角彈出完成通知(類似 opencode 的表現形式),解決了手動確認的繁瑣問題。
插件簡介¶
這是一個 DeepSeek Harness 插件,由 weijianguizhou 維護。它的核心價值是在任務/Agent 運行結束時,在桌面右下角彈出完成通知。該插件作爲純客戶端增強 bundle 運行,不修改任何官方代碼。
核心功能¶
- 任務完成檢測:通過輪詢
sessions.list,檢測“正在運行”到“停止”的會話變化(與任務看板同一機制)。 - 結果判定:讀取
sessions.history中的turn/end事件,根據reason.kind判定結果:error判爲失敗,cancelled/aborted判爲取消,否則判爲成功。 - 桌面通知:優先使用 Electron 渲染進程的原生
Notification(Windows 右下角系統通知);不可用時回退爲頁面內右下角 toast。 - 不打擾:僅當窗口不在前臺時通知;設置了 4 秒輪詢間隔和 3 秒最小通知間隔,防止通知轟炸。
- 跟隨主題:回退 toast 的顏色取自 DSH 主題變量(
--dsw-*)。 - 零侵入:作爲純客戶端增強 bundle,不修改任何官方代碼。
安裝與啓用¶
在目標 profile 中作爲 link 依賴安裝並加入 bundle 層:
dsh plugin --profile desktop add link:/path/to/dsh-task-notify
或者手動在 profiles/<name>/package.json 中加入依賴,並確保該插件出現在 dsh.profile.bundles 列表中。安裝完成後重啓 DSH Desktop 即可生效。
工作原理¶
- 註冊:客戶端 bundle(
lib/client.js)以dsh.client.platform: web註冊,由 harness 的ClientModuleRegistry掃描並下發到瀏覽器。 - 輪詢:插件每 4 秒調用
connection.api.sessions.list({}),維護一個“運行中會話”的集合。 - 判定:當會話從運行中變爲停止時,調用
connection.api.sessions.history({ sessionId })獲取turn/end事件。 - 通知:根據事件
reason.kind判定結果。如果窗口未聚焦,使用原生Notification彈出通知;失敗時則渲染頁內.ntf-toast。
注意事項¶
- 插件以當前 DSH 進程的權限運行,安裝前建議檢查源碼與許可證。
- 通知僅在窗口不在前臺時觸發。
- 爲了防止通知頻繁轟炸,設置了 3 秒的最小通知間隔和 4 秒的輪詢間隔。
結語¶
dsh-task-notify 通過原生系統通知和頁面回退機制,爲 DSH 任務執行提供了可視化的反饋。該插件屬於社區插件,源碼與目錄可訪問以下鏈接: