dsh-workspace-recent-sort:側邊欄工作區按最近更新排序與簡約顯示

前言

在 DeepSeek Harness(DSH)裏用「按工作區」分組時,視圖選項裏的「最近更新」只會對每個工作區內部的 Session 排序。工作區這一層在 Host 裏仍按拖拽文件夾得到的 workspaceIds 順序展示——某個工作區裏剛開了新對話,分組位置不會跟着往上走。工作區一多,側邊欄就要靠記憶或滾動去找「剛動過的那個文件夾」。

dsh-workspace-recent-sort 是維護者 easychen 發佈的 Web 客戶端側邊欄插件(npm 包名 dsh-workspace-recent-sort,MIT 許可證)。它在不改動 Host 持久化順序的前提下,在瀏覽器裏對工作區分組做「最近更新」投影,並附帶對話行簡約顯示、重排後滾回當前選中項等行爲。插件已發佈到 npm,GitHub 倉庫當前約 9 stars。

這是什麼

一句話:DeepSeek Harness sidebar plugin——工作區分組按組內最新對話的 updatedAt 排序、展開工作區時默認只露最新一行並在懸停時展開更多、重排後把當前選中的對話滾回視口。

實現上通過 Cordis patch 包裝側邊欄註冊的 WorkspaceBrowser,不寫入 Host 狀態、不髮網絡請求;工作區選擇器、搜索、Session 行、歸檔篩選、固定與 Session 拖拽等仍走原生邏輯。

生效條件與要解決的問題

DSH 原生 Order by → Last updated(最近更新) 不改變工作區分組順序。本插件只在同時滿足下面兩項時改變側邊欄裏的分組順序投影:

  • Group by = WorkSpace(按工作區)
  • Order by = Last updated(最近更新)

切換到 Manual(手動排序)、Workspace Tree(按工作區樹) 或扁平列表時,會立刻恢復原生順序。持久化的工作區順序不變;在 Last updated 生效期間會抑制工作區拖拽提交(否則 durable 重排在投影下不可見),需要改文件夾順序時應先切到 Manual。

核心功能

按最近更新排序工作區分組

  • 各工作區分組按組內真實對話中最新的 updatedAt 排序,新的在上。
  • 已歸檔但仍可見的行仍算真實對話;臨時的「New Session」佔位、隱藏的 subagent 子 Session 不計入活動。
  • 沒有已加載對話的工作區沉底;updatedAt 相同則保持 Host 相對順序,結果確定。
  • 僅包裝 WorkspaceBrowser;其他 UI 保持原生。

工作區對話簡約顯示

在 Group by → WorkSpace 下,展開的工作區默認只顯示最新一條對話,以及必須保持可操作的行。

  • 懸停工作區標題或可見行時,用動畫再露出後續三條(最新一條再加三條;若有 New Session 佔位行會保留可見)。
  • 當前選中的對話即使不是最新,也會一直顯示。
  • 正在跑 turn、正在跑的 subagent 子任務、或待審批 / 計劃審閱 / 提問等 pending 交互的行,簡約模式下不會被藏,多條並行時亦然。
  • 展開其餘 xx 個會話 / Show remaining … conversations 按鈕默認隱藏,懸停或鍵盤聚焦工作區後纔出現;鍵盤焦點在工作區內會展開該工作區已渲染的全部行;點擊「展開其餘…」會拉起該工作區的原生 watermark,渲染超過六行後懸停可看到全部。
  • 摺疊的工作區、工作區樹模式、扁平列表仍爲原生行爲。

重排後滾回選中對話

工作區分組順序因自動最近排序、排序模式切換或手動拖拽工作區而改變後,插件會把側邊欄滾到當前選中的對話;若該行已在視口內,使用 block: "nearest",不強行改滾動位置。

設置

路徑:Settings → 工作區 / Workspaces。兩項開關默認均爲開啓,存在瀏覽器本地 localStorage 鍵 dsh.workspace-recent-sort.settings.v1,換瀏覽器可各用各的配置,切換後立即生效,無需刷新頁面。

開關 默認 作用
按最近更新排序工作區 開 啓用工作區按最近更新的投影排序
工作區對話簡約顯示 開 啓用單行簡約與懸停展開

安裝與啓用

面向 Web profile 安裝已發佈的 npm 包:

dsh plugin --profile web add dsh-workspace-recent-sort

也可從 GitHub 直接安裝:

dsh plugin --profile web add https://github.com/easychen/dsh-workspace-recent-sort.git

包聲明瞭 dsh.bundle.patch,會作爲 profile 的 active bundle 安裝。若提示需要重啓,請重啓 dsh web 並刷新 Web 頁面。

本地開發時可在 profile 目錄鏈接 checkout(路徑換成你的絕對路徑):

cd ~/.dsh/profiles/web
pnpm add link:/absolute/path/to/dsh-workspace-recent-sort

並確認 profile 的 package.json 裏 dsh.profile.bundles 包含 dsh-workspace-recent-sort。

卸載:

dsh plugin --profile web remove dsh-workspace-recent-sort

DSH 插件頁 / bundle 安裝器提供等價的安裝與移除操作。

典型用法

  1. 安裝並刷新 Web 客戶端後,側邊欄 Group by 選 WorkSpace,Order by 選 Last updated。
  2. 在某個工作區裏更新或新建對話,該工作區分組應隨組內最新活動時間上移(開關「按最近更新排序工作區」爲開時)。
  3. 展開工作區時默認只見最新一行;鼠標懸停標題或行可臨時看到後續幾條;有任務在跑或待交互的 Session 會一直露在外面。
  4. 若分組順序變化導致當前選中行被擠出視口,側邊欄會自動滾回該行。
  5. 需要長期調整工作區文件夾順序時,先把 Order by 切到 Manual,再拖拽;不需要簡約顯示時在設置裏關閉「工作區對話簡約顯示」。

適用場景與注意

適合誰: 經常在多個 WorkSpace 之間切換、依賴「最近更新」找活躍項目,但又希望工作區這一層也跟着「誰剛動過」排序的 DSH Web 用戶;工作區裏 Session 很多、希望側邊欄默認更短、用懸停按需展開的人。

兼容性: README 寫明針對 DSH 0.2.1-rc.2 構建;package.json 中 engines.dsh 爲 >=0.2.0-0,當前發佈版本爲 0.2.1。原生視圖選項菜單沒有公開的分組排序擴展點,插件走 sidebar 註冊組件接縫;若識別不了側邊欄結構,會保留原生組件以免應用無法啓動。

安全與權限: 插件隨當前 DSH Web 客戶端在瀏覽器中運行,設置僅存本地 localStorage。安裝前建議閱讀 GitHub 倉庫 源碼與 MIT 許可證,確認符合你的使用環境。

結尾

dsh-workspace-recent-sort 補的是 DSH 在「按工作區 + 最近更新」視圖下分組層不跟最近活動走的空檔,並用簡約行與滾回選中項減少長列表裏的來回找。社區插件目錄見 SkillHub 條目;源碼、Issue 與 npm 說明見 GitHub:easychen/dsh-workspace-recent-sort。

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

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

小夜