前言¶
在 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 並確認後:
- 調用宿主歸檔並停止進行中的回合,列表裏立即看不到該行。
- 將會話目錄從
<sessions-root>/…/session-<uuid>/移到~/.dsh/session-trash/<project>/session-<uuid>/(同捲上爲原子 rename;跨卷時按EXDEV回退爲複製再刪源目錄)。 - 改寫
storages/workspace.json,從sessionIds去掉該 id(並保留.bak-<stamp>備份)。 - 更新
~/.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 緩存頭,僅刷新頁面不夠。
典型用法¶
從列表刪除一次對話¶
- 在目標會話行打開 「⋯」。
- 選擇 Delete chat。
- 在確認框中確認;行從列表消失,目錄進入
~/.dsh/session-trash。
在回收站恢復或清空¶
- 在側邊欄全局面板點 Trash。
- 用篩選找到目標會話,勾選一行或多行。
- 點 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