前言¶
DeepSeek Harness (DSH) 原生的排序機制僅作用於工作區組內的會話,工作區本身的順序依賴手動拖拽,且重啓後順序會重置。dsh-workspace-auto-sort 爲 DSH Web / 桌面端新增了工作區自動排序能力:監聽會話活動,根據用戶消息時間自動重排側邊欄工作區,並將順序持久化到磁盤,重啓後保持。
核心能力¶
該插件運行在宿主進程,不依賴瀏覽器端注入,通過官方 workspaceRegistry.insertBefore API 進行重排。
- 活動監聽與過濾:監聽宿主
session/event,按activity口徑刷新會話最後活動時間(默認'prompt',僅認用戶消息);自動排除origin === 'subagent'的隱藏子代理會話。 - 防抖與重排:活動事件在防抖窗口(默認 750ms)內合併後觸發重排計算。
- 持久化排序:通過
workspaceRegistry.insertBefore(id, beforeId)應用重排,與手動拖拽使用同一條持久化通道。 - 配置靈活:支持配置活動口徑(
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。需手動執行以下步驟:
- 在 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
- 編輯
~/.dsh/profiles/desktop/package.json,在dependencies中增加:
"@dsh-plugins/dsh-workspace-auto-sort": "link:<克隆目錄>/dsh-workspace-auto-sort"
- 在同文件
dsh.profile.bundles數組末尾追加:
"@dsh-plugins/dsh-workspace-auto-sort"
- 重啓桌面端生效。
啓用後,在任意工作區運行會話,該工作區將自動上浮;關閉插件(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 倉庫。