前言¶
在 DeepSeek Harness(DSH)裏用 Web 或桌面客戶端時,左側欄會依次堆疊品牌行、New Session、各個全局面板入口、工作區列表和 Settings。每裝一個會註冊面板的插件,側欄就多一行——插件管理、插件市場、定時任務、MCP Studio、上下文、Skills、系統監控等,十行左右大約佔掉 400px 高度,留給會話列表的空間往往只剩幾條。若你習慣同時開多個插件面板,又不想改 DSH 本體,就需要一種只動客戶端、把「面板入口」收攏的辦法。下面介紹社區插件 dsh-sidebar-shelf(側欄收納架)的做法。
這是什麼¶
dsh-sidebar-shelf 由維護者 wumouren114 發佈,分類爲客戶端插件,MIT 許可證,當前包版本爲 0.2.1(以倉庫 package.json 爲準)。它把側欄裏所有面板註冊行摺疊成原位置的一行 Panels / 面板,緊挨在 New Session 與工作區列表之上;需要某個面板時再點開收納架選擇,用完後側欄仍保持緊湊。
插件目錄頁:skillhub.cn/plugins/wumouren114/dsh-sidebar-shelf。DSH 生態強調「一切皆插件」;SkillHub 等社區目錄與 DeepSeek / 幻方無官方從屬關係,安裝前請自行查看源碼與許可證。
核心功能¶
以下能力均來自倉庫 README 與實現說明,未在資料中出現的配置項不寫。
一行替代整列面板入口¶
收納架佔用的仍是原生面板行的位置、寬度和間距; sibling 面板行被隱藏後,工作區列表直接上移。收納架本身通過 sidebar.panellist 註冊一行(order: -1000,標籤爲「面板 / Panels」),複用 Shell 的 panelRow 按鈕、懸停、36px 軌道形態和 tooltip,而不是另畫一條假側欄。
收納架內的面板列表¶
- 從
ctx.slots.entriesOfSlot("sidebar.panellist")讀取其餘面板,按order與註冊順序排序,兩列展示,每項使用面板自己註冊的圖標組件。 - 打開面板走官方 API:
ctx.layout.selectPanel(id);當前選中狀態來自ctx.layout.panelInfo,在收納架內顯示 active 標記。 - 面板數量超過七個時出現搜索;支持鍵盤:
↑/↓移動、Enter打開、Esc關閉,直接輸入可過濾。
兼容「直插側欄」的插件行¶
部分插件不走路由 slot,而是用 data-dsh-*-entry 約定把一行插進側欄(如 dsh-webchat、taskboard、ssh)。收納架會在原位隱藏這些行,並在收納架頂部列出其圖標、標籤與 active 狀態;選中時調用該行自己的 click(),原有開關邏輯不變。
窄軌與主題¶
56px 側欄軌道模式下,仍顯示 Shell 的 36px 圖標,收納架在軌道側面展開而非蓋住軌道。樣式僅使用 --dsw-alias-*、--dsw-radius-*、--dsw-shadow-* 等 token,隨淺色 / 深色主題切換。
安裝與啓用¶
需要帶 web profile 的 DSH 客戶端(桌面應用共用同一套客戶端)。CLI 安裝 Node.js ≥ 20;客戶端要求 DSH 0.2.x。倉庫說明該包自帶手寫 lib/client.js,無 prepare / postinstall,從 GitHub 安裝時不會卡在 pnpm 的 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS。
README 中的安裝示例使用 desktop profile;若你實際跑的是 web、tui 等,把 --profile 換成對應名稱即可:
dsh plugin --profile desktop add github:wumouren114/dsh-sidebar-shelf
安裝後請在 Settings → Plugins 中啓用(會寫入 dsh.profile.bundles),並重新加載頁面。
驗證: 整列面板入口應變成 New Session 與工作區之間的單行 Panels。點擊後能看到所有已註冊面板(含 Plugins);選中一項會打開該面板並關閉收納架。
典型用法¶
- 完成安裝與啓用並重載頁面後,側欄只保留一行 Panels(或「面板」)。
- 點擊該行,在展開的收納架裏點選目標面板(例如插件管理、MCP Studio)。
- 面板較多時用搜索或鍵盤快速定位;用
Esc關閉收納架而不切換面板。 - 若同時使用帶
data-dsh-*-entry的插件,其入口會出現在收納架列表頂部,行爲與側欄原按鈕一致。
卸載或禁用插件後,標記、事件與樣式表會移除,原生多行面板入口恢復顯示。
實現要點(供排查問題)¶
插件不修改工作區行、品牌行、Settings 或宿主機行爲。核心在 lib/client.js:註冊收納架行 → 在 capture 階段攔截點擊以打開收納架並避免 Shell 對無效 id 調用 selectPanel → 用 scoped CSS 隱藏同列表內其他行(列表節點仍掛載以保持佈局)→ 彙總 slot 與注入行並渲染收納架 UI。
資料中記錄的驗證環境包括 DSH 0.2.1-rc.3、Windows、Chromium 1440×900 下的 23 項端到端檢查,以及 node test/smoke.mjs 的 10 項 manifest / 接線檢查(無瀏覽器依賴)。
適用場景與注意¶
適合: 已安裝多個側欄面板插件、希望把垂直空間還給工作區列表,且接受「面板入口默認收進收納架」的 DSH 用戶。
務必瞭解:
- 插件在當前 DSH 進程權限下運行;安裝前請閱讀 GitHub 源碼 與 MIT 許可證。
- 所有其他面板行都會被隱藏,包括 Shell 自帶的 “More”(Browse other plugins / Create your plugin);Plugins 面板仍可從收納架一次點擊打開。
- 僅當注入行遵循
data-dsh-*-entry時纔會被收納;無該標記的自定義注入行仍會留在側欄。 - 暫無「固定某幾個面板在側欄」的策略;需要可在倉庫 issue 反饋。
- 不要與同樣隱藏面板列表的插件疊用(如
dsh-toomuch-plugins、dsh-sidebar-organizer),只選其一。 - 若未來 DSH 更改側欄 DOM 結構,最壞情況是列表未被隱藏,而非側欄損壞。
結尾¶
dsh-sidebar-shelf 用一行原生樣式的 Panels 入口,把 DSH 左側所有面板(含符合約定的注入行)收進可搜索、可鍵盤操作的收納架,把側欄高度還給工作區。需要安裝命令、截圖與限制說明時,以倉庫 README 爲準。
- 目錄頁:https://www.skillhub.cn/plugins/wumouren114/dsh-sidebar-shelf
- GitHub:https://github.com/wumouren114/dsh-sidebar-shelf