前言¶
DSH 沒有刪除會話的接口,只能歸檔或直接關閉。要徹底清理時,往往需要手動找文件、刪目錄,容易誤刪或遺漏。會話回收站(Session Recycle Bin)給 DSH 補上這個能力:刪除即移入可恢復的回收站,只有「徹底刪除」才真正銷燬磁盤上的字節。
是什麼¶
會話回收站是 DSH 桌面端的一個插件,由維護者 WangLemna 提供。它把「刪除」拆成兩步:先移入回收站,隨時可以恢復;再通過「徹底刪除」真正清空磁盤。插件圍繞三條約定設計:一條條目 = 一棵樹、不會悄悄銷燬任何東西、側欄入口、會話菜單、模型工具三處入口共用同一批 Host 方法。
核心功能¶
刪除與徹底刪除¶
- 刪除:先彈確認框,寫明有多少個子會話會一併移入回收站;會話日誌與投影緩存被移動到
~/.dsh/session-recycle-bin/<時間戳>-<id>/,並從工作區登記裏摘除。 - 徹底刪除:同樣先過確認框,寫明要銷燬的條目數與子會話日誌數;只有在確認後纔會真正銷燬磁盤上的字節。
會話樹處理¶
插件按會話日誌 header 裏的 origin: 'subagent' + parentSession 解析整棵樹,刪除一個會話會帶走整棵樹;恢復與徹底刪除都把樹當成一個整體。恢復時會先檢查整棵樹的所有目標路徑,避免出現「父會話回來了、子會話還在回收站」的半棵樹。
入口與操作¶
- 會話右鍵菜單 → 紅色「刪除會話…」:先確認,寫明子會話數。
- 會話右鍵菜單 →「批量操作…」:對某個工作區的全部會話批量歸檔或刪除,確認框寫明整個選中集合帶多少子會話。
- 側欄「會話回收站」:主區打開完整頁面,每條會話行首有複選框、行尾是恢復與徹底刪除,上方是選擇欄,可批量操作。
- 右鍵側欄圖標 →「清空回收站…」:一鍵清空的捷徑,同樣先過寫明條數的確認框。
- 設置 → 會話回收站:同一個回收站頁,給習慣在設置裏操作的人。
delete_session工具(給模型用):preview/trash/trashMany/archiveMany/list/restore/restoreMany/purge/purgeMany/purgeAll,與 UI 共用同一批 Host 方法。
安全邊界¶
- 只有「還有工作」的會話會被拒絕刪除;只是打開過會話、沒有在跑的任務,可以被刪除,恢復後也能繼續對話。
- 不會誤銷燬:清空回收站不可撤銷,對話框打開期間整個回收站頁凍結,正文永遠寫明要銷燬的條目數與子會話日誌數。
- 永遠不碰:附件目錄(
~/.dsh/attachments/v1/objects)、~/.dsh/sessions下的項目目錄本身、以及任何同 ID 的既有會話。 - 父會話還在時,子會話不能被單獨刪除(返回
session-child),正確動作是刪父會話;父會話已不存在的孤兒子會話仍可按 id 清理。 - 回收站條目仍佔磁盤,直到顯式徹底刪除,沒有自動過期清理。
- Windows 上跨卷移動會從
rename回退到複製(EXDEV);同卷內是原子 rename。 - 恢復後側欄可能需要刷新一次頁面——DSH 沒有「會話出現」事件可爲恢復的日誌合成行。
- Auto review 權限預設可能拒絕模型發起的
delete_session寫調用,那是 DSH 的權限策略,不是插件行爲。
安裝與啓用¶
插件已在 npm 發佈爲 dsh-recycle-bin。
dsh plugin --profile <profile> add dsh-recycle-bin
也可以直接在市場裏搜索「會話回收站 / Session Recycle Bin」點安裝。裝完刷新一次頁面(Ctrl+F5),側欄入口會出現在「插件」「定時」「市場」那一排。
本地開發安裝(源碼即運行代碼,不需要 build):
plugin_manager { action: "install_bundle", target: "<本目錄絕對路徑>" }
卸載¶
plugin_manager { action: "remove_bundle" }
回收站裏尚未恢復的條目會保留在 ~/.dsh/session-recycle-bin。如果插件已卸載又想把會話找回來,每個條目裏都有 entry.json 清單寫明每個文件該去哪:把 session/(以及每個 children/<id>/session/)搬回 ~/.dsh/sessions/<projectDir>/<id>/,把 projcache.json 搬回 ~/.dsh/storages/session_projcache/sessions/<id>.json 即可。
版本兼容¶
插件要求 DSH 版本:0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-rc.1 || 0.2.1-rc.2。engines.dsh 與 peerDependencies 中 9 個 @deepseek-ai/dsh-* 包也都在 0.2.x-rc.* 區間,並依賴 @deepseek-ai/cordis ~4.0.5。
適用場景與注意¶
- 適合需要頻繁清理會話、希望避免誤刪或手動找文件的 DSH 桌面端用戶。
- 插件以當前 DSH 進程權限運行,安裝前建議檢查源碼與許可證。
小結¶
會話回收站爲 DSH 補上了刪除會話的能力,把「刪除」拆成兩步,保留恢復餘地,同時通過確認框、樹處理、安全邊界等設計,避免誤操作與數據丟失。更多細節與源碼可在插件目錄頁與 GitHub 倉庫查看。