dsh-task-popup:任務結束與待確認時的頁面通知

前言

在 DeepSeek Harness(DSH)裏跑長任務時,Session 從運行中切回空閒,或者出現審批、提問、計劃評審等「待確認」狀態時,開發者常常要盯着界面或反覆切回窗口。本插件不改動 Host 或 Session 事件,而是在 Web 客戶端側訂閱已有狀態,在右上角彈出提示卡片;環境允許時再發一條原生通知,便於你把注意力暫時放到別處。

這是什麼

dsh-task-popup 是社區維護的 客戶端 插件,作者 methylorange-kun,倉庫 methylorange-kun/dsh-task-popup。它在 DSH 一輪任務結束、或出現待確認操作時彈出通知卡片(並在 Electron / 已授權瀏覽器中嘗試系統通知),且 只對主會話生效,不爲子智能體(subagent)會話彈窗。

分類上屬於 DSH 插件目錄中的「客戶端」類;實現上通過 cordis.patch.yml 注入 client.js,依賴 @deepseek-ai/dsh-client-locale 與 @deepseek-ai/dsh-client-ui-layout,在頁面加載後立即參與運行(immediately: true)。許可證爲 MIT(package.json 版本 1.0.0)。

你會看到什麼

任務完成時,頁面右上角出現卡片:任務已完成 / 一輪任務已經結束,點擊查看結果。待確認時:需要你的確認 / DSH 正在等待你確認一個操作,點擊返回處理;若能從狀態裏拿到工具名,卡片會帶上工具名。

交互細節如下:

  • 完成卡片約 9 秒後自動消失,待確認卡片約 15 秒後自動消失;均可點 × 關閉。
  • 點擊卡片會嘗試把窗口拉到前臺。
  • Electron 桌面版或允許通知的瀏覽器中,在卡片之外可能再出現一條原生通知;權限被拒絕時原生通知靜默跳過,頁面卡片仍正常顯示。

判定邏輯(只讀已有 Hook)

插件不改 Host,只訂閱 Web 客戶端根上的兩個標準 Hook:

  1. useSessions:某個 非子智能體 Session 的 running 從 true 變爲 false 時,等待 1.2 秒(DONE_DEBOUNCE_MS),確認沒有立刻開始下一輪(避免排隊消息、連續 turn 誤報),再顯示「任務已完成」。
  2. useSessionStatus:某個 非子智能體 Session 的 pendingInteraction 從空變爲存在時,立即顯示「需要你的確認」。審批(approval)、ask_user_question、計劃評審等,只要登記爲 pending interaction,都會走這條路徑。

安裝與啓用

安裝前建議通讀倉庫源碼與 LICENSE,確認你願意以當前 DSH 進程權限加載該客戶端插件。

普通 profile(資料中的方式一)

README 給出的步驟是先克隆倉庫,再以本地路徑加入 web profile:

git clone https://github.com/methylorange-kun/dsh-task-popup
dsh plugin --profile web add file:C:/path/to/dsh-task-popup

將 C:/path/to/dsh-task-popup 換成你本機克隆目錄的實際路徑。

Desktop 版(方式二)

在 DSH 插件管理頁面選擇本插件目錄安裝,或在插件管理器中執行:

plugin_manager install_bundle  target = C:\path\to\dsh-task-popup

安裝後 刷新頁面,或 重啓 DSH 客戶端,以便客戶端插件重新加載。

卸載示例:

plugin_manager remove_bundle target = dsh-task-popup

也可在插件管理頁面移除。

社區插件目錄頁:skillhub.cn/plugins/methylorange-kun/dsh-task-popup。該目錄爲獨立社區站點,與 DeepSeek / 幻方無官方從屬關係,不等同於官方應用商店。

典型用法

安裝並刷新客戶端後,無需額外配置即可使用:正常在主會話中跑任務,結束時看右上角完成卡片;當出現審批、提問或計劃評審等待你處理時,看待確認卡片。需要更快響應完成通知時,可改 client.js 頂部的去抖時間(見下一節)。

開發與自測:插件無單獨構建步驟,client.js 即爲瀏覽器端產物;需要 Node 22+,在倉庫根目錄執行:

npm test

CI 會執行 node --check client.js 與同目錄自測腳本。

可調參數

在 client.js 文件頂部可改這些常量(改完後需讓客戶端重新加載插件):

  • DONE_DEBOUNCE_MS = 1200:任務結束後等待確認的時間,想更快可改小。
  • DONE_DISMISS_MS = 9000:完成卡片自動消失時間。
  • PENDING_DISMISS_MS = 15000:待確認卡片自動消失時間。

若不需要原生通知,可在 useNativeNotification 中去掉對應調用。

適用場景與注意

適合:長時間讓 DSH 在後臺跑主會話任務,希望在完成或需要人工確認時能被動提醒,又不想改服務端或 Session 事件邏輯的開發者。

限制(以 README 爲準):

  • 僅當 DSH Web 客戶端已加載、頁面在運行時纔會顯示頁面卡片;窗口最小化或隱藏時看不到卡片,原生通知仍可能彈出(取決於系統與權限)。
  • 原生通知依賴瀏覽器 / Electron 的 Notification 權限。
  • 僅主會話通知;子智能體會話完成不彈。
  • 待確認依賴 useSessionStatus 的 pendingInteraction;若某種確認方式未登記爲 pending interaction,則不會彈待確認卡片(DSH 內置的審批、提問、計劃評審會登記)。
  • 社區插件:DSH 升級後若客戶端槽位或標準 Hook 變化,可能需要同步調整本插件。

結尾

dsh-task-popup 用客戶端訂閱 useSessions / useSessionStatus,在任務結束與待確認兩類節點給出可見提醒,並可選原生通知,適合「主會話長時間運行、人不在前臺」的日常開發節奏。

  • 目錄頁:https://www.skillhub.cn/plugins/methylorange-kun/dsh-task-popup
  • 源碼與說明:https://github.com/methylorange-kun/dsh-task-popup
羽毛球分组比赛记分
小程序二维码

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

小夜