前言¶
在 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。
刪除範圍¶
一次操作會處理(在通過安全校驗的前提下):
- 會話日誌目錄:同時兼容
uuid與session-前綴兩種 id 拼寫;若因此空掉的工作區目錄,一併清理。 - 投影緩存:
session_projcache的sessions表,經活動storageDomain,保證內存與磁盤一致。 - 工作區記賬:
workspaces.sessionIds與全局archivedSessionIds。 - 附件對象:僅刪除「本會話引用、且沒有其他會話引用」的對象;不刪仍被其他會話引用的附件。附件按內容哈希存儲,分叉會話會繼承父會話圖片並共享對象;刪掉共享對象會導致其他會話圖片壞引用,因此一律保留。
- 請求圖片轉碼緩存:純緩存,可重建。
刪除完成後彈出彙總:日誌目錄數量、附件引用/刪除/保留計數與釋放空間。
安全措施(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 生效。
典型用法¶
- 在 DSH 側欄找到要清理的會話,點擊該行「…」菜單。
- 選擇「徹底刪除…」(位於歸檔項之後)。
- 在風險確認框中勾選「我明白此操作不可撤銷」,再確認。
- 若該會話仍有活躍 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 上使用。