前言¶
DeepSeek Harness(DSH)可以歸檔會話,但歸檔只是把條目從側欄藏起來。對話 transcript、標題緩存、SQLite 索引、費用賬本和 bridge 日誌仍會留在磁盤上。若你關心本地隱私、磁盤佔用,或需要在測試 profile 裏清掉某次會話的全部痕跡,內置「歸檔」並不等同於刪除。
下面介紹社區插件 dsh-deep-purge(維護者 kkkkk-tubu,分類 admin-security):在應用內面板或 PowerShell 腳本中,一次操作清理與單個 session id 相關的六個 on-disk 位置,並提供預演、備份、回滾與自動重啓 DSH。插件當前在 GitHub 上星標爲 0;僅支持 Windows。
這是什麼¶
dsh-deep-purge 的定位是:補足 DSH 只有 archive、沒有 delete 的缺口,且不是隻刪側欄註冊表,而是按 session id 掃清六處存儲。安裝後左側導航會出現 會話清理 / Session purge,每個會話右鍵菜單會增加 徹底刪除會話 / Delete session permanently。真實刪除邏輯在獨立 PowerShell 腳本 ps/dsh-session-cleanup.ps1 中,面板是其前端。
六處會清理什麼¶
一個 session id 會出現在下列六個位置;README 說明多數「刪除」工具只處理第一處即停。
| # | 路徑 | 內容 |
|---|---|---|
| 1 | ~/.dsh/sessions/<slug>/<session-id>/session.v4.jsonl.zstd |
完整對話 transcript(zstd 壓縮 JSONL) |
| 2 | ~/.dsh/storages/session_projcache/sessions/<session-id>.json |
標題 / 項目元數據緩存 |
| 3 | ~/.local/share/billion-context/sessions/index.db |
billion-context SQLite 索引(含 \|sub: 子 agent 行),之後執行 VACUUM |
| 4 | ~/.dsh/storages/workspace.json |
側欄註冊:sessionIds、archivedSessionIds、pinnedSessionIds |
| 5 | ~/.dsh/storages/cost-meter/ledger.json |
按會話的 token/費用明細及引用該 id 的 hash 緩存 |
| 6 | ~/.dsh/storages/cost-meter/ledger.json.billion-context/ |
按 call 的 bridge 日誌(大量小 JSONL,按子串匹配) |
提交刪除前,面板會對六處分別顯示命中數量;預演選中 (Dry run) 只統計、不寫盤。
爲什麼要先退出 DSH¶
刪除不能在 DSH 進程仍佔用相關資源時安全完成:
workspace.json被 DSH 整對象駐內存,側欄任意變更會整文件重寫;若在底下刪文件,下一次變更可能把會話「復活」,且無文件監聽對賬。index.db爲 WAL 模式 SQLite,運行中持有連接;VACUUM需要獨佔訪問。
因此流程是:註冊計劃任務 → 請求 DSH 退出 → 刪文件 → 再啓動 DSH。輔助腳本刻意運行在 DSH 進程樹外(DSH 會把工具子進程放進 Windows Job Object,會話內 spawn 的進程會隨會話結束)。面板會說明這一點;執行期間頁面會斷開數秒。
安裝與啓用¶
官方安裝命令如下(來自 README,勿自行改成 github:owner/repo 形式):
dsh plugin add dsh-deep-purge
安裝後重啓 DSH。也可手動將包放到 <profile>/node_modules/,寫入 profile 的 dependencies 與 dsh.profile.bundles 後重啓。
package.json 標明版本 1.0.0、許可證 MIT,Node >=20,DSH 兼容範圍見 engines.dsh 與 dsh.compatibility.dshReleases(含 0.2.1-rc.2、0.2.1-rc.3、0.3.0-rc.1 等標註爲 compatible 的版本)。插件以當前 DSH 進程權限運行;安裝前應在 GitHub 閱讀源碼與 LICENSE、NOTICE.md。
典型用法(面板)¶
- 點擊左側 會話清理,或右鍵某會話 → 徹底刪除會話。
- 勾選要刪除的會話;當前會話故意不可選,服務端也會拒絕。
- 點 預演選中 (Dry run),查看六處命中數,不寫盤。
- 在輸入框鍵入
DELETE(防誤觸短語,非密碼),再點 刪除選中。 - 在瀏覽器確認對話框中確認;約 25 秒內 DSH 退出、執行刪除並自啓。
- 重啓後面板頂部展示上一輪結果;紅色表示有殘留,可點進逐步日誌。
每次刪除默認在 ~/.dsh/session-delete-backup-<timestamp>/ 留備份(命令行可用 -NoBackup 跳過)。
首次打開有阻塞式引導:說明六路徑、風險、五步流程、回滾與卸載;須勾選「I understand deletion is irreversible」才能開始,Esc 與點遮罩不能關閉。文案版本變更(GUIDE_VERSION)後會再次出現;頁頭 使用說明 可隨時重開。頁頭下方永久警告條不可關閉,提示不可逆、會退出並重啓 DSH。
命令行(PowerShell)¶
面板之外可直接調用腳本(路徑以你的 profile 爲準):
$ps1 = "<profile>\node_modules\dsh-deep-purge\ps\dsh-session-cleanup.ps1"
# 只讀:六處 inventory
powershell -ExecutionPolicy Bypass -File $ps1 -List
# 指定 session 預演
powershell -ExecutionPolicy Bypass -File $ps1 -SessionId session-aaaa,session-bbbb
# 真刪(DSH 須已關,或加 -AutoRestart)
powershell -ExecutionPolicy Bypass -File $ps1 -SessionId session-aaaa -Execute -AutoRestart
常用參數:-List、-SessionId、-Execute、-AutoRestart(需與 -Execute 同用)、-Restore <dir>、-NoBackup、-SkipBiliGc(不動 index.db / 不 VACUUM)、-WaitTimeoutSec(默認 180)等。退出碼:0 乾淨,1 有殘留,2 DSH 仍在跑且未 -AutoRestart,3 等待退出超時且未刪任何文件。
回滾¶
先退出 DSH,否則內存中的 workspace.json 會覆蓋剛恢復的內容:
powershell -ExecutionPolicy Bypass -File "<plugin>\ps\dsh-session-cleanup.ps1" -Restore "<backup dir>"
恢復只寫回備份中的文件,不會刪除刪除之後新建的會話。
適用場景與注意¶
適合:需要在 Windows 上徹底移除某次 DSH 會話的全部本地痕跡、釋放與 billion-context / cost-meter 相關的磁盤數據、或在合規場景下做可審計的刪除(配合備份目錄)。
務必注意:
- 僅 Windows:需 PowerShell 5.1+、計劃任務、Win32 消息優雅關閉 DSH。
- 會關閉並重啓 DSH;若托盤有確認對話框,需手動點一次。
- 不能刪當前會話;同一 profile 不要開兩個 DSH 窗口(兩份內存
workspace.json,後寫覆蓋)。 - 關閉托盤圖標不阻斷流程,但若 DSH 忽略關閉請求,輔助進程會超時,超時意味着未刪除任何文件。
- 卸載:在插件管理器中禁用或移除
dsh-deep-purge並重啓;插件自身不持久化狀態,動到的都是你的會話數據。
DSH 生態強調「一切皆插件」;目錄頁 skillhub.cn 爲社區站點,與 DeepSeek / 幻方無官方從屬關係。
結尾¶
dsh-deep-purge 把 DSH 會話從 archive 推進到可驗證的 deep purge:六處路徑、預演計數、備份與 -Restore、以及爲 SQLite 與 workspace.json 設計的退出再刪再啓流程。需要細節與截圖時,以倉庫 README 爲準。
- 目錄頁:https://www.skillhub.cn/plugins/kkkkk-tubu/dsh-deep-purge
- GitHub:https://github.com/kkkkk-tubu/dsh-deep-purge