dsh-sidebar-entries:讓 DeepSeek Harness 左側邊欄按長列表應有的方式工作

前言

DeepSeek Harness(DSH)左側一列通常同時承擔兩件事:上方是一疊面板入口(插件、插件市場、自動化任務等),下方是工作區與會話樹。插件裝多了之後,面板圖標會把會話列表擠成窄條;置頂會話分散在各個工作區裏,歸檔會話又和進行中的行混在一起。宿主自帶的 createPanelPins 只在內存裏記面板順序,刷新即丟,且會永久固定「插件」那一行。

下面介紹社區插件 dsh-sidebar-entries(維護者 FragrantLotus,分類爲客戶端)。它在不 patch 宿主應用的前提下,通過 DOM 與 localStorage 調整已渲染的側邊欄,把面板排序、摺疊、高度上限、置頂區、視圖標籤、歸檔歸攏和頁腳入口提升串成一套可持久化的交互。

這是什麼

dsh-sidebar-entries 是面向 DeepSeek Harness Web 客戶端的側邊欄增強插件。npm 包名與倉庫名均爲 dsh-sidebar-entries,當前版本 0.7.16,許可證 MIT。可在社區目錄 SkillHub 查看簡介與安裝指引;SkillHub 爲獨立社區站點,與 DeepSeek / 幻方無官方從屬關係。

實現上分爲 Host 半部(lib/index.js,診斷路由)與瀏覽器半部(lib/client.js,實際 UI 邏輯),通過 cordis.patch.yml 在 sidebar-entries 下掛載;包聲明無運行時依賴,安裝時不拉取額外構建產物。

核心功能

面板圖標區

  1. 長按約 0.3 秒後拖拽排序。短按仍切換面板,避免誤拖導航。鬆手後順序寫入 localStorage(鍵 dse.sidebar.order.v2),每次渲染後由 MutationObserver 重放;行以 aria-label 識別,「More」行固定爲錨點且不可拖。
  2. 列表頂部的摺疊箭頭。展開時顯示 v,摺疊後顯示 ^,一鍵隱藏全部面板圖標;狀態鍵 dse.sidebar.collapsed.v1,刷新後保留。箭頭本身不可拖,始終可找回展開入口。
  3. 頁腳入口提升到同一軌道。凡註冊在側邊欄頁腳(sidebar.footer.action 或注入頁腳容器的按鈕)的控件,會被複製爲軌道內一行並隱藏原按鈕(data-dse-lifted);點擊轉發到原控件,插件無需被本包硬編碼。卸載或客戶端重建時會清理佔位行並清除標記。

面板圖標棧高度上限爲側邊欄總高度的 30%,按整行(36px)向下取整,窗口縮放時重算。

工作區會話列表

  1. 置頂(置頂)分區。各工作區裏已置頂的 Session 歸攏到列表最上方單獨一組,原行 display:none 保留在 DOM 供 React 更新;副本點擊通過子節點路徑回放至原行,取消置頂直接調用 uiWorkspace.unpinSession(id)。狀態圓點與「待回覆 / 待批准」等文案從隱藏的原行鏡像同步,而非靜態複製標題。
  2. 分叉子會話跟進。新建 Session 的 parentId 指向已置頂會話時,在 ten 分鐘內更新過的候選會被自動置頂並插在父會話之後;首次運行只種子化已知 id,避免升級時誤置頂歷史會話。取消父會話置頂不會連帶取消子會話。
  3. 歸檔會話沉底。每組內按 updatedAt 新到舊排到組末,上方加細分隔線,活躍行順序仍由宿主決定。

置頂區同樣受 30% 整行高度上限約束;分區摺疊狀態鍵 dse.pin.closed.v1,置頂順序鍵 dse.pin.order.v1。

對話視圖標籤欄

對話 / 軌跡 / 上下文 等標籤可拖拽排序(與面板類似的 lift + FLIP),順序鍵 dsh.sidebar-entries.viewtab.v1。對話 標籤由宿主固定在首位,不可移動;可見標籤數量由欄寬決定,本插件不改動該邏輯。

內置與容錯

插件自帶 文獻 一行,用於打開文獻插件面板(在頁腳按鈕、遷移後的 dock 或服務之間降級查找)。各子系統在獨立 guard 下啓動,單塊失敗不會阻止整包掛載;Host 提供 /sidebar-entries/* 診斷路由(如 GET /sidebar-entries/ping、GET/POST /sidebar-entries/log),開發時可配合 POST /sidebar-entries/reload 熱重載客戶端包。

安裝與啓用

推薦從 npm 安裝預構建包:

dsh plugin --profile web add dsh-sidebar-entries

若需直接從 GitHub 源安裝:

dsh plugin --profile web add https://github.com/FragrantLotus/dsh-sidebar-entries

package.json 要求 dsh 版本 >=0.2.0-rc.2 || >=0.2.1-rc.2,Node ^22.19.0 || >=24.0.0。無論哪種方式,安裝後需 重啓 Web 應用 以加載 bundle patch,再 刷新頁面。

社區目錄頁亦可將「請安裝 DSH 插件 FragrantLotus/dsh-sidebar-entries」一類指令發給 Harness 代理完成安裝,具體文案以 SkillHub 插件頁 爲準。

典型用法

安裝並重啓、刷新後,行爲主要來自手勢與側邊欄 UI,無需額外配置文件。

整理面板圖標:在左側軌道對某一圖標 按住約 0.3 秒 再拖動到目標位置,鬆手即持久化。需要把縱向空間還給會話列表時,點軌道頂部的 摺疊箭頭 收起全部面板圖標。

集中跟進置頂會話:在宿主裏照常置頂 Session;插件會在列表頂部生成 置頂 分區,運行中與待交互狀態會隨原行更新。從置頂區 fork 出的新子會話,在符合條件時會出現在父會話下方。

調整對話區標籤順序:在會話上方的視圖標籤欄拖拽除 對話 以外的標籤;順序保存在瀏覽器 localStorage。若要恢復默認,可在瀏覽器中清除該站點數據(會一併重置 dse.sidebar.order.v2 等鍵)。

開發調試(可選):Host 運行時可訪問 GET /sidebar-entries/ping 查看存活與版本;設置 window.__dseDebug 後客戶端會向 GET/POST /sidebar-entries/log 上報更多事件。

適用場景與注意

適合長期在 DSH Web 端並行多個插件、多個工作區與會話的用戶:面板可排序與一鍵摺疊,置頂與歸檔規則讓列表可讀性更接近日常 IDE 側欄。

使用前請注意:

  • 插件在 當前 DSH 進程與 Web 客戶端權限 下運行,會讀寫瀏覽器 localStorage 並操作 DOM;安裝前應閱讀 GitHub 倉庫 源碼與 MIT 許可證,確認符合你的安全策略。
  • 置頂區副本隱藏了 ⋯ 菜單按鈕(爲保持點擊回放索引),複雜菜單操作仍可能需要到原工作區展開列表。
  • 頁腳提升依賴頁腳按鈕仍在 DOM 中;文獻等內置行在對應插件未安裝時會安靜降級。

清除站點本地存儲會丟失自定義排序、摺疊狀態與標籤順序,屬於預期行爲。

結尾

dsh-sidebar-entries 把 DSH 左側欄裏「面板太多擠佔會話樹」「置頂分散」「歸檔穿插」「頁腳與軌道分裂」等具體問題,收成可持久化的排序、摺疊、分區與高度上限,並保留置頂會話的實時狀態與子會話跟進。若你在 SkillHub 或 GitHub 檢索側邊欄類 DSH 插件,可從下面鏈接進入詳情與 Issue:

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

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

小夜