前言¶
在 DeepSeek Harness(DSH)里長期跑 Agent,工作區會積累大量會話日誌、子代理記錄,以及對話裏 write、present 等工具落盤的文件和附件。界面上的歸檔或關閉並不能從磁盤上清乾淨;若需要合規清理、釋放空間,或丟棄試驗對話,往往只能手動翻 $DSH_HOME/sessions 等目錄,容易漏刪或誤刪共享附件。
下面介紹社區插件 dsh-plugin-conversation-purge(維護者 rz-123)。它在 DSH Web / Desktop 左側欄增加「對話清理」入口,用確認預覽和兩種刪除範圍,把不可恢復的磁盤刪除做成可覈對的操作。插件歸類爲「記憶」,源碼與 npm 包見 GitHub 與 SkillHub 目錄頁。SkillHub 爲獨立社區目錄,與 DeepSeek / 幻方無官方從屬關係。
這是什麼¶
dsh-plugin-conversation-purge 是一個 DSH Web 插件(純 JavaScript ESM,Host 端僅使用 Node 內置模塊,無第三方運行時依賴)。一句話定位:在左側欄提供全局面板,用於永久刪除對話;可選一併刪除該對話交付或創建的文件,以及僅被該對話引用的附件。
所有刪除直接作用於磁盤,不進入回收站,且不可恢復。README 明確要求先用可丟棄的對話試用。
核心功能¶
界面與列表¶
- 左側欄與「插件」「定時任務」並列的全局面板圖標(垃圾桶),點擊打開中央清理頁。
- 對話按工作區分組,展示標題、創建時間、日誌大小、是否正在使用;支持按標題、路徑、會話 ID 搜索。
兩種刪除模式¶
刪除前彈出確認框,逐項列出將刪除的會話、文檔、附件和子代理記錄,可取消勾選。
- 僅刪除對話與聊天記錄:刪除會話日誌、隱藏的子代理聊天記錄,並從工作區和側欄移除;清理工作區歸屬、置頂/歸檔標記;標題/統計投影緩存盡力清理。
- 對話、文檔與附件一併刪除:在上一項基礎上,再刪除該對話相關文件與「僅被該對話使用」的附件;被其他對話共享的附件會保留。
| 內容 | 僅聊天 | 聊天 + 文檔附件 |
|---|---|---|
會話日誌(session*.jsonl*) |
是 | 是 |
| 該對話派生的子代理會話日誌 | 是 | 是 |
| 工作區歸屬、置頂/歸檔標記 | 是 | 是 |
| 標題/統計投影緩存(盡力清理) | 是 | 是 |
| 對話交付/創建的文件 | — | 是(可勾選) |
| 僅被該對話使用的附件 | — | 是(可勾選) |
| 被其他對話共享的附件 | — | 保留 |
文檔與附件識別(模式 2)¶
文檔識別來源包括:
present工具交付的文件(deliverables/presented事件);write工具成功寫入的文件(tool/result.meta.path);edit/str_replace_editor修改的文件(默認不勾選);- 可選「推測掃描」:按該對話時間段內工作目錄中新建文件的創建時間推測(默認不勾選)。
附件只刪除引用計數上僅屬於該對話的對象;共享附件跳過。
安全防護與補刪¶
- 刪除前停止該對話正在運行的回合。
- 只刪除普通文件,不遞歸刪目錄,跳過符號鏈接;拒絕刪除會話目錄、附件倉庫、DSH profile、插件狀態目錄。
- 客戶端提交的路徑必須與服務端重新掃描結果取交集。
- 文件被佔用時寫入待刪清單(
$DSH_HOME/conversation-purge/pending.json),對話先從界面消失,下次啓動 DSH 後約 3 秒重試;清單清空後自動刪除。 - 每次操作返回逐項結果,失敗項單獨報告。
隱私與網絡¶
不聯網、無遙測、無第三方依賴;只訪問 $DSH_HOME/sessions、$DSH_HOME/attachments、$DSH_HOME/conversation-purge 和工作區註冊表,不上傳對話內容。
實現概要(供排查)¶
Host 半(index.js)註冊三個需瀏覽器認證的精確路由:GET /api/conversation-purge.list、POST /api/conversation-purge.preview、POST /api/conversation-purge.delete。會話數據經 ctx.sessionQuery、ctx.sessionPersistence 讀取;工作區歸屬經 ctx.workspaceRegistry 移除;日誌目錄位於 $DSH_HOME/sessions/<project>/<sessionId>。Client 半(client.js)向 sidebar.panellist 與 main 註冊面板,樣式使用 --dsw-alias-* 主題 token。
刪除是用戶界面操作,不向 Agent 暴露刪除工具。
環境要求¶
- DSH Web / Desktop,profile 中啓用
connection、sessionQuery、workspaceRegistry服務。 - 開發與驗證環境:DSH 0.2.1-rc.3 / Windows 11(README 寫明目前主要在 Windows 上驗證,POSIX 文件鎖語義未做跨平臺驗證)。
安裝與啓用¶
npm 包名與 package.json 中一致,當前版本 1.0.1,許可證 MIT。
從 npm 安裝(推薦)¶
在 DSH 的「添加插件」對話框中輸入包名:
dsh-plugin-conversation-purge
或使用 plugin manager:
plugin_manager action=install_bundle target=dsh-plugin-conversation-purge
從本地目錄安裝¶
將本倉庫放到本地後,以該目錄爲 target 安裝(README 示例爲絕對路徑,需替換爲你的路徑):
plugin_manager action=install_bundle target=<本倉庫的絕對路徑>
安裝會把包加入當前 profile 的 bundle 列表;安裝後左側欄應出現「對話清理」圖標。DSH 支持 HMR,通常無需重啓;若圖標未出現,刷新頁面即可。
同一面板 id 只能存在一份:不要同時安裝 npm 版與本地版。
插件以當前 DSH 進程權限運行;安裝前建議閱讀源碼與 MIT 許可證,確認刪除範圍符合你的環境策略。
典型用法¶
- 點擊左側欄垃圾桶圖標,打開「對話清理」。
- 找到目標對話,點擊右側「刪除」。
- 選擇範圍:
- 僅刪除對話與聊天記錄:確認預覽後直接「永久刪除」;
- 對話、文檔與附件一併刪除:等待分析完成,按需勾選文檔與附件(含是否啓用推測掃描後的候選項),再確認。 - 點擊「永久刪除」。
若另一個標籤頁仍打開該對話,刪除後該頁可能繼續寫入並重建日誌;操作前請先關閉對應對話標籤頁。
適用場景與注意¶
適合誰:需要在 DSH 內做可審計的、帶預覽的會話與磁盤清理;希望子代理日誌、工作區側欄狀態與可選文件/附件一併處理,而不是手動刪目錄。
已知限制(來自 README):
- 通過 shell / Python 等創建、且沒有
present的文件默認識別不到;需打開「推測掃描」並自行確認勾選項。 - 推測掃描依據文件創建時間,可能包含同期你手動創建的文件;默認不勾選。
- 標題/統計投影緩存爲盡力清理;對應存儲域不可用時可能殘留少量元數據(不含聊天正文)。
- 會話日誌被其他進程佔用時,刪除會延後到下次啓動 DSH。
- 目前主要在 Windows 上驗證。
結尾¶
dsh-plugin-conversation-purge 把 DSH 裏「徹底刪掉某次對話及其磁盤 footprint」做成左側欄裏的固定流程:兩種範圍、逐項預覽、路徑防護與佔用文件補刪。使用前請牢記操作不可恢復,並先在 disposable 對話上走通一遍。