dsh-session-deleter:在風險確認後永久刪除 Harness 會話

前言

在 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

典型用法

  1. 打開任意會話,點頂部垃圾桶;或在側欄將鼠標移到某會話行,打開 ... →「刪除會話」。
  2. 在彈窗中核對會話名與刪除範圍,勾選確認項。
  3. 點「刪除會話」。

高級用戶可在輸入框執行與 UI 共用實現的命令:

/delete-session <sessionId>

適用場景與已知限制

適合誰

  • 需要在本地徹底移除某次對話痕跡(含子代理會話)的 Harness 用戶。
  • 已理解歸檔與「永久刪除」差別,並願意在確認彈窗中承擔不可撤銷操作的人。

限制(README 已列出)

  • 刪除時若該會話的 Agent 仍駐留內存,Host 會話列表裏可能仍能看到該 id,直到進程結束;歸檔過濾與 Workspace 記賬的完全清理依賴 Agent 釋放或下次啓動清掃。
  • 「運行中」提示依賴會話列表投影裏的 running;取不到時只是少一條警告,刪除邏輯不變。
  • 若未來 Harness 改動日誌目錄佈局,守衛會拒絕刪除而不是誤刪。

結尾

dsh-session-deleter 補上 Harness 默認歸檔無法完成的「磁盤級」會話清理,並把刪除放在顯式風險確認與 Host 側守衛之後。若你在本機長期跑 Agent、又需要管控敏感或試驗性會話的殘留文件,可從目錄頁或 GitHub 獲取源碼,按 install_bundle 流程裝入當前 profile。

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

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

小夜