前言¶
DeepSeek Harness (DSH) 官方側邊欄僅支持按工作區分組會話。當同一工作區內存在多個主題時,所有會話會擠在一組,難以按主題拆分。
dsh-session-topics 插件在展示層引入了“話題”軸,將側邊欄渲染爲“工作區 → [話題 → 子話題 → 會話] + 未歸話題”的結構。它是一個純客戶端插件,不依賴任何 Host 服務,不修改官方數據模型。
核心功能¶
1. 側邊欄層級結構¶
側邊欄展示順序爲:工作區 → 話題 → 子話題 → 會話 → 未歸話題。
* 新建話題:每個工作區行右側有 + 按鈕,用於在該工作區內新建話題。
* 話題操作:話題行懸停時顯示 +(新建子話題)、✎(重命名)、×(刪除)。
* 會話時間:會話行右側顯示相對時間(如“剛剛”、“5 分鐘前”),每分鐘自動刷新。
* 會話打開:點擊會話行可正常打開會話。
2. 拖拽交互¶
本插件接管了官方的拖拽手勢,但將排序與歸檔邏輯分開:
* 調整順序:將會話拖到另一會話的上/下半,顯示插入指示線,用於調整順序。
* 歸入話題:將會話拖到話題標題(含子話題)上,會話歸入該話題。
* 移出話題:將會話拖到“未歸話題”標題上,會話移出話題回到未歸類狀態。
* 拒絕跨工作區:跨工作區的拖拽會被直接拒絕。
3. 右鍵菜單¶
- 會話右鍵菜單:重命名(內聯編輯)、分叉會話、歸檔會話、移出話題。
- 工作區右鍵菜單:新建話題、重命名工作區、刪除工作區(刪除前確認)。
4. 數據持久化¶
展開/摺疊狀態、話題歸屬關係全部持久化到瀏覽器本地存儲,刷新頁面或重啓 DeepSeek Harness 後均會保留。
安裝與操作¶
安裝¶
在命令行中執行以下命令安裝:
dsh plugin --profile web add github:WangXuexin24/dsh-session-topics
臨時關閉¶
在插件市場 → 已安裝列表中,關閉本插件卡片的“啓用中”開關,然後按提示重啓 DeepSeek Harness。
再打開¶
在同一開關位置將其打開,並重啓 DeepSeek Harness。
卸載¶
在插件市場卡片的“卸載”按鈕點擊卸載;或使用命令:
dsh plugin --profile web remove dsh-session-topics
升級與驗證¶
- 升級本地代碼:直接修改項目文件,刷新瀏覽器頁面即可(客戶端 bundle 每次加載都重新獲取)。
- 驗證運行:側邊欄顯示“話題”分組結構而非官方純工作區分組,或運行
node test/smoke.mjs,輸出RESULT: all checks passed。
技術實現與限制¶
設計原則¶
- 零依賴:不依賴 Host 的任何服務,不調用子進程,不生成腳本,不修改 host 文件,不註冊工具,零 token 成本。
- 接管槽位:插件接管了
sidebar.workspaces槽位(priority: -1),必須實現被替換方的全部操作能力(如會話右鍵菜單)。 - 數據存儲:話題歸屬存儲在瀏覽器本地(
dsh.session.topics.v2),每次變更會自動備份到dsh.session.topics.v2.bak。若主存儲爲空而備份存在,側邊欄頂部會出現恢復條。 - 滾動契約:必須遵循官方
ui-workspace的 flex 佈局契約(flex:1; min-height:0; flex-direction:column),否則會導致內容無法滾動。
已知限制¶
- 話題層級:當前限制爲兩層(話題 → 子話題)。雖然可修改
MAX_TOPIC_DEPTH放開限制,但側邊欄寬度可能無法容納更深嵌套。 - 數據同步:話題歸屬數據僅存儲在當前瀏覽器本地,不跨設備同步,也不隨 Host 進程持久化。
- npm 發佈:目前未發佈至 npm(可選),僅支持從 GitHub 安裝。
參考資源¶
- GitHub 倉庫:https://github.com/WangXuexin24/dsh-session-topics
- 社區目錄:https://www.skillhub.cn/plugins/WangXuexin24/dsh-session-topics
- 許可證:MIT