dsh-task-notify:任務運行結束桌面通知插件

在 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 即可生效。

工作原理

  1. 註冊:客戶端 bundle(lib/client.js)以 dsh.client.platform: web 註冊,由 harness 的 ClientModuleRegistry 掃描並下發到瀏覽器。
  2. 輪詢:插件每 4 秒調用 connection.api.sessions.list({}),維護一個“運行中會話”的集合。
  3. 判定:當會話從運行中變爲停止時,調用 connection.api.sessions.history({ sessionId }) 獲取 turn/end 事件。
  4. 通知:根據事件 reason.kind 判定結果。如果窗口未聚焦,使用原生 Notification 彈出通知;失敗時則渲染頁內 .ntf-toast。

注意事項

  • 插件以當前 DSH 進程的權限運行,安裝前建議檢查源碼與許可證。
  • 通知僅在窗口不在前臺時觸發。
  • 爲了防止通知頻繁轟炸,設置了 3 秒的最小通知間隔和 4 秒的輪詢間隔。

結語

dsh-task-notify 通過原生系統通知和頁面回退機制,爲 DSH 任務執行提供了可視化的反饋。該插件屬於社區插件,源碼與目錄可訪問以下鏈接:

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

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

小夜