dsh-session-trash:讓 DSH 刪除會話可撤銷

前言

在 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 給出的流程如下:

  1. 獲取本倉庫源碼(例如從 GitHub 下載壓縮包或按你習慣的方式取得目錄樹)。
  2. 將插件目錄放到 DSH 能加載的位置,或在 DSH 插件管理界面中添加該本地路徑。
  3. 完全退出並重新啓動 DSH。
  4. 打開 設置 → 回收站,若能看到條目列表(或空列表界面),說明加載成功。

環境要求:Node.js ≥ 20、DSH Web 端。

典型用法

刪除一個會話

  1. 在側欄選中會話,打開右側「⋯」菜單。
  2. 選擇最下方的 刪除會話。
  3. 閱讀分析信息後確認,會話進入回收站而非立即從磁盤抹除。

恢復或徹底刪除

在 設置 → 回收站 中:

  • 恢復:目錄搬回原路徑,歸檔 / 置頂狀態一併恢復。
  • 徹底刪除:不可撤銷;執行前會再做留檔。
  • 可勾選多條進行批量操作。

調整保留期與自動清理

默認保留 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
羽毛球分组比赛记分
小程序二维码

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

小夜