dsh-deep-purge:在 DSH 裏徹底刪除會話及其附屬數據

前言

在 DeepSeek Harness(DSH)裏做智能體開發,會話會不斷積累:對話日誌、投影緩存、工作區裏的 session 記賬,以及按內容哈希存放的附件副本。歸檔或普通刪除往往只動其中一部分,磁盤上仍會留下目錄和對象,既佔空間,也不利於在測試環境或敏感場景裏「清乾淨」。

若手動刪目錄、改工作區 JSON、再猜哪些附件還能刪,容易漏項,更可能誤刪仍被其他會話引用的共享附件(例如從父會話分叉出來的子會話會繼承同一批圖片對象)。下面介紹的 dsh-deep-purge 由維護者 HunLongBaiZe 發佈,分類爲 admin-security,目標是在一次確認後,按引用關係安全地回收本會話獨佔的數據,並給出逐項彙總。

這是什麼

dsh-deep-purge 是 DSH 插件:在側欄會話行的「…」菜單中增加「徹底刪除…」,刪除前有風險確認彈窗,刪除後展示刪了多少日誌目錄、附件引用/刪除/保留數量及釋放空間。它不替代 DSH 自帶的歸檔,而是面向「需要從日誌、緩存、記賬到可安全刪除的附件,一次性收尾」的管理需求。

倉庫:https://github.com/HunLongBaiZe/dsh-deep-purge
社區目錄頁:https://www.skillhub.cn/plugins/HunLongBaiZe/dsh-deep-purge(獨立站點,與 DeepSeek / 幻方無官方從屬關係)。

核心功能

界面與確認流程

  • 側欄會話行「…」菜單增加「徹底刪除…」,危險配色,排在歸檔之後。
  • 使用 RiskConfirmation:須勾選「我明白此操作不可撤銷」後,確認按鈕纔可用。
  • 界面接入不依賴 DOM 注入:菜單項註冊進 sidebar.workspaces.session.menu.item,對話框註冊進 shell.overlay,使用 primitives 的 RiskConfirmation 與 Modal。

刪除範圍

一次操作會處理(在通過安全校驗的前提下):

  1. 會話日誌目錄:同時兼容 uuid 與 session- 前綴兩種 id 拼寫;若因此空掉的工作區目錄,一併清理。
  2. 投影緩存:session_projcache 的 sessions 表,經活動 storageDomain,保證內存與磁盤一致。
  3. 工作區記賬:workspaces.sessionIds 與全局 archivedSessionIds。
  4. 附件對象:僅刪除「本會話引用、且沒有其他會話引用」的對象;不刪仍被其他會話引用的附件。附件按內容哈希存儲,分叉會話會繼承父會話圖片並共享對象;刪掉共享對象會導致其他會話圖片壞引用,因此一律保留。
  5. 請求圖片轉碼緩存:純緩存,可重建。

刪除完成後彈出彙總:日誌目錄數量、附件引用/刪除/保留計數與釋放空間。

安全措施(README 原文要點)

  • 回收附件前掃描所有幸存會話的日誌;任一日誌讀失敗則整體跳過附件回收。
  • 收集引用時傾向過度收集:任何形如 sha256:<64hex> 的 attachmentId 均計爲引用;誤判只會讓對象多保留一段時間,漏判纔會毀數據。
  • 有活躍 agent 的會話拒絕刪除,返回 409。
  • 宿主端點要求請求體裏的 confirm 與 sessionId 完全一致,防誤觸與腳本誤調。
  • 刪除附件對象前校驗路徑必須落在 objects/ 之下,且文件名爲 64 位十六進制。

兼容性

需要 DSH ≥ 0.1.6。所用客戶端 slot、sessionPersistence 讀句柄與 storageDomain 域服務在該版本已具備;維護者在 0.1.6-alpha.2 與 0.1.7-rc.2 上覈對過。插件當前版本 v0.1.0(2026-09-25 首個版本),許可證 MIT。

安裝與啓用

插件以當前 DSH 進程的權限讀寫本地數據。安裝前建議瀏覽倉庫源碼與 LICENSE,確認符合你的環境策略。

從 GitHub 安裝:

dsh plugin --profile <profile> add github:HunLongBaiZe/dsh-deep-purge

或使用本地目錄(例如自研分支或離線包):

dsh plugin --profile <profile> add file:/path/to/dsh-deep-purge

將 <profile> 換成你實際使用的 DSH profile 名稱。安裝後重啓該 profile 生效。

典型用法

  1. 在 DSH 側欄找到要清理的會話,點擊該行「…」菜單。
  2. 選擇「徹底刪除…」(位於歸檔項之後)。
  3. 在風險確認框中勾選「我明白此操作不可撤銷」,再確認。
  4. 若該會話仍有活躍 agent,操作會被拒絕(409);否則執行清理並查看彙總彈窗。

無額外配置文件:行爲由插件與 DSH 內置存儲佈局決定。不要在該會話仍被 agent 佔用時強行刪除。

適用場景與注意

適合誰

  • 需要在測試或本地環境反覆建會話、希望磁盤與記賬一致收尾的開發者。
  • 處理含附件的對話,且理解「共享附件因分叉等原因必須保留」的管理員。
  • 歸類爲 admin-security 的運維式清理,而非日常對話內的普通刪除。

務必注意

  • 操作不可撤銷;刪除前確認 session 選對、且無未保存依賴。
  • 插件與 DSH 同進程權限,安裝即信任其讀寫會話與對象存儲;僅從未覈對過的來源安裝有風險。
  • 附件回收在日誌掃描失敗時會整段跳過,磁盤上可能仍留部分對象,但可避免誤刪共享數據。

維護者提供 26 項離線測試(node test/run-tests.mjs),覆蓋引用計數(共享保留/獨佔刪除)、fail-safe 跳過、運行中拒刪、confirm 校驗及兩種 id 拼寫;若你 fork 或改行爲,可在本地跑一遍再啓用。

結尾

dsh-deep-purge 把「日誌 + 投影緩存 + 工作區記賬 + 引用計數式附件回收」收進側欄裏的一次「徹底刪除…」,用確認框和風險策略降低誤刪與共享附件損壞的概率。DSH 生態強調「一切皆插件」;若你需要比歸檔更徹底的會話清理,可按上文命令安裝並在 DSH ≥ 0.1.6 上使用。

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

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

小夜