dsh-archive-manager:DeepSeek Harness 的歸檔會話管理插件

前言

DSH 官方提供了「歸檔會話」功能,但歸檔後的會話會從工作區列表隱藏,且既沒有恢復入口,也沒有物理刪除入口。這會導致已歸檔的會話堆積在磁盤上,佔用空間且無法清理。本插件通過在側邊欄新增入口,補全了恢復和徹底刪除這兩個功能缺口。

核心功能

  • 側邊欄入口:在側邊欄新增「歷史歸檔」入口,跟隨 DSH 側邊欄樣式。
  • 會話列表:列出所有歸檔會話,顯示真實會話標題和歸檔時間。
  • 一鍵恢復:點擊面板中「恢復」按鈕,即可取消歸檔,回到工作區列表。
  • 物理刪除:點擊面板中「刪除」按鈕,二次確認後徹底刪除會話(不可恢復)。
  • 實時更新:歸檔、恢復、刪除操作無需刷新頁面。面板打開時自動刷新,打開狀態下每 3 秒輪詢更新歸檔狀態。

安全與刪除語義

物理刪除不可恢復。插件按順序執行以下步驟,任一步失敗都不會留下“半刪除”的會話:

  1. 歸檔標記:從 workspace 存儲域的 archivedSessionIds 中移除。
  2. 工作區記錄:從每個工作區實體的 sessionIds 名冊中移除。
  3. 存儲目錄:刪除 $DSH_HOME/sessions/<project>/<session-id>/(含 session.v3.jsonl.zstd)。
  4. 投影緩存:清理 storages/session_projcache.json 的索引行以及該會話的逐會話緩存文件。

安全約束:
* 僅限已歸檔會話:只有已歸檔的會話能被刪除,正在使用的會話在歸檔之前不可達。
* 路徑校驗:刪除前對路徑做 realpath 二次校驗,拒絕任何位於 $DSH_HOME/sessions 之外的路徑。不跟隨逃逸符號鏈接。
* ID 校驗:會話 id 先做格式校驗(拒絕 ..、路徑分隔符、超長輸入)。
* 附件保留:共享的內容尋址附件($DSH_HOME/attachments)不會被回收,它們可能被其他會話引用。

安裝與使用

使用 pnpm 安裝:

pnpm add dsh-archive-manager

安裝後,在 DSH Web GUI 的側邊欄即可看到「歷史歸檔」入口。

重建客戶端產物

如需重新生成客戶端代碼:

node build-client.mjs

注意事項

  • 不可逆操作:物理刪除會話後數據無法恢復。
  • 權限要求:插件以當前 DSH 進程的權限運行,安裝前應檢查源碼與許可證。
  • 僅限已歸檔:只有已歸檔的會話能被刪除,普通工作區會話無法直接刪除。

總結

該插件解決了 DSH 歸檔會話無法恢復和清理的問題,通過側邊欄管理界面提供了安全的物理刪除能力。

GitHub 倉庫 | 插件目錄

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

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

小夜