前言¶
DSH 的側邊欄默認把所有會話平鋪在同一個列表裏,按工作區分組。一個 profile 用久了,會話條目多起來之後,想找某類對話只能靠名字前綴或者固定配合搜索,分組能力基本沒有。官方列表本身不提供摺疊分組,也不支持拖拽歸類。這份資料介紹的插件 yinqisy/dsh-session-folders 就是針對這個痛點:它不重建列表,而是在官方那棵會話樹上附加一層可摺疊、可排序的分類夾,把對話收納進目錄裏。插件由 YinqiSY 維護,屬於客戶端分類,許可爲 MIT,當前版本 1.0.2。
這是什麼¶
一句話定位:給 DSH 側邊欄的會話樹增加文件夾分類能力,拖進拖出即可改變會話歸屬。插件的官方描述是「File DeepSeek Harness conversations into folders inside the sidebar’s own session tree — decorates the official list instead of replacing it」,也就是隻做裝飾,不替換官方列表。
它解決三個具體問題:會話多了之後無法按主題歸攏;官方「展開其餘 N 個會話」截斷控件會把部分會話藏起來,分類看不到完整列表;換用其它會話管理插件後,官方行的操作能力(點擊、菜單、置頂、歸檔)會受影響。
核心功能¶
下面幾項能力都來自插件 README:
- 工作區行保留官方原有按鈕,插件在「全選」右側插入一個文件夾加號按鈕,點擊後在行下方就地展開輸入框,回車即可創建分類。
- 分類頭可以摺疊/展開,
⋯菜單支持重命名和刪除;刪除是兩段式確認,避免誤刪。 - 分類頭之間可以拖動排序;把對話行拖到分類頭上即歸入。
- 存在一個「未分類」頭,同樣是可摺疊的,也可以作爲把對話移出分類的投放目標。
- 對話行沿用官方行,點擊、
⋯菜單、置頂、歸檔、拖拽排序以及其它插件的行內按鈕全部照常工作。
插件的工作方式是在不移動任何官方節點的前提下完成裝飾:
- 把每個工作區分組改成 flex 列,把分類頭作爲獨立節點插進去;
- 給官方行設置 CSS
order,讓它們落在各自分類的波段裏; - 摺疊只給對應行加
display:none,展開即恢復; - 行的身份直接讀官方已有的
data-row-key(workspace:<id>/session:<id>),不依賴 React 內部結構。
同步過程由一個只關注會話樹區域的 MutationObserver 驅動、按幀節流,每一步都包在 try/catch 裏;如果官方 DOM 結構發生變化,插件不做任何事,側邊欄保持原樣。
README 給出的效果示意如下,新建分類按鈕位於工作區行內:
會話 +
DSAI 全選 ▣+ ⋯ ← 新建分類按鈕就在工作區行裏
⌄ MC 4 ⋯ ← 分類,可摺疊、可拖動排序
對話 A
⌄ 插件 1 ⋯
對話 B
⌄ 未分類 ← 拖到這裏即移出分類
安裝與啓用¶
README 提供的安裝命令是:
dsh plugin --profile web add github:YinqiSY/dsh-session-folders
如果需要在插件管理裏以本地目錄方式安裝,README 提到這種方式在開發時更常用。命令中的 --profile web 與 dsh/client.platform: web 的配置一致。
典型用法¶
安裝後主要通過側邊欄操作即可,全程不需要命令行:在工作區行點擊文件夾加號按鈕,輸入分類名回車創建;把對話拖到分類頭上完成歸類;點分類標題摺疊或展開;在分類頭的 ⋯ 菜單裏重命名或刪除;把對話拖到「未分類」頭上移出分類。
對於希望通過 Agent 操作的場景,插件把同一套能力暴露爲 session_categories 工具,支持 list / create / rename / delete / assign / unassign 六種操作,與 UI 調用的是完全相同的宿主函數。
數據持久化在以下位置:
<DSH_PROFILE_DIR>/data/session-categories/state.json
插件不會在工作區目錄裏創建、移動或改名任何文件,也不碰會話日誌。刪除分類只是解除歸屬,對話會回到「未分類」。
適用場景與注意¶
適合會在同一個 profile 裏維護多個工作區、並且希望按主題把會話歸攏的使用者,尤其是已經裝了中文增強套件 deepseek-harness-zh_pro 的用戶。README 說明已驗證與該套件 v0.11.1 共存無衝突,兩者的槽位註冊、命名空間、行 id、CSS 類名和 DOM 操作方式互不重疊。
需要注意三點。第一,插件以當前 dsh 進程的權限運行,安裝前應檢查源碼與許可證;許可證是 MIT。第二,README 的防護說明提到,桌面端只要有一個 profile 條目未激活,整個 web 啓動就會失敗,因此被註冊的條目會同步激活,只是把註冊延後到服務就緒(whenService),客戶端 apply 永不拋異常。第三,DOM 層的每次行數變化(包括掉到 0)以及任何失敗都會被寫入 <數據目錄>/client.log,日誌超過 256 KB 會自動清空,排查問題時可以先看這份日誌。
結尾¶
這個插件的價值不在於提供新的會話管理模型,而在於在官方那棵樹上加了一層輕量的分類裝飾:不搬節點、不改官方行,用 order / display 實現分組與摺疊,因此官方功能和其它插件繼續有效。目錄頁見 https://www.skillhub.cn/plugins/YinqiSY/dsh-session-folders,源碼見 https://github.com/YinqiSY/dsh-session-folders。