dsh-workspace-running-indicator:摺疊工作區標題行還原會話狀態標記

前言

DeepSeek Harness(DSH)側邊欄用工作區把多條 Session 收攏在一起。摺疊後,組內的會話行不再可見,標題行卻通常仍顯示同一個文件夾圖標——裏面有會話在等你批准或回答、有 turn 正在跑、或剛跑完還沒打開看過,從標題上很難區分。展開工作區才能看到各行自帶的黃色等待圓點、進行中加載動畫和綠色完成圓點,日常會多一步操作。

下面介紹社區插件 dsh-workspace-running-indicator(維護者 icrefin,分類爲客戶端)。它在摺疊狀態下,把工作區標題行 16×20 圖標格上的文件夾圖標替換成與原版會話行一致的三種標記,邏輯與 DSH 0.2.1-rc.5 側邊欄已有規則對齊。

這是什麼

插件全名 dsh-workspace-running-indicator,當前發佈版本爲 v0.3.0,MIT 許可證。官方簡介是:在 dsh 側邊欄裏,爲已摺疊的工作區鏡像其內部 Session 的狀態——等待圓點、進行中 loader、完成未讀圓點,相當於把摺疊藏起來的標記還原到標題行上。

它不接管整個 sidebar.workspaces 瀏覽器面板,也不改會話行、摺疊水位或分組順序;只在頁面側裝飾工作區標題那一格,並通過 Cordis patch 注入客戶端腳本。

核心功能

摺疊標題上的三種狀態

僅當工作區行滿足 role="treeitem"、data-row-key="workspace:<id>" 且 aria-expanded="false" 時,插件在圖標格覆蓋對應標記:

  1. 等待回答(黃色圓點):組內任一成員 Session 在 ctx.uiSession.sessionStatus 中存在待答交互,類型爲 approval、plan-review 或 question(與 dsh-client-ui-session / ui-workspace 一致)。
  2. 進行中(加載動畫):成員 Session 在目錄中 running 爲真,或有正在運行的直屬子代理(external 子代理排除,與側邊欄一致)。
  3. 完成未讀(綠色圓點):成員 Session 一輪從運行變爲結束,且該 Session 不是當前主欄正在查看的那一個;打開 Session 或再次開跑會清除,僅展開工作區不算「已讀」。

優先級與原版會話行一致:等待 > 進行中 > 完成未讀。懸停標題行時,原版會把圖標格換成摺疊箭頭,覆蓋層隨之隱藏。

邊界行爲(README 已說明)

  • 只統計直接屬於該工作區的 Session,嵌套子工作區在跑不會點亮父行(0.1.3 起修復目錄包含誤傳播)。
  • 父工作區不會借用子代理的待答交互,只會反映子代理運行時的 loader,與原版父行一致。
  • 展開的工作區標題保持文件夾圖標,因爲各行已在原位顯示標記。
  • 三個標記爲裝飾性(aria-hidden),讀屏仍只讀工作區名稱。

實現要點(便於排查)

插件讀取 ctx.sessions.list、ctx.workspaces.list 與 ctx.uiSession.sessionStatus,用 MutationObserver 跟隨摺疊、展開與列表重掛載。圖形尺寸、關鍵幀與主題 token(如 --dsw-alias-state-warn-primary)按原版 StateDot 在插件類名前綴下重聲明,不 import 宿主組件。

安裝與啓用

環境要求(來自 README 簡體中文):

  • 運行 DSH 0.2.1-rc.5(桌面版或 Web UI)。
  • 從源碼構建需 Node.js ≥ 22.17 與 pnpm 11。

官方步驟是先在本倉庫構建打包,再在 DSH 裏安裝 .tgz:

pnpm install
pnpm check                       # 類型檢查 · 構建 · vitest
pnpm run pack                    # -> dist/dsh-workspace-running-indicator-0.3.0.tgz

然後在 DeepSeek Harness 桌面版打開 設置 → 插件,安裝 dist/dsh-workspace-running-indicator-0.3.0.tgz,並重啓應用。文檔說明:加入運行中 profile 的 bundle 在重啓前模塊解析可能失敗;重啓後 Web 端還需刷新頁面。

package.json 中聲明的 dsh 引擎範圍爲 >=0.2.1-rc.5 <0.2.2-0,與上述版本一致。

社區目錄頁 skillhub.cn/plugins/icrefin/dsh-workspace-running-indicator 可查看插件條目與來源鏈接;該站點爲社區目錄,與 DeepSeek / 幻方無官方從屬關係,安裝前仍建議對照 GitHub 源碼與許可證。

典型用法

插件沒有設置項或宿主路由配置。安裝並重啓、Web 端刷新後即可生效:

  1. 摺疊一個內有 Session 正在等待你回答的工作區,標題圖標格應顯示黃色等待圓點;處理完待答交互後,標題會交給下一層狀態標記。
  2. 摺疊內有 Session 正在運行(或符合規則的直屬子代理在跑)的工作區,文件夾位置顯示進行中加載動畫。
  3. 某 Session 跑完且你尚未在主欄打開它時,摺疊標題顯示綠色完成圓點;打開該 Session 或讓它重新運行後圓點清除。

開發與本地組合驗證可使用倉庫內 scripts/dev-profile.sh(隔離 DSH home),屬於貢獻者流程,日常使用者按上一節安裝即可。

適用場景與注意

適合誰:側邊欄裏常摺疊多個工作區、又需要掃一眼「有沒有在等、在跑、剛跑完沒看」的 DSH 用戶;依賴 0.2.1-rc.5 側邊欄 DOM 約定(data-row-key、aria-expanded 等)的當前一代客戶端。

務必注意:

  • 插件以當前 DSH 進程權限運行,安裝前應閱讀 GitHub 倉庫 源碼與 MIT 許可證,自行評估信任邊界。
  • 不組合 Session UI 的殼可能沒有 uiSession 投影,等待圓點無法推導,但目錄側的進行中與完成邏輯仍可按 README 說明工作。
  • 插件掛載前已結束的運行不會產生完成提醒;未來 dsh 若改動行標識,徽標可能靜默失效而非報錯(README「不做的事」一節)。

結尾

dsh-workspace-running-indicator 解決的是摺疊工作區「標題行信息丟失」這一具體 UI 缺口,用與原版一致的三種標記補回標題格,減少爲看狀態而反覆展開的操作。更多細節與測試說明見倉庫 README(含 README.zh-CN.md)。

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

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

小夜