dsh-entry-organizer:側欄與標籤的拖拽排序與跨區搬移

前言

DeepSeek Harness(DSH)左側「全局面板」和會話頂部的「對話 / 閱讀 / 軌跡」等標籤,順序通常由宿主默認佈局決定。插件一多,常用入口沉在列表中間,想臨時把某個面板頂到標籤欄快速切換也不方便。官方沒有提供側欄與標籤的自由排序,也沒有把側欄條目當成真實會話標籤來用的能力。

dsh-entry-organizer(入口編排)是維護者 xishuai-zero 發佈的客戶端插件:在瀏覽器裏用拖拽(或設置頁按鈕)調整側欄條目與頂部標籤順序,並支持把側欄行搬到標籤區、再拖回側欄。順序與搬移狀態寫在本機 localStorage,重啓後保留。包爲零依賴、無構建步驟,MIT 許可;當前 npm 版本爲 0.1.1,要求宿主 DSH >=0.2.1-rc.5。

這是什麼

一句話:dsh-entry-organizer 只改「入口出現在哪、以什麼順序出現」,不替換官方面板組件,也不接管 pin 顯隱。

名稱裏的 entry 指側欄面板條目和會話視圖標籤,與入場動畫類插件(如 dsh-entry-transition)或 payload 塑形類插件(如 dsh-entry-shaper)不是同一概念。

插件通過 dsh.bundle manifest 安裝:瀏覽器半身由 dsh.client 聲明,宿主側用根目錄 cordis.patch.yml 的一行 insert 掛進 profile。無服務端狀態,index.js 僅爲空殼聲明。

核心功能

側欄與標籤拖拽排序

按住左側欄「全局面板」列表中的插件行拖動即可重排;實現上只寫各行 style.order,側欄 nav 爲 flex 佈局,不移動、不重建官方 React 節點。

會話頂部標籤可左右拖動重排;「對話」固定首位,不參與拖拽。標籤容器同樣用 flex order 生效。

跨區搬移

把側欄行拖到頂部標籤行:側欄該行消失,頂部出現同名標籤。點擊標籤走官方 layout.selectPanel() 打開對應面板,並顯示左上角「← 返回對話」浮標。把標籤拖回側欄(或拖到側欄空位)則還原爲側欄行,落點決定插在目標行上方還是下方。

搬移通過 ctx.slots.register({ name: 'conversation.view', ... }) 註冊真實 View,啓動器只負責回對話並打開面板,不手寫渲染他人面板 Component。

溢出與無障礙

標籤行寬度不足時,宿主會把部分標籤截進右側「…」菜單,菜單內沒有可拖 DOM。插件在同一「…」菜單註冊「把搬入的標籤全部移回側欄」,保證能一鍵恢復。

「設置 → 入口編排」提供帶 ↑/↓ 的「側欄順序」「標籤順序」列表,無鼠標、觸屏或拖拽被截斷時仍可逐項調整。

持久化與設置頁

狀態存 localStorage 鍵 dsh.entry-organizer.v1(結構 v2:sidebarOrder、tabOrder、moved 等),全局一份,多窗口通過 storage 事件同步。設置頁顯示側欄行數、可排序標籤數、已搬入列表,支持逐項「移回側欄」或「恢復默認」。界面文案在 client.js 的 DICT 中,跟隨宿主語言。

從舊包名 dsh-entry-arrange 升級時會讀取舊鍵並遷移到新鍵;升級到 0.1.1 時 v1 存儲會自動遷到 v2(排序鍵改爲穩定 panel/view id),無需手動清緩存。

安裝與啓用

不確定本機 profile 名稱時,用 dsh plugin --help 或官方文檔確認;下文以市場常用的 web 爲例,桌面版常見爲 desktop,把 --profile web 換成你的 profile 即可。

# 1) 從 npm(推薦,預構建、免 allowBuilds 構建授權)
dsh plugin --profile web add dsh-entry-organizer

# 2) 從 GitHub 源碼(按 tag 固定版本)
dsh plugin --profile web add github:xishuai-zero/dsh-entry-organizer#v0.1.1

# 3) 從 GitHub Release 的預構建 tarball
dsh plugin --profile web add https://github.com/xishuai-zero/dsh-entry-organizer/releases/download/v0.1.1/dsh-entry-organizer-0.1.1.tgz

安裝後重啓 DSH(或等待宿主熱加載)。驗證:左側欄條目可拖、設置裏出現「入口編排」。卸載通過插件管理界面或官方文檔從 profile 移除該包。

插件在 DSH 客戶端進程內運行,與頁面同源權限;安裝前建議瀏覽 GitHub 倉庫 源碼與 MIT 許可證,確認符合你的使用習慣。

典型用法

1、側欄排序:在「全局面板」列表按住某行拖動到目標位置,鬆手後順序立即生效並寫入本地存儲。

2、標籤排序:在會話頂部拖動除「對話」外的標籤左右排列;僅對當前可見標籤集合生效(可見數量由宿主寬度與 order 共同決定,見下文限制)。

3、搬到標籤欄:把側欄某行拖到頂部標籤行,用新標籤切換面板;需要還原時拖回側欄,或在「設置 → 入口編排」點「移回側欄」,或在「…」菜單使用「把搬入的標籤全部移回側欄」。

4、不用拖拽:打開「設置 → 入口編排」,用 ↑/↓ 調整「側欄順序」「標籤順序」。

適用場景與注意

適合:插件較多、希望固定側欄順序;希望把常用面板臨時放到頂部標籤切換;多窗口同時開 DSH 且希望順序在本機各窗口一致(storage 同步)。

下列限制來自 README 中的「已知限制」,屬於宿主契約邊界:

  • 「…」菜單裏的官方標籤不能拖出,只能菜單內一鍵把本插件搬入的標籤移回側欄。
  • 標籤重排只作用於可見標籤;調小 order 只能讓條目更容易進入可見集,插件不修改官方條目的排序邏輯。
  • 側欄顯隱仍由官方「更多 → 固定/取消」決定;本插件只管順序與搬移。
  • 「插件管理」行未被硬編碼排除,也可能被拖動;本版無鎖定開關。
  • 狀態僅存本機瀏覽器,不隨賬號跨設備;清站點數據會恢復默認。
  • 依賴宿主 DOM 標記(如 [data-slot="sidebar.panellist"]、[data-conversation-tabs]);宿主大改結構時需插件適配。
  • 切換界面語言後,已搬入標籤的顯示文案需重新搬移一次纔會更新爲新語言字符串;排序與 id 不會丟。

數據與隱私:不聯網、不收集數據;只讀寫上述 localStorage 鍵,遷移時只讀舊鍵 dsh.entry-arrange.v1 且不刪除。

結尾

dsh-entry-organizer 用最小侵入方式(flex order + 動態 View 註冊)解決側欄與標籤的順序和跨區擺放,並給出溢出菜單與設置頁兜底。社區目錄與 DeepSeek / 幻方無官方從屬關係,可按需從目錄頁或 GitHub 獲取包信息與 issue 入口。

  • 目錄頁:https://www.skillhub.cn/plugins/xishuai-zero/dsh-entry-organizer
  • 倉庫:https://github.com/xishuai-zero/dsh-entry-organizer
羽毛球分组比赛记分
小程序二维码

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

小夜