前言¶
在 DeepSeek Harness(DSH)裏,側欄會積累大量會話記錄。官方會話持久化方案在文檔中說明 seam 層沒有刪除接口,日誌會一直累積,直到外部手段移除。若只想清掉某次對話的聊天記錄、又不想動工作區裏的項目文件,單靠隱藏列表項也解決不了磁盤上的會話目錄問題。dsh-session-trash 是社區維護的客戶端插件,在側欄會話「…」菜單裏補上「真刪」能力,並在刪前備份、刪後可撤銷。
這是什麼¶
插件名 dsh-session-trash(npm 包名同),維護者 ozjxnxh,分類爲客戶端。它在 DSH 側欄每條會話的「…」菜單中增加兩個入口:刪除單條會話,以及帶搜索與全選/清空的多選批量刪除。刪除的是聊天記錄本身(會話日誌目錄與相關元數據),不是僅從列表裏隱藏;工作區目錄中的項目文件與內容尋址的上傳附件不會被改動。
核心功能¶
菜單與交互¶
側欄(含歸檔行)會話「…」菜單新增:
- 刪除會話:危險色樣式並帶分隔線,點擊後彈出確認框,確認後刪除該條會話。
- 多選批量刪除…:彈出帶複選框的列表,支持搜索、全選與清空,一次刪除多條。
刪除完成後,界面右下角出現提示條,可一鍵撤銷(將備份移回原位)。單條刪除會連帶其全部子代理會話,確認文案中用一行彙總子代理數量,而不是逐條平鋪。
刪什麼、不刪什麼¶
| 數據 | 處理 |
|---|---|
會話日誌 ~/.dsh/sessions/<項目>/<會話id>/ |
刪除(刪除前先整目錄遷入備份) |
投影緩存 session_projcache 記錄 |
刪除 |
工作區記賬(workspace 域的 sessionIds / 置頂 / 歸檔) |
摘除 |
該會話的定時提醒(schedule 域) |
刪除 |
| 工作區目錄裏的項目文件 | 不動 |
| 上傳附件(內容尋址、跨會話共享) | 不動 |
備份默認位於 ~/.dsh/trash-backup/<時間戳>/,內含 manifest.json;默認保留最近 20 批,也可手工從備份目錄拷回。
多選列表與子代理¶
側欄主列表本身不展示 origin === "subagent" 的會話;多選批量刪除對話框會按樹形展示主會話與子代理關係。默認收起子節點;選中主會話時可一併選中其家族內的子代理;展開/收起僅影響展示,與選中態分離。分叉會話(fork)仍留在主列表,判定子代理只認 origin,與側欄過濾規則一致。
宿主側行爲¶
插件在 DSH 0.2.1-alpha.2 缺少官方刪除會話 API 的前提下,自建 Remote 面 trash,經 typertGateway 的 SRC 接收路徑註冊。刪除前會請求各 workspace/session-stop 提供方停會話並落盤;若日誌仍被佔用則退避重試最多 6 次,仍失敗則回滾備份並在對話框報錯,避免半刪。成功後廣播 api-session/removed,並配合工作區 domain/changed 與 sessions.refresh() 刷新側欄。
當前版本在 package.json 中爲 0.1.0,許可證 MIT。
安裝與啓用¶
DSH 生態採用「一切皆插件」的思路;社區目錄由獨立站點維護,與 DeepSeek / 幻方無官方從屬關係。本插件被 awesome-dsh-plugin 目錄 收錄後,可在 DSH 設置 → 插件市場 一鍵安裝。命令行等價形式如下(資料原文,走 bundle 層 patch,勿在 profile 層重複插入同一條 loader 條目):
dsh plugin --profile web add github:YuJunZhiXue/dsh-session-trash
若在本機 desktop profile 手工安裝(Windows 示例),需要:
- 將插件目錄鏈接到 profile 的
node_modules:
junction C:\Users\<你>\.dsh\profiles\desktop\node_modules\dsh-session-trash <本目錄>
-
在 profile 的
cordis.patch.yml中增加 insert:id: session-trash,name: 'dsh-session-trash'。 -
重啓 DSH(客戶端 bundle 與 loader 條目均在啓動時組合;改 patch 或插件文件不會熱加載)。
重啓後可在 ~/.dsh/logs/desktop-next-<日期>.0.jsonl 中搜索 session-trash,應看到類似:
session-trash 就緒(日誌根:…\sessions,備份:…\trash-backup)
若出現 啓動降級 或 loader 報錯,需按 README 排查 apply(ctx, config) 與 package.json exports 等問題。卸載時刪除 profile patch 中的 insert 並去掉鏈接,再重啓即可。
插件目錄頁:https://www.skillhub.cn/plugins/ozjxnxh/dsh-session-trash
源碼:https://github.com/ozjxnxh/dsh-session-trash
典型用法¶
- 打開 DSH 客戶端,在側欄找到要清理的會話,點擊該行「…」。
- 選 刪除會話,在確認框中核對「將刪除」說明(含子代理彙總),確認後等待提示條;若誤刪,在提示條上點撤銷。
- 若要一次清理多條,選 多選批量刪除…,搜索或全選目標會話,確認批量刪除;同樣可通過提示條撤銷最近一批操作。
上述步驟隻影響會話日誌與相關 DSH 元數據,不會刪除倉庫或工作區內的項目產物。
適用場景與注意¶
適合需要定期清理會話磁盤佔用、又希望保留工作區文件與共享附件的 DSH 用戶。批量整理歸檔區或測試產生的會話時,多選入口比逐條操作更省事。
使用前請注意:
- 插件以當前 DSH 進程的權限讀寫
~/.dsh/sessions與備份目錄;安裝前應自行查看源碼與 MIT 許可證,確認可接受其行爲。 - 正在運行的會話刪除前會先嚐試停止;極端佔用情況下可能整次操作失敗並回滾,不會留下半刪狀態。
- 若啓用了 SQLite 全文搜索索引(非默認的
:memory:配置),索引會在 reconcile 中跟進,必要時需重啓後重建。 - 撤銷依賴默認保留的最近 20 批備份;更早的批次會被輪轉丟棄,無法通過內置撤銷恢復。
結尾¶
dsh-session-trash 補上了側欄「真刪會話」與多選批量刪除,刪前自動備份、刪後可撤銷,並明確不動工作區項目文件。需要安裝或細節時,可查閱 SkillHub 目錄頁 與 GitHub 倉庫 中的 README。