前言¶
在 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:
useSessions:某個 非子智能體 Session 的running從true變爲false時,等待 1.2 秒(DONE_DEBOUNCE_MS),確認沒有立刻開始下一輪(避免排隊消息、連續 turn 誤報),再顯示「任務已完成」。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