dsh-workspace-auto-sort:爲 DSH 新增工作區自動排序能力

前言

DeepSeek Harness (DSH) 原生的排序機制僅作用於工作區組內的會話,工作區本身的順序依賴手動拖拽,且重啓後順序會重置。dsh-workspace-auto-sort 爲 DSH Web / 桌面端新增了工作區自動排序能力:監聽會話活動,根據用戶消息時間自動重排側邊欄工作區,並將順序持久化到磁盤,重啓後保持。

核心能力

該插件運行在宿主進程,不依賴瀏覽器端注入,通過官方 workspaceRegistry.insertBefore API 進行重排。

  1. 活動監聽與過濾:監聽宿主 session/event,按 activity 口徑刷新會話最後活動時間(默認 'prompt',僅認用戶消息);自動排除 origin === 'subagent' 的隱藏子代理會話。
  2. 防抖與重排:活動事件在防抖窗口(默認 750ms)內合併後觸發重排計算。
  3. 持久化排序:通過 workspaceRegistry.insertBefore(id, beforeId) 應用重排,與手動拖拽使用同一條持久化通道。
  4. 配置靈活:支持配置活動口徑(prompt/any)和排序範圍(all/outermost)。

安裝與啓用

dsh web(CLI profile)

# 克隆倉庫
git clone https://github.com/huimingli666/dsh-workspace-auto-sort.git
cd dsh-workspace-auto-sort

# 安裝插件
dsh plugin --profile web add link:"$PWD"

# 重啓 dsh web 生效

DSH Desktop(桌面端)

dsh plugin 命令無法直接管理 desktop profile。需手動執行以下步驟:

  1. 在 desktop profile 的 node_modules 下創建指向克隆目錄的符號鏈接:
    mkdir -p ~/.dsh/profiles/desktop/node_modules/@dsh-plugins
    ln -s <克隆目錄>/dsh-workspace-auto-sort \
          ~/.dsh/profiles/desktop/node_modules/@dsh-plugins/dsh-workspace-auto-sort
  1. 編輯 ~/.dsh/profiles/desktop/package.json,在 dependencies 中增加:
    "@dsh-plugins/dsh-workspace-auto-sort": "link:<克隆目錄>/dsh-workspace-auto-sort"
  1. 在同文件 dsh.profile.bundles 數組末尾追加:
    "@dsh-plugins/dsh-workspace-auto-sort"
  1. 重啓桌面端生效。

啓用後,在任意工作區運行會話,該工作區將自動上浮;關閉插件(enabled: false)可恢復純手動模式。

配置項

插件通過配置文件覆蓋默認值:

鍵 默認值 說明
enabled true 總開關,關閉時不掛監聽、不重排
debounceMs 750 活動事件合併窗口(非負整數)
activity 'prompt' recency 口徑:'prompt' 只認用戶消息;'any' 認所有提交事件
scope 'all' 排序範圍:'all' 全部工作區;'outermost' 僅頂層工作區
logFile '' 日誌路徑,空字符串使用默認 ~/.dsh/logs/...,'off' 關閉
announceToAgent false 是否向模型通告本插件

診斷與手動觸發

插件提供本地 API 用於查看狀態和手動觸發重排(需本機迴環訪問):

# 查看狀態(監聽計數、rank、最近一輪計劃)
curl http://127.0.0.1:<端口>/api/dsh-workspace-auto-sort/status

# 強制執行一輪重排(不等會話活動)
curl -X POST http://127.0.0.1:<端口>/api/dsh-workspace-auto-sort/reorder

注意事項

  • 手動拖拽互斥:活動觸發時,手動拖拽的結果會被重排覆蓋。
  • 冷會話精度:宿主進程內從未運行過的會話(冷會話),其排序精度取決於磁盤會話頭的 createdAt。
  • 口徑差異:插件使用“最後運行時間”(包含所有提交事件),比 GUI 的“最近更新”口徑更廣。
  • 運行時要求:Node 運行時需滿足 ^22.0.0 || >=24.0.0。
  • 宿主依賴:依賴宿主具備 workspaceRegistry.insertBefore、sessionPersistence.list() 等功能。
  • 配置容錯:配置非法(如 debounceMs 爲負數)會在加載時直接拋錯。

結尾

該插件通過官方 API 填補了 DSH 工作區管理的缺失環節,適合需要高頻率切換工作區且希望保持順序整潔的用戶。更多詳情可參考 SkillHub 目錄 或 GitHub 倉庫。

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

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

小夜