前言¶
在 DeepSeek Harness(DSH)裏用 Web UI 管多個項目時,工作區一多,側邊欄裏常用的條目容易被新開的文件夾頂到下面。宿主註冊新工作區時會把新項插到列表最前面,每多建一個目錄,正在用的那幾個就往下挪一格。下面介紹社區插件 dsh-workspace-pins:把常用工作區釘在側邊欄頂部並保持固定順序,必要時還能連同對話記錄永久移除工作區註冊(不刪磁盤上的項目文件夾)。
這是什麼¶
dsh-workspace-pins 是面向 DSH Web 客戶端的插件,維護者爲 junjundesk,在 SkillHub 插件目錄 中歸類爲「客戶端」。它不新增業務狀態、不改內置包,複用宿主已有的工作區排序、歸檔與會話能力,用瀏覽器本地存儲記住「釘住」名單,並在側邊欄底部提供圖釘入口與浮層面板。
核心功能¶
固定與排序¶
- 點側邊欄底部圖釘按鈕,在面板裏點某行左側圖釘即可固定該工作區。
- 固定項立刻升到列表最上面;後固定的接在固定區末尾,先固定的始終在上。
- 懸停固定項可用
↑↓調整固定區內的先後;固定區整體始終在所有未固定工作區之上。 - 再點一次圖釘可取消固定;面板支持「全部取消固定」。取消固定不影響工作區本身與會話。
順序通過宿主 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 / 幻方無官方從屬關係。
方式一:插件管理器(推薦)¶
- 打開 dsh Web UI(默認
http://127.0.0.1:3080); - 左下角 設置 → 插件;
- 選 從本地目錄安裝,
link:目標指向本地的dsh-workspace-pins目錄; - 裝完刷新頁面,側邊欄底部、設置圖標旁會出現圖釘按鈕。
管理器會自動寫好依賴、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),卸載後可手動清除。
典型用法¶
經過上面的安裝步驟後,日常可按下面順序操作:
- 固定:圖釘按鈕 → 選工作區 → 點行左側圖釘。
- 調序:懸停固定項 →
↑↓。 - 找條目:超過 6 個工作區時用面板頂部篩選框。
- 徹底移除註冊:懸停 → 垃圾桶 → 閱讀確認條 → 確認(會話記錄刪除,項目目錄保留)。
- 取消固定:再點圖釘或「全部取消固定」。
固定名單僅存本機瀏覽器,不跨設備同步;換瀏覽器需重新固定。與宿主自帶的工作區拖拽不衝突:拖動固定區內順序會被下次校正覆蓋,請用面板內 ↑ ↓;非固定區拖動不受影響。頁面未打開時不跑順序守衛,期間新建的工作區可能臨時排在最前,下次打開會自動歸位。
適用場景與注意¶
適合長期在 DSH Web UI 裏切換多個倉庫、希望「常開的幾個」始終停在側邊欄頂部的開發者。不適合需要跨瀏覽器/跨設備同步固定名單的場景(當前設計爲本地 localStorage)。
刪除會話後,搜索索引(SQLite)可能短暫殘留命中項,宿主會自行對賬;若需立刻乾淨,可重啓 dsh。修改 Host 半邊 index.js 後需禁用再啓用插件條目或重啓;改 lib/client.js 可走 HMR,刷新即可。
維護者提供離線自檢(不依賴瀏覽器):
node test/client-selfcheck.mjs
結尾¶
dsh-workspace-pins 用宿主已有接口解決「新工作區把常用的擠下去」和「清理不要的工作區與會話記錄」兩類問題,入口輕量(側邊欄圖釘 + 面板)。進一步瞭解可查看 SkillHub 目錄頁 與 GitHub 倉庫。