DeepSeek Harness 會話徹底刪除插件

前言

DeepSeek Harness 默認提供“歸檔”會話功能:會話行從列表消失,但底層文件仍完整保留在磁盤上。若需要在本地完全清除某段對話留下的所有痕跡,現有方式並不支持。下面介紹一個能實現“永久刪除”的插件。

插件定位

  • 名稱:dsh-session-delete
  • 維護者:HHHHHH233333
  • 分類:admin-security
  • 簡介:在會話右鍵菜單增加“徹底刪除會話…”項,刪除聊天日誌、投影緩存、溢出文件以及派生的子代理會話。

刪除什麼

確認框中點擊“徹底刪除”後,依次執行以下步驟:

  1. 停止並隱藏:調用 Workspace 註冊表的 archiveSession(id, { stopActivity: true }),停止當前回合、子代理、後臺任務與定時器,並將會話行移出所有分組視圖。
  2. 刪除聊天記錄:刪除 $DSH_HOME/sessions/<項目目錄>/<會話 id>/ 下的 session.v4.jsonl.zstd 及同目錄文件。
  3. 刪除派生數據:刪除 $DSH_HOME/storages/session_projcache/sessions/<會話 id>.json(標題、標題候選、token 統計、回合大綱等)。
  4. 刪除臨時文件:刪除 %TEMP%/dsh-spill-*/session-<sha256(id)[:12]>/ 下的工具輸出溢出文件。

刪除操作不依賴“回收站”,也不發送網絡請求,全部爲本地文件系統操作。若某文件正被佔用導致刪除失敗,會將失敗清單返回給界面,提示“重啓應用後重試”。系統會在刪除後約 6 秒及 12 秒各掃一次(投影緩存有 5 秒寫回窗口),晚到的檢查點不會重新寫入記錄。

子代理會話

默認勾選“同時刪除它派生的子代理會話”。規則如下:

  • 只沿 origin: "subagent" 的 parentSession 鏈向下展開(含多級)。
  • 分叉(fork)不會被連帶刪除——分叉是一段獨立對話,origin 爲空。
  • 取消勾選時只刪除你點的那一個會話。

安裝與啓用

插件安裝方式之一是使用 link: 依賴,將本目錄鏈接到桌面應用 profile。在 %USERPROFILE%\.dsh\profiles\desktop\package.json 中添加:

dependencies:  "dsh-session-delete": "link:<本目錄>"
dsh.profile.bundles: [ ..., "dsh-session-delete" ]

注意:這個目錄不能刪除或改名。安裝後需要重啓桌面應用,插件行會在啓動時按 dsh.profile.bundles 組合進 profile。重啓後訪問 http://127.0.0.1:<端口>/.dsh-session-delete/health 應返回 {"ok":true,...};側欄會話行右鍵菜單最後一項會出現“徹底刪除會話…”。

分享給別人

插件爲自包含的 npm 包,無運行時依賴與構建步驟。

  • 直接給文件夾:壓縮整個 dsh-session-delete 目錄,對方在該目錄執行 powershell -ExecutionPolicy Bypass -File .\install.ps1,腳本會自動寫入依賴、追加 bundle 並校驗。
  • 給一個 tarball:從 Releases 下載 dsh-session-delete-0.1.0.tgz 或本地 pnpm pack,對方執行 pnpm add .\dsh-session-delete-0.1.0.tgz,再在 profile 中追加 bundle 並重啓。
  • 從倉庫裝:在 DSH 插件管理中填入倉庫地址 https://github.com/HHHHHH233333/dsh-session-delete,管理器會自動安裝並添加 bundle。
  • 發到 npm:將 "private": true 改爲 false 後 npm publish。注意包名可能被佔用,必要時使用 scope 前綴,並同步修改 dsh.profile.bundles 中的條目與 link: 路徑。

使用方法

  1. 在側欄中右鍵點擊會話(或通過“…”菜單)。
  2. 選擇“徹底刪除會話…”(位於“歸檔會話”和“複製會話 ID”之後,帶分隔線)。
  3. 確認框會顯示會話標題、將要刪除的會話數與文件數、是否包含子代理。
  4. 點擊“徹底刪除”。成功後,該會話行從列表消失,磁盤上不再有對應記錄。

配置(可選)

在 cordis.patch.yml 中添加 config 可覆蓋默認值:

- id: dsh-session-delete
  config:
    sessionsRoot: D:\dsh\sessions   # 默認 $DSH_HOME/sessions
    dshHome: D:\dsh                 # 默認 $DSH_HOME,其次 ~/.dsh
    spillRoots: [D:\temp\dsh-spill] # 額外的溢出根目錄;系統臨時目錄總會掃描
    settleMs: 1200                  # 停止後等待多久再刪文件
    lateSweepMs: 6000               # 後臺補掃延遲;0 關閉

HTTP 接口

接口僅本機界面調用,服務監聽迴環地址,跨站 Origin 會被拒絕,sessionId 必須爲單個安全路徑段。

  • GET /.dsh-session-delete/health
  • GET /.dsh-session-delete/preview?sessionId=<id>&subagents=1
  • POST /.dsh-session-delete/delete,body { "sessionId": "<id>", "deleteSubagents": true }

preview 僅統計不刪除;delete 返回 { ok, found, targets, artifacts, files, bytes, complete, failures }。

已知邊界

  • 共享附件:內容尋址的附件/圖片倉庫跨會話共享,不屬於某一個會話,不會被刪除。
  • 工作區成員表:storages/workspace.json 的 sessionIds 中會留下已刪會話的 id,插件會在下次啓動時清理 archivedSessionIds / pinnedSessionIds 中不存在的 id。
  • 歸檔 id 的保留:刪除後故意不立即取消歸檔,以免正在運行的界面把該行重新顯示;清理放在下次啓動。
  • 搜索索引:當前使用內存數據庫構建會話檢索,從不落盤,無需清理索引文件。
  • 文件佔用:Windows 上若文件被子進程佔用,刪除會失敗並回報清單;關閉相關任務或重啓應用後再刪一次。
  • 其它機器的副本:本插件只處理本機文件,不影響遠端備份。

適用場景與注意

  • 適合需要在本地徹底清除會話痕跡的 DSH 用戶,尤其是對隱私敏感、希望清理磁盤佔用與歷史記錄的場景。
  • 插件以當前 DSH 進程的權限運行,安裝前應檢查源碼與許可證。
  • 刪除當前正在使用的會話會成功,但會話行消失後當前視圖隨之失效,需自行確認結果。

結尾

該插件補齊了 DSH 在會話清理上的“刪除”能力,讓用戶能真正從本地移除會話及其相關數據。更多細節與源碼:https://github.com/HHHHHH233333/dsh-session-delete

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

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

小夜