dsh-tab:給 DSH 會話區加書頁式標籤頁

前言

在 DeepSeek Harness(DSH)裏同時開多個會話時,常見做法是在側欄或列表裏點選切換。會話一多,當前在看哪一條、哪條在跑、哪條在等你回覆,都要靠記憶和反覆滾動側欄。瀏覽器裏用標籤頁管多個頁面是成熟習慣;DSH 官方界面默認並沒有把「主視圖裏的會話」做成一排可切換的標籤。

下面介紹社區客戶端插件 dsh-tab(npm 包名 dsh-tab,維護者 imchangchang):在 DSH 會話列頂部加一排書頁式標籤,一個會話一個標籤,切換走官方接口、不整頁刷新,並支持工作區角標、固定、關閉、歸檔與拖拽排序。插件基於官方 DSH slots、services 與主題 token 實現,分類屬於 客戶端。

這是什麼

dsh-tab 給 DeepSeek Harness 的主會話區增加瀏覽器風格的會話標籤欄:打開、恢復或新建會話時自動入籤;點擊標籤通過官方 uiWorkspace.openSession 切換,當前標籤與會話頁在視覺上連成「一張紙」的書頁效果。

宿主側 index.js 僅負責讓 DSH 識別包;標籤欄、菜單、拖拽與佈局樣式在瀏覽器半 client.js 中實現,由 DSH 直接加載,沒有單獨構建步驟。許可證爲 MIT;當前 npm 版本爲 0.2.0(以 package.json 爲準)。開發與驗證環境標註爲 DSH 0.2.1-rc.5 附近的桌面版與 Web GUI。

核心功能

以下能力均來自項目 README 說明。

標籤與會話

  • 一個會話對應一個標籤;切換不刷新整頁。
  • 最後一個標籤右側有 + 新建會話;標籤過多時標籤條橫向滾動,+ 始終可見。
  • 標籤左上角顯示所屬工作區(顏色由工作區 ID 哈希,文字爲工作區名,懸停可看全名);固定爲僅圖標模式時使用更小字號。

固定、排序與關閉

  • 固定:固定標籤排在最左,寬約 40px、只顯示圖標並帶狀態點,與普通標籤之間有分隔線;右鍵可固定或取消固定。
  • 拖拽排序:按住標籤左右拖動換位,落點有強調色豎線;固定組與普通組各自組內排序,順序寫入 localStorage,刷新後保持。Esc 或窗口失焦可取消本次拖拽。
  • 關閉:標籤上的 ×、鼠標中鍵,或右鍵菜單(關閉 / 關閉右側 / 關閉其他 / 關閉全部)。關閉標籤不等於刪除會話。
  • 歸檔:右鍵「歸檔會話」,走官方 uiWorkspace.archiveSession;會話正在運行或等待回覆時會先確認是否「停止並歸檔」。

狀態與交互

  • 狀態點:藍色呼吸 = 正在運行;黃色 = 等你回覆;綠色 = 有新的完成內容。
  • 鍵盤:標籤獲得焦點時 ← / → 切換相鄰標籤並激活;右鍵菜單中 Esc 關閉菜單。
  • 主題:顏色使用 --dsw-alias-* token,隨 DSH 淺色 / 深色主題變化。

切換時序

切換標籤時會先跑約 140ms 的寬度過渡,動畫結束後再切換會話內容(避免與官方切會話時的同步重渲染搶在同一幀)。因此內容切換比點擊晚約 150ms;可在 client.js 頂部調整或關閉 SELECT_COMMIT_DELAY。

安裝與啓用

環境要求:DSH 桌面版或 Web GUI,版本在 0.2.1-rc.5 附近(詳見倉庫「兼容性」一節)。

從 npm 安裝(推薦):在 DSH 中讓 Agent 執行:

plugin_manager install_bundle target=dsh-tab

也可先下載包再安裝:

npm pack dsh-tab

(或在 npmjs.com/package/dsh-tab 下載 tgz,再按 DSH 本地包安裝方式處理。)

安裝後刷新窗口(macOS 上爲 Cmd+R)生效。安裝或升級後,建議在設置裏確認依賴版本爲剛安裝的發佈版本。

從源碼安裝:將克隆得到的 dsh-tab 目錄作爲本地插件——設置 → 插件 → 添加插件,選擇該目錄;或執行:

plugin_manager install_bundle target=<dsh-tab 的絕對路徑>

插件以當前 DSH 進程權限在客戶端運行;安裝前請自行查看 GitHub 源碼 與 MIT 許可證,確認符合你的安全與合規要求。

典型用法

操作 方式
切換會話 左鍵點擊標籤
關閉標籤頁 標籤 × / 中鍵 / 右鍵菜單
新建會話 最後一個標籤右側 +
調整順序 同組內按住標籤拖拽
固定 / 取消固定 右鍵 → 固定標籤頁 / 取消固定標籤頁
批量關閉 右鍵 → 關閉右側 / 關閉其他 / 關閉全部
歸檔 右鍵 → 歸檔會話
鍵盤 標籤聚焦時 ← / →

標籤順序與固定狀態保存在瀏覽器 localStorage 鍵 dsh.tab.view.v2(結構爲 { tabs, pinned });舊鍵會自動遷移。這些數據不上傳、不髮網絡請求;工作區角標僅讀取官方工作區標題。

適用場景與注意

適合:經常在 DSH 主視圖並行維護多個會話、希望用標籤快速切換且保留工作區歸屬信息的開發者或日常用戶。

兼容性邊界(README「已知邊界」與「兼容性」):

  • 幀佈局與官方 DOM 標記(如 data-shell-bottom、data-shell-overlay)耦合;若官方調整三行 frame 結構,標籤欄可能回退到三欄下方,需更新插件中的 FRAME_CSS。
  • 拖拽不能跨固定組與普通組;拖到邊緣時標籤條不會自動滾動。
  • 未實現全局快捷鍵(如 ⌘T / ⌘W 等);主要在 macOS 桌面版與 Chrome 系 Web GUI 上驗證,其他平臺未測試。

DeepSeek Harness 生態強調「一切皆插件」;SkillHub 目錄頁 爲社區收錄,與 DeepSeek / 幻方無官方從屬關係。

結尾

dsh-tab 把 DSH 主視圖裏的會話收成一排可固定、可排序、帶工作區角標的書頁式標籤,切換與會話生命週期仍走官方 workspace 接口,本地只持久化標籤順序與固定狀態。

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

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

小夜