dsh-taskbar-status:用 Windows 工作列一眼看清 Agent 是否在跑、是否在等你

前言

在 DeepSeek Harness Desktop 裏跑 Agent 時,turn 可能跑很久,也可能停在工具覈准或 ask_user_question 上等你點選。窗口被其他應用蓋住時,很難判斷是還在執行、在等你,還是上一輪已經失敗。常見做法是頻繁把 DSH 拉到前臺看界面,或盯着會話列表猜狀態。

下面介紹社區插件 dsh-taskbar-status(維護者 Joker2377,分類:客戶端)。它在 Windows 10/11 上把 DSH 桌面應用的工作列按鈕變成進度條指示:執行中爲灰色不定進度條,等待人工爲琥珀色滿條並閃爍,失敗後爲全紅並保持,直到你按規則清除。插件是純 host 端外掛,不修改 main.js,也不改 app.asar。

這是什麼

dsh-taskbar-status 訂閱 @deepseek-ai/dsh-session 在事件總線上發佈的 session/event,把 turn、覈准、提問與結束原因換算成四種工作列狀態,再通過 koffi 調用 Win32 的 ITaskbarList3(SetProgressState / SetProgressValue,必要時 FlashWindowEx)畫到 DSH 窗口對應的工作列按鈕上。

非 Windows 平臺會直接停用,不會加載原生 FFI。DeepSeek Harness Desktop 版本需滿足 >=0.1.1-rc.2 <0.3.0(與 package.json 中 engines.dsh 一致)。當前插件版本爲 0.6.0,許可證 MIT。

核心功能

四種狀態

狀態 工作列效果 進入條件 離開條件
執行中 灰色不定進度條(TBPF_INDETERMINATE) turn/start 該 session 的 turn 全部結束
等待人工 琥珀色滿條(TBPF_PAUSED)+工作列閃爍 approval/asked,或 ask_user_question 的 tool/call 覈准有結果、提問有回答,或 turn 結束
出錯 全紅(TBPF_ERROR) turn/end 且 reason.kind === 'error' 下一輪開始、或窗口離開前景後再回來
閒置 清除(TBPF_NOPROGRESS) 沒有 turn、沒有等待、沒有未讀錯誤 —

工具覈准與 ask_user_question 提問都算「等你」,都會亮琥珀色;每出現一個新的阻塞,工作列按鈕各閃一次。

多 session 與失敗語義

同時跑多個 session 時,所有 session 共用同一個工作列按鈕,顯示優先級爲:等待人工 > 執行中 > 出錯 > 閒置。計數以 session id + turn 以及各自的 approval / question id 爲 key,重複事件不會重複計數。

紅燈是「閂鎖」式的未讀通知,不會自己消失;只有 reason.kind === 'error' 會變紅,aborted、interrupted、blocked 按正常結束處理。所有 Win32 調用爲 best-effort,失敗只寫 warn 日誌,不影響 Agent 本身。

安裝與啓用

安裝方式在 README 中寫爲:在 DSH 側邊欄打開 Plugins,粘貼倉庫首頁 URL 後按 Install。DSH 會用該鏈接執行 pnpm add,把 repo 拉進 profile,無需 git clone,也無需手改 profile。

  1. 複製倉庫地址(須爲 git 倉庫首頁,不要帶 /tree/main 這類路徑):
https://github.com/Joker2377/dsh-taskbar-status
  1. 在 Plugins 安裝欄粘貼並按 Install。
  2. 若安裝時列出待覈準的構建腳本 koffi,覈准後重試一次;原生文件也可隨 @koromix/koffi-win32-x64 附帶,不跑腳本也可能能加載。
  3. 重新加載 App(重開窗口或重啓),工作列開始反映狀態。

若要鎖定某一版,可在 URL 後接 commit:https://github.com/Joker2377/dsh-taskbar-status#<commit>。

解除安裝:在 Plugins 頁移除該 bundle 後重新加載;停用瞬間插件會清掉進度條並釋放 COM 對象。

裝前建議自行查看 GitHub 倉庫 源碼與 MIT 許可證。插件在 DSH host 進程權限下運行,會加載 koffi 與 Win32 FFI。

典型用法與行爲說明

如何消掉紅燈

  1. 開始下一輪 — 最直接的確認。
  2. 離開 DSH 窗口再回來 — 插件每秒比對前景窗口的擁有者 pid;出錯時若你一直盯着 DSH 窗口,不會立刻清掉。
  3. 重載插件。

若你平時用瀏覽器看 Web GUI,DSH 桌面窗口可能永遠拿不到前景,則只有第 1、3 條有效。可用 node scripts/probe.mjs --focus 查看當前前景窗屬於哪個進程(需 Node.js >=22.19,僅跑腳本時需要)。

安裝前試效果

取得源碼後可在不走 DSH 插件系統的情況下驗證 FFI:

node scripts/probe.mjs

腳本會找到窗口並依序演示灰 → 黃+閃爍 → 紅 → 清除。另有 --detect、--compare、--focus 等參數,見 README「開發」一節。

執行中爲什麼是灰色

Windows 11 上 TBPF_INDETERMINATE 即爲灰色跑動條,顏色不可由插件指定;帶固定語義顏色的主要是 TBPF_PAUSED(黃)與 TBPF_ERROR(紅)。這是系統設計,不是配置項遺漏。

適用場景與注意

適合:在 Windows 上長期使用 DSH Desktop,多任務時希望從工作列判斷 Agent 是否在跑、是否在等你、是否上一輪失敗,而不必一直把窗口置頂。

注意:

  • 只處理一個 DSH 窗口;多開桌面實例時,作用在優先找到的那一個。
  • 僅追蹤直接的 ask_user_question 的 tool/call;經 tool/ptc-dispatch 間接調用不會亮琥珀色(該路徑本身不阻塞)。
  • explorer.exe 重啓或遠程桌面重連後,工作列可能被重建;下一次狀態變更時會比對 Shell_TrayWnd handle 並重畫,中間沒有心跳,燈不會主動恢復。
  • 窗口縮到系統匣且工作列按鈕不可見時,需還原窗口後下一次更新纔會重新套用。

疑難排解表(找不到窗口、一閃就消失、紅燈不消等)見倉庫 README。

結尾

dsh-taskbar-status 把 DSH session 事件映射到 Windows 工作列進度條,用灰、琥珀、紅三種可見信號覆蓋「執行中 / 等你 / 失敗未讀」三種常見痛點,適合把 DSH 放在後臺的 Windows 用戶。

SkillHub 爲社區插件目錄,與 DeepSeek / 幻方無官方從屬關係;安裝與使用以倉庫 README 爲準。

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

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

小夜