dsh-workspace-sort:工作區排序、會話摺疊與按 Provider 代理路由

前言

DeepSeek Harness(DSH)側邊欄在「按工作區」視圖裏,工作區順序和每個工作區下可見對話條數,往往跟不上「最近在用哪個項目」的實際節奏;同時掛多家模型時,全局 HTTPS_PROXY 要麼讓國內 Provider 也繞代理,要麼海外 Provider 完全出不去。社區插件 dsh-workspace-sort(維護者 LostAbaddon,GitHub:LostAbaddon/dsh-workspace-sort)在一個包裏提供兩組能力:側邊欄按最新對話排序、可配置摺疊條數、按工作區記憶模型,以及 Host 側按 Provider 決定是否走代理。下面按安裝、設置與典型用法說明。

這是什麼

dsh-workspace-sort 是 DSH 的 bundle 插件(dsh.bundle.patch),同時改客戶端 UI 與 Host 網絡路徑。當前 package 版本爲 1.1.0,許可證 MIT,Node >=20。分類上屬於客戶端注入(並含 Host 代理補丁);尚未發佈到 npm,安裝需用 GitHub 地址或(Web 端)本機目錄路徑。

核心功能

側邊欄

在「按工作區」和「按工作區樹」兩種分組下:

  • 工作區按其中最新一條普通對話的更新時間降序排列;無此類對話時用工作區創建時間。時間戳相同則保持原相對順序。「單列表」模式不干預,仍用 DSH 自帶排序。
  • 每個工作區收攏時顯示的空閒對話條數可在設置裏改,默認 5(1~100)。正在運行、新會話佔位、等待回答的對話始終顯示,不計入配額。
  • 收攏時若還有未列出的對話,列表下方會出現「還有 N 條對話」;展開後變爲「收攏」。工作區標題本身摺疊時,一行對話都不顯示,該提示也不顯示。
  • 可選:每個工作區獨立記住模型與思考深度,點該工作區「新會話」時套用該工作區上次選擇(從未記錄則不干預,仍用全局默認)。
  • 每條用戶自己發的消息,時間與複製按鈕之間增加「修改」:編輯 Markdown 原文後確認,會停掉當前回覆、分岔新會話、發送改寫內容、切到新會話並歸檔原會話(非刪除;歸檔可逆,數據仍在 ~/.dsh/sessions/...)。

三個側邊欄相關開關在 設置 → 通用 → 工作區對話排序(在「繁忙時的發送行爲」與「性能與用量」之間),存於瀏覽器 localStorage(dsh.workspace-sort.v1);工作區順序寫入 Host,同一 profile 內各客戶端共享。

代理路由

在進程 globalThis.fetch 上按目標主機名決定走代理還是直連:例如 Gemini、OpenRouter、Agnes 等可勾選走代理,DeepSeek、Kimi、MiniMax、GLM 等保持直連;deepseek、deepseek-official、ollama、lmstudio 永不走代理。代理地址與規則在 設置 → 代理路由 配置,保存即生效、無需重啓;配置落盤 $DSH_HOME/workspace-sort/proxy-config.json。

安裝與啓用

DSH 插件安裝支持 npm 包名、GitHub 倉庫地址、本機目錄路徑。本倉庫尚未發佈 npm,以 GitHub 或路徑爲準。插件以當前 DSH 進程權限運行,安裝前建議自行查看倉庫源碼與 MIT 許可證。

桌面端(Electron)

側邊欄「插件」→「添加插件」,在「包名或地址」填寫:

github:LostAbaddon/dsh-workspace-sort

安裝完成後按提示重啓應用。dsh plugin --profile desktop ... 會被拒絕,desktop profile 由 Electron 獨佔管理。

Web 端(dsh web)

dsh plugin --profile web add github:LostAbaddon/dsh-workspace-sort

生效需重啓 dsh web。卸載時使用與安裝相同的來源:

dsh plugin --profile web remove github:LostAbaddon/dsh-workspace-sort

從 GitHub 安裝若出現 ERR_PNPM_GIT_RESOLVE_FAILED,多爲 HTTPS 訪問 GitHub 失敗;可按 pnpm 提示配置 git 傳輸改寫,或改用本機絕對路徑作爲安裝來源(與 README 說明一致)。

典型用法

調整排序與摺疊

  1. 安裝並重啓後打開 設置 → 通用 → 工作區對話排序。
  2. 按需改「每個工作區顯示 N 條對話」、開關「工作區按最新對話排序」、開關「獨立記住模型與思考深度」。
  3. 若需固定手動拖動的工作區順序,關閉「工作區按最新對話排序」(否則下次重排會按時間戳還原)。

修改歷史輸入

  1. 在已加載的消息上點鉛筆「修改」,在編輯框改內容,Cmd/Ctrl+Enter 提交。
  2. 確認框會說明該輸入之後將移除幾條對話;確認後自動分岔、發送並歸檔原會話。
  3. 若消息未加載到當前窗口、是會話首條、或 15 秒內無法停掉當前回覆等,操作會被拒絕並在編輯框顯示原因。

配置代理

  1. 打開 設置 → 代理路由,填寫代理地址(如 http://127.0.0.1:7890),勾選需要走代理的 Provider,必要時追加額外主機規則。
  2. 可用「測試代理」做一次本地 CONNECT 握手檢查。
  3. 關閉總開關則全部直連,配置仍保留。

適用場景與注意

  • 適合:多工作區並行、希望「最近聊過的項目」排在側邊欄上方;需要國內模型直連、海外模型走本地代理並存;希望按工作區固定默認模型而非全局一條。
  • 注意:開啓「獨立記住模型與思考深度」時,DSH 的 selectModel 可能順帶更新全局默認模型,插件不會寫回全局設置(README 已說明副作用)。手動排好的工作區順序在開啓按時間排序時會被覆蓋。修改輸入依賴分岔與歸檔,失敗時會清理半成品會話。
  • 社區目錄頁與 GitHub 由維護者與社區託管,與 DeepSeek / 幻方無官方從屬關係;星標與目錄元數據以各站點當時顯示爲準。

結尾

dsh-workspace-sort 把側邊欄的排序、摺疊、分工作區模型偏好和歷史輸入修正,與 Host 側按 Provider 的代理路由收在一個插件裏,配置多在設置頁完成。進一步瞭解與 issue:

  • 目錄頁:https://www.skillhub.cn/plugins/LostAbaddon/dsh-workspace-sort
  • 倉庫:https://github.com/LostAbaddon/dsh-workspace-sort
羽毛球分组比赛记分
小程序二维码

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

小夜