前言¶
DeepSeek Harness (DSH) 的會話持久化採用追加模式,且公開服務未提供刪除方法。在 Agent 運行時,其銷燬句柄僅屬於創建者,插件無法在活動寫入器下安全移出日誌。dsh-delete 通過兩階段策略解決這一問題:運行時僅持久化刪除請求並隱藏會話,重啓時才完成日誌的原子移動與歸檔。
功能概覽¶
dsh-delete 是一個 Memory 類插件,由 Hyna-hla 維護。它爲 DSH 添加了可恢復的對話刪除能力,核心功能包括:
- 會話菜單入口:在會話列表的
…菜單中增加“刪除對話”選項。 - 命令行接口:註冊
/delete-conversation人類命令。 - 即時隱藏與隊列:確認後立即將會話加入刪除隊列並從列表中隱藏。
- 生命週期驗證:Web Workspace 在構建會話索引前,會先驗證會話的完整生命週期狀態。
- 可恢復歸檔:重啓 DSH 時,將日誌目錄移動到可恢復的垃圾目錄(默認
~/.dsh/conversation-trash)。
安裝與啓用¶
插件安裝後需重啓 DSH 生效。使用官方 CLI 命令添加插件:
node /path/to/DSH/apps/cli/lib/bin.js plugin --profile web add /path/to/DSH-DELETE
安裝完成後,Web Workspace 會等待 conversationDeletion 服務完成啓動恢復,再構建會話索引。
使用方法¶
界面操作¶
在會話列表中找到目標會話,點擊行尾的 … 菜單,選擇 Delete conversation。確認卡片出現後點擊 Delete conversation。
命令行操作¶
命令要求字面量 CONFIRM,且必須區分大小寫。
- 刪除當前對話:
/delete-conversation CONFIRM - 刪除指定會話:
/delete-conversation <session-id> CONFIRM
確認後,目標會話會立即從列表中消失。下次啓動 DSH 時,日誌會被移入垃圾目錄。
配置與注意事項¶
配置項¶
插件支持以下配置(cordis.patch.yml 中配置):
| 字段 | 默認值 | 說明 |
|---|---|---|
stateDir |
~/.dsh/conversation-trash |
垃圾目錄,必須爲絕對路徑且位於會話目錄之外 |
commandName |
delete-conversation |
可選的人類命令別名(無前導 /) |
安全與限制¶
- 確認機制:刪除操作必須包含字面量
CONFIRM,否則不會執行任何寫入。 - 後端限制:僅支持 JSONL 後端,明確拒絕 SQLite 後端。
- 原子操作:日誌移動使用同文件系統重命名,不使用
unlink,確保崩潰後可恢復。 - Node 版本:構建和運行需要 Node.js 版本
^22.19.0 || >=24.0.0。 - 數據保留:日誌進入可恢復垃圾箱,最終清理策略由部署管理員決定。
恢復數據¶
若需恢復誤刪的對話,需停止 DSH,進入垃圾目錄,刪除 deletion.json 文件,然後將對應目錄移回原始位置。注意:恢復操作必須在 DSH 停止時進行,運行中恢復可能導致數據損壞。