dsh-delete-chat:DSH 會話先回收站、再真正刪除

前言

在 DeepSeek Harness(DSH)裏,會話列表上的「刪除」往往隻影響界面:行從列表消失,或進入歸檔,但 ~/.dsh/sessions 下的會話目錄和日誌仍留在磁盤上。官方包文檔裏也明確提到會話文件不會因列表操作而刪除,長期開發時目錄只會越來越大。若你需要可控地清掉某次對話佔用的空間,又希望誤刪還能找回,就需要在「歸檔」和「手刪文件夾」之間多一層機制。

下面介紹社區客戶端插件 dsh-delete-chat(維護者 abangbang):把刪除做成「先移入回收站、再在回收站裏永久清除」,並附帶側邊欄 Trash 頁與 CLI。

這是什麼

dsh-delete-chat 是 DSH 的客戶端插件(分類:客戶端)。它在不立刻抹掉磁盤數據的前提下,實現「真正刪除會話目錄」:會話行菜單裏的 Delete chat 會把對應 session-<uuid>/ 目錄 rename 到 ~/.dsh/session-trash,同時更新工作區記賬;側邊欄增加 Trash 面板,用於篩選、多選、恢復或永久刪除;還提供 dsh-delete-chat 命令行,可在無 GUI 時操作同一套回收站。

插件目標 DSH 版本在倉庫 badge 中爲 0.2.1-rc.2;包版本以 package.json 爲準(當前資料中爲 0.4.6),許可證 MIT。

核心功能

軟刪除(移入回收站)

在會話行 「⋯」→ Delete chat 並確認後:

  1. 調用宿主歸檔並停止進行中的回合,列表裏立即看不到該行。
  2. 將會話目錄從 <sessions-root>/…/session-<uuid>/ 移到 ~/.dsh/session-trash/<project>/session-<uuid>/(同捲上爲原子 rename;跨卷時按 EXDEV 回退爲複製再刪源目錄)。
  3. 改寫 storages/workspace.json,從 sessionIds 去掉該 id(並保留 .bak-<stamp> 備份)。
  4. 更新 ~/.dsh/session-trash/index.json,記錄標題、cwd、大小、最後活動與刪除時間,無需解析 zstd 日誌。

對話框會展示例如 Status moved to trash 與佔用大小;此步可逆,直到在回收站裏執行永久刪除。

側邊欄 Trash 頁

全局面板列表(aria-label="全局面板")會出現 Trash 行,括號內爲回收站條目數(爲 0 時隱藏計數,超過 99 顯示 99+)。選中後中央區域變爲與插件管理類似的頁面,可:

  • 按標題、路徑或項目 篩選;
  • 多選 或全選,頁腳顯示選中數量;
  • Restore:目錄移回會話根並重新入賬、取消歸檔;
  • Delete permanently、Empty trash:僅在此頁提供,彈窗確認數量、釋放字節、是否可逆;永久類操作爲紅色確認,恢復爲琥珀色。

列表行展示大小、回收站內絕對路徑、最後活動(日誌 mtime)與刪除時間(YYYY-MM-DD HH:mm:ss)。

佈局與國際化

同時支持按項目 <root>/<project>/session-<uuid>/ 與扁平 <root>/session-<uuid>/。界面文案隨宿主語言(中/英)切換,行菜單、彈窗與 Trash 頁會隨之重渲染。

CLI

安裝後可用二進制 dsh-delete-chat,常用參數包括:

  • --trash / --trash-list
  • --restore
  • --purge --yes
  • --empty --yes

GUI 被目錄鎖阻塞時,可先退出 DSH 再用 CLI 兜底(README 建議鎖常來自宿主自身句柄)。

其他

倉庫自帶 format-1 市場索引,可添加爲私有插件市場源;插件以當前 DSH 進程權限讀寫 ~/.dsh 下路徑。

安裝與啓用

在 DSH 對話裏直接請求安裝(中英文均可):

Install https://github.com/abangbang/dsh-delete-chat

或:

幫我安裝 https://github.com/abangbang/dsh-delete-chat

安裝完成後 需要重啓 DSH。插件樹與客戶端 bundle 在啓動時組裝,且客戶端帶 immutable 緩存頭,僅刷新頁面不夠。

典型用法

從列表刪除一次對話

  1. 在目標會話行打開 「⋯」。
  2. 選擇 Delete chat。
  3. 在確認框中確認;行從列表消失,目錄進入 ~/.dsh/session-trash。

在回收站恢復或清空

  1. 在側邊欄全局面板點 Trash。
  2. 用篩選找到目標會話,勾選一行或多行。
  3. 點 Restore 移回原位置;或點 Delete permanently / Empty trash,在彈窗中再次確認(不可撤銷)。

回收站目錄結構示意:

~/.dsh/
├── sessions/
│   └── <project>/session-<uuid>/
└── session-trash/
    ├── index.json
    └── <project>/session-<uuid>/

命令行(無 GUI)

退出 DSH 後,在 shell 中調用 dsh-delete-chat 與上述 flags;具體子命令以 --help 與 README 爲準。

適用場景與注意

適合誰: 長期在 DSH 裏開大量會話、希望列表「刪掉」後磁盤也收斂,但又想保留誤刪恢復窗口的開發者。

務必知曉:

  • 回收站 不是 操作系統回收站;路徑在 <DSH home>/session-trash。手動刪除該目錄等於跳過所有確認,永久丟失。
  • 插件與 DSH 同源信任:安裝前請查看 GitHub 倉庫 源碼與 MIT 許可證,確認可接受其讀寫會話目錄與 workspace.json 的行爲。
  • 部分失敗場景(如 Windows 上目錄被佔用導致 move 失敗)可能已歸檔但未移走;README 給出恢復順序:優先 Restore、重試、CLI、必要時用 workspace.json.bak-<stamp> 回滾。永久刪除僅能從 Trash 頁觸發。

DSH 生態強調「一切皆插件」;SkillHub 目錄頁 是社區索引,與 DeepSeek / 幻方無官方從屬關係。

結尾

dsh-delete-chat 補上了 DSH 默認缺失的「刪目錄 + 清記賬」鏈路,並用 session-trash 與確認彈窗把不可逆操作限制在回收站裏。需要安裝說明與故障表時,以倉庫 README 爲準。

  • 目錄頁:https://www.skillhub.cn/plugins/abangbang/dsh-delete-chat
  • GitHub:https://github.com/abangbang/dsh-delete-chat
羽毛球分组比赛记分
小程序二维码

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

小夜