dsh-session-trash:側欄刪除會話與多選批量刪除

前言

在 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 示例),需要:

  1. 將插件目錄鏈接到 profile 的 node_modules:
junction C:\Users\<你>\.dsh\profiles\desktop\node_modules\dsh-session-trash <本目錄>
  1. 在 profile 的 cordis.patch.yml 中增加 insert:id: session-trash,name: 'dsh-session-trash'。

  2. 重啓 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

典型用法

  1. 打開 DSH 客戶端,在側欄找到要清理的會話,點擊該行「…」。
  2. 選 刪除會話,在確認框中核對「將刪除」說明(含子代理彙總),確認後等待提示條;若誤刪,在提示條上點撤銷。
  3. 若要一次清理多條,選 多選批量刪除…,搜索或全選目標會話,確認批量刪除;同樣可通過提示條撤銷最近一批操作。

上述步驟隻影響會話日誌與相關 DSH 元數據,不會刪除倉庫或工作區內的項目產物。

適用場景與注意

適合需要定期清理會話磁盤佔用、又希望保留工作區文件與共享附件的 DSH 用戶。批量整理歸檔區或測試產生的會話時,多選入口比逐條操作更省事。

使用前請注意:

  • 插件以當前 DSH 進程的權限讀寫 ~/.dsh/sessions 與備份目錄;安裝前應自行查看源碼與 MIT 許可證,確認可接受其行爲。
  • 正在運行的會話刪除前會先嚐試停止;極端佔用情況下可能整次操作失敗並回滾,不會留下半刪狀態。
  • 若啓用了 SQLite 全文搜索索引(非默認的 :memory: 配置),索引會在 reconcile 中跟進,必要時需重啓後重建。
  • 撤銷依賴默認保留的最近 20 批備份;更早的批次會被輪轉丟棄,無法通過內置撤銷恢復。

結尾

dsh-session-trash 補上了側欄「真刪會話」與多選批量刪除,刪前自動備份、刪後可撤銷,並明確不動工作區項目文件。需要安裝或細節時,可查閱 SkillHub 目錄頁 與 GitHub 倉庫 中的 README。

羽毛球分组比赛记分
小程序二维码

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

小夜