前言¶
在 DeepSeek Harness(DSH) 裏,會話不是數據庫裏的一行記錄,而是磁盤上的目錄:~/.dsh/sessions/<工作區目錄名>/<sessionId>/ 下的 session.v4.jsonl.zstd 等文件;工作區與會話的對應關係寫在 ~/.dsh/storages/workspace.json。原生「刪除會話」相當於從名單裏摘掉並刪掉目錄,沒有回收站,誤刪後只能依賴備份或文件恢復工具。社區插件 dsh-session-trash(維護者 a307608689-afk)把刪除改成「先移入回收站、保留期內可恢復、到期自動清理」,並在刪除前做分析、留檔與運維向的自檢。本文基於倉庫 README 與 package.json(當前版本 0.1.7,MIT 許可證)整理用法與注意點;該插件屬社區「記憶」類擴展,與 DeepSeek 官方無隸屬關係。
這是什麼¶
dsh-session-trash 是 DSH 的 Web 客戶端插件:通過 package.json 的 dsh 字段與 cordis.patch.yml 聲明,由宿主半端 index.js 與瀏覽器半端 client.js 協同工作。它針對三類常見問題:手滑刪除無法撤銷、刪除前不清楚會話體積與狀態、刪完後側欄仍顯示舊項等。實現上強調「搬目錄 + 改名單」、對 workspace.json 的唯一寫入口、純本地無出站網絡(Node.js ≥ 20,零第三方運行時依賴)。
目錄頁:SkillHub 插件頁 · 源碼:GitHub — a307608689-afk/dsh-session-trash
核心功能¶
刪除與回收站¶
- 會話「⋯」菜單最下方增加紅色 刪除會話 項。
- 刪除前分析:確認前展示會話是否在本地、目錄大小、是否歸檔 / 置頂 / 仍在運行等。
- 移入回收站:會話目錄搬到
~/.dsh/session-trash/payload/<trashId>/,並從workspace.json相關名單中移除;改動前自動備份。 - 設置 → 回收站:列出條目,支持恢復(回原位並恢復歸檔 / 置頂)、徹底刪除、批量操作。
保留期與留檔¶
- 默認保留 30 天,到期自動清理;插件約每分鐘檢查,默認約每 30 分鐘執行一輪清理。
- 刪除前生成元數據快照(zstd 壓縮 + sha256 校驗);留檔失敗會中止刪除。留檔目錄默認配額 2 GB。
- 審計寫入
~/.dsh/session-trash/journal.jsonl(超過 2 MB 輪轉,保留 5 份)。
運維向能力¶
- 啓動時將回收站索引與磁盤目錄對齊;頁面退出時只讀自檢。
- 孤兒會話目錄:找出磁盤上不屬於任何工作區的會話目錄,可批量移入回收站。
- 同源 HTTP 接口(如
/dsh-session-trash/health、/list、/delete、/restore等)供 UI 與腳本調用;詳見 README「HTTP 接口」表。
安裝與啓用¶
本插件無資料記載的 dsh plugin add github:... 一鍵命令,安裝方式以倉庫說明與你所用 DSH 版本的插件文檔爲準。README 給出的流程如下:
- 獲取本倉庫源碼(例如從 GitHub 下載壓縮包或按你習慣的方式取得目錄樹)。
- 將插件目錄放到 DSH 能加載的位置,或在 DSH 插件管理界面中添加該本地路徑。
- 完全退出並重新啓動 DSH。
- 打開 設置 → 回收站,若能看到條目列表(或空列表界面),說明加載成功。
環境要求:Node.js ≥ 20、DSH Web 端。
典型用法¶
刪除一個會話¶
- 在側欄選中會話,打開右側「⋯」菜單。
- 選擇最下方的 刪除會話。
- 閱讀分析信息後確認,會話進入回收站而非立即從磁盤抹除。
恢復或徹底刪除¶
在 設置 → 回收站 中:
- 恢復:目錄搬回原路徑,歸檔 / 置頂狀態一併恢復。
- 徹底刪除:不可撤銷;執行前會再做留檔。
- 可勾選多條進行批量操作。
調整保留期與自動清理¶
默認保留 30 天。若需改爲 90 天,可在 DSH 同源地址下 POST 配置(端口替換爲你本機 DSH Web 端口):
curl -X POST http://127.0.0.1:<端口>/dsh-session-trash/config \
-H 'content-type: application/json' \
-d '{"retentionDays":90}'
README 說明:retentionDays 在接口校驗中接受 7 / 30 / 90;autoPurgeMinutes 可設 5–1440,0 表示關閉自動清理。
數據位置與隱私¶
插件不向外部服務器發送數據;前端僅請求同源 /dsh-session-trash/*。
| 數據 | 路徑 |
|---|---|
| 回收站索引 | ~/.dsh/session-trash/index.json |
| 被移走的會話 | ~/.dsh/session-trash/payload/<trashId>/ |
workspace.json 備份 |
~/.dsh/session-trash/backups/ |
| 留檔 | ~/.dsh/session-trash/archive/ |
會被改寫的宿主文件主要是 ~/.dsh/storages/workspace.json,且經 writeWorkspaceDoc() 做校驗與原子寫入。設置 → 回收站 → 安全 → 導出診斷包 不含對話正文,僅含健康狀態、條目摘要與近期 journal,便於排查。
適用場景與注意¶
適合:長期在 DSH 中積累大量會話、需要誤刪可恢復、希望在徹底刪除前留元數據證據的開發者。
使用前請知悉:
- 插件以當前 DSH 進程權限讀寫
DSH_HOME下目錄;安裝前應自行審閱源碼與 MIT 許可證,並在重要環境先備份。 - 徹底刪除 與卸載前未回滾回收站內容會導致數據不可恢復;卸載順序應爲:先
node tools/rollback-trash.mjs(必要時--write),再移除插件並重啓。 - README 列出的已知邊界包括:刪除後側欄可能需手動刷新列表;恢復按原
workspace.json插回、跨工作區移動未覆蓋;部分附件與團隊會話相關能力仍在演進。 - 若重啓後出現工作區全空、
workspaceController is unavailable,可能與workspace.json時間字段格式有關;README 提供只讀排查與tools/fix-workspace-timestamps.mjs,出現症狀時不要隨意「重新選擇文件夾」覆蓋名單。
結尾¶
dsh-session-trash 把 DSH 的會話刪除從「一步到位抹掉」改爲「回收站 + 留檔 + 可配置保留期」,並補了刪除前分析與孤兒目錄清理,適合把會話當長期資產來管理的用法。更多截圖、架構說明與故障排查見倉庫 README。
- 插件目錄頁:https://www.skillhub.cn/plugins/a307608689-afk/dsh-session-trash
- GitHub:https://github.com/a307608689-afk/dsh-session-trash