dsh-workspace-pins:側邊欄固定工作區順序

前言

在 DeepSeek Harness(DSH)裏用 Web UI 管多個項目時,工作區一多,側邊欄裏常用的條目容易被新開的文件夾頂到下面。宿主註冊新工作區時會把新項插到列表最前面,每多建一個目錄,正在用的那幾個就往下挪一格。下面介紹社區插件 dsh-workspace-pins:把常用工作區釘在側邊欄頂部並保持固定順序,必要時還能連同對話記錄永久移除工作區註冊(不刪磁盤上的項目文件夾)。

這是什麼

dsh-workspace-pins 是面向 DSH Web 客戶端的插件,維護者爲 junjundesk,在 SkillHub 插件目錄 中歸類爲「客戶端」。它不新增業務狀態、不改內置包,複用宿主已有的工作區排序、歸檔與會話能力,用瀏覽器本地存儲記住「釘住」名單,並在側邊欄底部提供圖釘入口與浮層面板。

核心功能

固定與排序

  1. 點側邊欄底部圖釘按鈕,在面板裏點某行左側圖釘即可固定該工作區。
  2. 固定項立刻升到列表最上面;後固定的接在固定區末尾,先固定的始終在上。
  3. 懸停固定項可用 ↑ ↓ 調整固定區內的先後;固定區整體始終在所有未固定工作區之上。
  4. 再點一次圖釘可取消固定;面板支持「全部取消固定」。取消固定不影響工作區本身與會話。

順序通過宿主 workspaces.insertBefore() 寫進工作區註冊表,關頁面後置頂仍有效;下次打開頁面會再校正一次(例如頁面關閉期間新建的工作區會被推回固定區之後)。

篩選

工作區超過 6 個時,面板頂部會出現篩選框,可按名字或路徑過濾。

永久刪除工作區(含會話記錄)

懸停任意一行,點最右側垃圾桶,確認後會依次:歸檔該工作區名下的會話(正在運行的先停止)→ 刪除這些會話的記錄文件 → 刷新會話列表 → 移除工作區註冊。任一步失敗會停下並在面板上顯示原因,避免出現「工作區沒了、對話還在」的半截狀態。

刪的是對話記錄,不是項目文件夾:工作區目錄裏的源碼和文件不動。操作不可恢復,確認條會寫明受影響的會話數量。

宿主沒有「刪除會話」的公開 API,插件在 Host 側註冊最小 HTTP 端點:

POST /dsh-workspace-pins/delete-sessions   { sessionIds: string[] }

在會話根目錄下按約定路徑刪除對應 session-<id> 目錄,並對 session id 與批量數量做了約束,避免路徑穿越。

環境與依賴

項 說明
支持 dsh >=0.2.2-alpha.2(engines.dsh 聲明;實測 0.2.2-alpha.2,Windows 11 + web profile)
平臺 Web(dsh.client.platform: web)
第三方依賴 無
許可證 MIT
Node >=22(見 package.json)

低於聲明的 dsh 版本時,安裝清單檢查會在跑 pnpm 之前拒絕安裝。查看本機版本:

dsh --version

安裝與啓用

插件以當前 dsh 進程權限運行;安裝前建議在 GitHub 倉庫覈對源碼與 MIT 許可證。SkillHub 爲社區目錄,與 DeepSeek / 幻方無官方從屬關係。

方式一:插件管理器(推薦)

  1. 打開 dsh Web UI(默認 http://127.0.0.1:3080);
  2. 左下角 設置 → 插件;
  3. 選 從本地目錄安裝,link: 目標指向本地的 dsh-workspace-pins 目錄;
  4. 裝完刷新頁面,側邊欄底部、設置圖標旁會出現圖釘按鈕。

管理器會自動寫好依賴、dsh.profile.bundles 和 cordis.patch.yml,無需手工改文件。

方式二:命令行 + 手工清單

先把插件目錄放到本機,再在 profile 目錄裏鏈入包:

git clone https://github.com/junjundesk/dsh-workspace-pins.git
cd dsh-workspace-pins
dsh plugin --profile web add link:"$(pwd)"

pnpm add 只會寫依賴,還需手工補兩處(插件管理器會自動完成):

~/.dsh/profiles/web/package.json 的 dsh.profile.bundles 數組中加入 "dsh-workspace-pins"。

~/.dsh/profiles/web/cordis.patch.yml 末尾增加:

- insert:
    - id: workspace-pins
      name: dsh-workspace-pins

然後重啓 dsh --profile web 或等待 HMR 重新裝配。

裝完怎麼確認

dsh --profile web --dump-config | grep -n workspace-pins

能看到 workspace-pins 即表示已裝配;頁面上側邊欄底部應出現圖釘圖標。

卸載

dsh plugin --profile web remove dsh-workspace-pins

再從 dsh.profile.bundles 與 cordis.patch.yml 刪掉對應項並重啓。固定名單在瀏覽器 localStorage(鍵 dsh.workspace-pins.v1),卸載後可手動清除。

典型用法

經過上面的安裝步驟後,日常可按下面順序操作:

  1. 固定:圖釘按鈕 → 選工作區 → 點行左側圖釘。
  2. 調序:懸停固定項 → ↑ ↓。
  3. 找條目:超過 6 個工作區時用面板頂部篩選框。
  4. 徹底移除註冊:懸停 → 垃圾桶 → 閱讀確認條 → 確認(會話記錄刪除,項目目錄保留)。
  5. 取消固定:再點圖釘或「全部取消固定」。

固定名單僅存本機瀏覽器,不跨設備同步;換瀏覽器需重新固定。與宿主自帶的工作區拖拽不衝突:拖動固定區內順序會被下次校正覆蓋,請用面板內 ↑ ↓;非固定區拖動不受影響。頁面未打開時不跑順序守衛,期間新建的工作區可能臨時排在最前,下次打開會自動歸位。

適用場景與注意

適合長期在 DSH Web UI 裏切換多個倉庫、希望「常開的幾個」始終停在側邊欄頂部的開發者。不適合需要跨瀏覽器/跨設備同步固定名單的場景(當前設計爲本地 localStorage)。

刪除會話後,搜索索引(SQLite)可能短暫殘留命中項,宿主會自行對賬;若需立刻乾淨,可重啓 dsh。修改 Host 半邊 index.js 後需禁用再啓用插件條目或重啓;改 lib/client.js 可走 HMR,刷新即可。

維護者提供離線自檢(不依賴瀏覽器):

node test/client-selfcheck.mjs

結尾

dsh-workspace-pins 用宿主已有接口解決「新工作區把常用的擠下去」和「清理不要的工作區與會話記錄」兩類問題,入口輕量(側邊欄圖釘 + 面板)。進一步瞭解可查看 SkillHub 目錄頁 與 GitHub 倉庫。

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

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

小夜