按最新會話活動自動重排工作區順序 (dsh-workspace-recency-order)

前言

在使用 DeepSeek Harness (DSH) 進行開發時,左側工作區的順序直接影響交互效率。默認情況下,工作區列表是靜態的,隨着會話增多,最近使用的工作區容易沉底。dsh-workspace-recency-order 插件通過 Host 側的底層操作,解決了工作區順序無法自動更新的問題。

插件介紹

這是一個 Host 側插件,由開發者 dgmico 維護。它的核心作用是:按工作區內最新會話活動時間自動重排左側工作區順序(Host 側,寫入官方持久工作區順序,不覆蓋官方 UI)。

核心功能

  1. Host 側插件:直接操作 Host 側的工作區註冊表,而非注入 DOM 或替換組件。
  2. 按最新會話活動時間自動重排:工作區會根據其名下會話的最新活躍時間(updatedAt)進行排序。
  3. 持久化排序:重啓 DSH 後順序保持,並繼續自動維護。
  4. 實時更新:通過監聽事件,在用戶發送消息時實時調整順序。
  5. 不覆蓋官方 UI:利用官方渲染邏輯,只需修改 Host 側數據,UI 會自動跟隨。
  6. 冪等重排:計算出的順序若與當前一致,則不寫入,避免無效操作。
  7. 支持配置:提供多種配置項以調整排序行爲。

安裝與啓用

插件支持通過絕對路徑安裝。

dsh plugin --profile <profile> add /絕對路徑/dsh-workspace-recency-order

安裝後,插件會自動處理配置。如果需要手動干預,可以在 profile 的 cordis.patch.yml 中添加配置項。

配置說明

在 profile 的補丁層(~/.dsh/profiles/<profile>/cordis.patch.yml)中按 id 重述整行。補丁按行替換 config,因此只需寫入想修改的鍵。

- id: workspace-recency-order
  name: 'dsh-workspace-recency-order'
  config:
    sweepMs: 0          # 關掉兜底巡檢
    debounceMs: 1000    # 防抖放寬到 1 秒
配置項 默認值 說明
enabled true 插件啓用開關。
direction 'desc' 排序方向,desc 爲最近活躍在最上,asc 爲最久未動在最上。
emptyWorkspace 'createdAt' 空工作區的排序策略:createdAt 按自身創建時間參與排序,bottom 固定沉底,top 固定置頂。
countSubagentSessions false 是否將子代理會話(origin: 'subagent')計入活躍度。
debounceMs 400 事件合併防抖窗口(毫秒)。
sweepMs 300000 兜底巡檢間隔(毫秒),0 表示關閉。
skipWhenSessionListEmpty true 當無法讀取會話列表時,放棄本輪排序。

注意:本插件不依賴 @deepseek-ai/schemastery,因此 DSH 的配置頁無法顯示錶單。改配置需直接編輯 cordis.patch.yml。

開發與維護

該插件採用零依賴、純 ESM 模式編寫。

  • 測試:包含 54 個測試用例,覆蓋了 24 種工作區全排列和隨機打亂的寫入計劃正確性校驗。
  • 開發文件:
    • lib/order.js:核心排序邏輯。
    • lib/index.js:插件本體,處理事件、防抖和生命週期。
  • 熱重載:插件本身支持熱重載,但修改 lib/ 下的源碼需要重啓 DSH。

注意事項

  1. 全局持久:順序是全局持久的,對 profile 下所有客戶端生效。
  2. 子代理處理:子代理會話默認不參與活躍度計算。
  3. 時間基準:排序依據的“最新時間”取的是最後一次用戶消息時間,而非助手回覆時間。
  4. 重啓需求:修改 lib/ 下的代碼後必須重啓 DSH。
  5. UI 限制:目前 DSH 暫未提供手動拖拽排序 UI,插件不會與手動操作衝突。

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

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

小夜