前言¶
在 DeepSeek Harness 裏處理敏感對話或調試草稿時,側欄常見的「歸檔」只是把會話從導航裏藏起來,磁盤上的會話日誌仍在。持久化組件 @deepseek-ai/dsh-session-persistence-jsonl 的文檔也說明:沒有內置邏輯會刪除會話文件,接口側也沒有刪除 API。若需要讓某次會話及其子代理遺留從本機徹底消失,需要額外手段。下面介紹社區插件 dsh-session-deleter(維護者 sczHiccup,目錄分類 admin-security),它在用戶明確確認風險之後,停止仍在運行的工作,並刪除該會話自身的日誌與投影緩存。
這是什麼¶
dsh-session-deleter 是面向 DeepSeek Harness 的本地 bundle 插件(包名 @local/session-deleter,當前版本 1.1.0)。一句話定位:在確認不可撤銷之後,永久刪除指定會話,並級聯處理子代理會話。
插件以 MIT 許可發佈,源碼倉庫:https://github.com/sczHiccup/dsh-session-deleter。社區目錄頁:https://www.skillhub.cn/plugins/sczHiccup/dsh-session-deleter。DSH 生態強調「一切皆插件」;SkillHub 等目錄由社區維護,與 DeepSeek / 幻方無官方從屬關係。
核心功能¶
覈實自 README 與倉庫說明的能力如下。
界面入口
- 會話頂部的垃圾桶按鈕,位於會話頭部右側工具區。
- 側欄會話行
...菜單中的「刪除會話」,與內置「重命名 / 歸檔 / 固定」同菜單,帶危險樣式與分隔線。
風險確認
- 彈窗說明不可撤銷、顯示目標會話名,必須勾選確認項才能繼續。
- 支持
Esc、點遮罩、取消關閉,關閉後焦點回到原控件。 - 若會話仍在運行,會先額外警告;用戶仍確認時,先停止該回合、子代理、後臺任務與提醒,再執行刪除。
刪除範圍
會刪除:
| 內容 | 路徑 |
|---|---|
| 會話日誌(含歷史格式代) | <DSH_HOME>/sessions/--<cwd>--/<sessionId>/session[.vN].jsonl[.zstd] |
| 子代理後代會話日誌 | 同上,對 parentSession 指向的子會話遞歸處理 |
| 投影檢查點緩存 | <DSH_HOME>/storages/session_projcache/sessions/<sessionId>.json(含子會話) |
| 側欄導航入口 | 通過 Workspace 歸檔移出導航 |
不會刪除共享附件(內容尋址,可能被其他會話引用)與全文檢索派生庫(dsh-session-query-sqlite 會隨來源消失自行清理)。
級聯與結果
- 會話日誌頭裏
parentSession鏈上的子代理會話會一併刪除;這些子會話在 UI 中往往沒有獨立入口。 - 成功後展示服務端返回的結果摘要;若刪除的正是當前停留的會話,會自動切到新會話。
安全側設計(Host)
刪除僅在 Host 側執行:停止運行走 workspaceRegistry.archiveSession(id, { stopActivity: true }),與用戶點「停止並歸檔」同一套 provider。目錄守衛只接受符合文檔佈局的會話目錄;非遞歸 rmdir;刪除後再次讀取持久化狀態,仍有殘留則報錯。面向模型的工具不暴露刪除能力,只能由用戶在 UI 確認後觸發。README 還描述了歸檔標記壽命、補寫清掃(1.2s / 5s / 20s / 60s / 180s)與啓動回收等細節,用於應對仍駐留內存的 Agent 可能把日誌寫回的情況。
兼容性
- 面向 DeepSeek Harness
0.2.2-rc.1編寫,使用公開服務:commands、sessionPersistence、workspaceRegistry、storageDomain,以及客戶端slots、contextMenus、sessions、remote.commands。 - 不 import Harness Client 包;樣式使用
--dsw-alias-*主題令牌。
安裝與啓用¶
插件是本地 bundle,需要先具備已安裝的 DeepSeek Harness 環境。安裝步驟以倉庫 README 爲準。
先把倉庫放到本機(README 給出的命令):
git clone https://github.com/sczHiccup/dsh-session-deleter.git
再讓當前 Harness Agent 把該目錄裝進當前 profile:
plugin_manager → action: install_bundle → target: <本倉庫目錄的絕對路徑>
安裝後 Harness 會按倉庫內 cordis.patch.yml 插入插件行,對當前 profile 的每個會話生效,重啓後仍保留。若按鈕未立刻出現,刷新頁面一次即可。
注意: 插件以當前 DSH 進程權限讀寫 <DSH_HOME> 下的會話與緩存;安裝前應自行審閱 index.js、client.js 源碼並確認 MIT 許可證是否符合你的合規要求。README 寫明倉庫使用 git clone 獲取源碼,並無 dsh plugin add github:… 一類一行式安裝命令。
卸載(README 原文):
plugin_manager → action: set_plugin → target: include:session-deleter → enabled: false
plugin_manager → action: remove_bundle → target: @local/session-deleter
典型用法¶
- 打開任意會話,點頂部垃圾桶;或在側欄將鼠標移到某會話行,打開
...→「刪除會話」。 - 在彈窗中核對會話名與刪除範圍,勾選確認項。
- 點「刪除會話」。
高級用戶可在輸入框執行與 UI 共用實現的命令:
/delete-session <sessionId>
適用場景與已知限制¶
適合誰
- 需要在本地徹底移除某次對話痕跡(含子代理會話)的 Harness 用戶。
- 已理解歸檔與「永久刪除」差別,並願意在確認彈窗中承擔不可撤銷操作的人。
限制(README 已列出)
- 刪除時若該會話的 Agent 仍駐留內存,Host 會話列表裏可能仍能看到該 id,直到進程結束;歸檔過濾與 Workspace 記賬的完全清理依賴 Agent 釋放或下次啓動清掃。
- 「運行中」提示依賴會話列表投影裏的
running;取不到時只是少一條警告,刪除邏輯不變。 - 若未來 Harness 改動日誌目錄佈局,守衛會拒絕刪除而不是誤刪。
結尾¶
dsh-session-deleter 補上 Harness 默認歸檔無法完成的「磁盤級」會話清理,並把刪除放在顯式風險確認與 Host 側守衛之後。若你在本機長期跑 Agent、又需要管控敏感或試驗性會話的殘留文件,可從目錄頁或 GitHub 獲取源碼,按 install_bundle 流程裝入當前 profile。