dsh-plugin-conversation-purge:在 DSH 中徹底刪除對話及關聯產物

前言

在 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 搜索。

兩種刪除模式

刪除前彈出確認框,逐項列出將刪除的會話、文檔、附件和子代理記錄,可取消勾選。

  1. 僅刪除對話與聊天記錄:刪除會話日誌、隱藏的子代理聊天記錄,並從工作區和側欄移除;清理工作區歸屬、置頂/歸檔標記;標題/統計投影緩存盡力清理。
  2. 對話、文檔與附件一併刪除:在上一項基礎上,再刪除該對話相關文件與「僅被該對話使用」的附件;被其他對話共享的附件會保留。
內容 僅聊天 聊天 + 文檔附件
會話日誌(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 許可證,確認刪除範圍符合你的環境策略。

典型用法

  1. 點擊左側欄垃圾桶圖標,打開「對話清理」。
  2. 找到目標對話,點擊右側「刪除」。
  3. 選擇範圍:
    - 僅刪除對話與聊天記錄:確認預覽後直接「永久刪除」;
    - 對話、文檔與附件一併刪除:等待分析完成,按需勾選文檔與附件(含是否啓用推測掃描後的候選項),再確認。
  4. 點擊「永久刪除」。

若另一個標籤頁仍打開該對話,刪除後該頁可能繼續寫入並重建日誌;操作前請先關閉對應對話標籤頁。

適用場景與注意

適合誰:需要在 DSH 內做可審計的、帶預覽的會話與磁盤清理;希望子代理日誌、工作區側欄狀態與可選文件/附件一併處理,而不是手動刪目錄。

已知限制(來自 README):

  • 通過 shell / Python 等創建、且沒有 present 的文件默認識別不到;需打開「推測掃描」並自行確認勾選項。
  • 推測掃描依據文件創建時間,可能包含同期你手動創建的文件;默認不勾選。
  • 標題/統計投影緩存爲盡力清理;對應存儲域不可用時可能殘留少量元數據(不含聊天正文)。
  • 會話日誌被其他進程佔用時,刪除會延後到下次啓動 DSH。
  • 目前主要在 Windows 上驗證。

結尾

dsh-plugin-conversation-purge 把 DSH 裏「徹底刪掉某次對話及其磁盤 footprint」做成左側欄裏的固定流程:兩種範圍、逐項預覽、路徑防護與佔用文件補刪。使用前請牢記操作不可恢復,並先在 disposable 對話上走通一遍。

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

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

小夜