dsh-workspace-purge:把左側對話和工作區真正刪掉

前言

DSH 側邊欄的刪除是「假刪除」。刪除一條對話時,Harness 只是把它歸檔,日誌還留在磁盤上,下次會重新出現在虛擬的 Ungrouped 分組裏;刪除一個工作區時,也只註銷了註冊信息,它下面的對話原樣保留。這類殘留會隨時間堆積,側邊欄越來越髒,而在磁盤裏找不到對應關係,清理起來沒有可靠入口。

下面介紹的 xuenann/dsh-workspace-purge 就是針對這一痛點的插件:它直接把會話日誌、投影緩存和工作區註冊一起刪除,工作區目錄也可以一併放進回收站。

這是什麼

dsh-workspace-purge 是一個 DSH 插件,維護者是 xuenann,歸類爲「記憶」。它解決的問題是:內置的刪除操作只做歸檔和註銷,真正佔用磁盤的數據還在;本插件把刪除落到實處,並且把刪除目標移入回收站,保證手滑之後可以恢復。它目前沒有進入 awesome-dsh-plugin 註冊表,星標爲 0,屬於很新的社區項目。

刪除的是什麼

插件只處理四類數據,全部位於 DSH_HOME 之下:

位置 內容
~/.dsh/sessions/<cwd-slug>/<session>/ 會話日誌 session.v4.jsonl.zstd
~/.dsh/storages/session_projcache/sessions/<session>.json 標題與行投影緩存
~/.dsh/storages/workspace.json 工作區註冊記錄,以及該會話的歸檔/置頂標記
工作區目錄(可選) 僅在勾選並重新輸入目錄名後刪除

在 Windows 上,這些內容會先移入回收站,出錯可以還原;其他平臺則直接刪除,沒有回收站這一步。

三種刪除入口

1、側邊欄底部按鈕。按鈕文字是「刪除數據 / Delete data」,點開後是一個面板,列出所有工作區及其對話、已歸檔對話、以及不屬於任何工作區的對話。可以勾選要刪的內容,也可以對單行使用刪除按鈕。

2、對話菜單。每條對話的「…」菜單會多出一行,只刪除該條對話,點之前會先彈確認框。

3、Agent 工具。同一套代碼還暴露成 workspace_purge 工具,助手可以帶同樣的保護條件執行 list、delete-sessions、delete-workspaces。

一個硬約束:當前正在對話的那條不會被刪。面板會把它標出來,Host 端也會拒絕,因爲刪掉自己正在寫的日誌,運行中的會話就沒有了依據。

實現要點

插件沒有複用 sessionPersistence(它沒有刪除能力),也沒有隻依賴 workspaceRegistry.delete。按 README 的描述,刪除單條對話的順序是:停止 agent、斷開實時 store 條目、清掉歸檔/置頂標記、把日誌目錄和投影記錄移入回收站、最後從所在工作區裏摘掉。刪除工作區則是先刪它下面的對話,再刪註冊記錄,最後(如果勾選了)刪目錄。

目錄接收前有三類檢查:不能是盤符根目錄,不能是 Harness home 的上級,也不能是其他已註冊工作區的父目錄。

回收站不可用、或 PowerShell 拒絕時,條目會被重命名爲 <name>.purge-<timestamp>,而不是悄悄留下,因此不會殘留半刪除狀態的記錄。

安裝與啓用

插件尚未進入 awesome-dsh-plugin 註冊表,目前不能從 Plugins → Discover 直接安裝。需要自行打包並加入 profile:

npm pack
dsh plugin --profile desktop add ./dsh-workspace-purge-1.0.0.tgz

npm pack 生成的是 dsh-workspace-purge-1.0.0.tgz,第二行命令按這個實際產物執行,不要憑名稱改寫成 dsh plugin add github:xuenann/dsh-workspace-purge。註冊表收錄之後,可以從 Harness 內的 Plugins → Discover 安裝。

適用場景與注意

適合在本地 DSH 里長期積累對話、被歸檔和半刪除數據困擾的使用者,尤其是 Windows 環境——回收站提供了刪除後的兜底,這一點比非 Windows 平臺安全得多。

使用前有幾點要留意:

  • 插件以當前 dsh 進程的權限運行,能接觸到 DSH_HOME 下的這些路徑。安裝前先檢查源碼和許可證(倉庫標註爲 MIT),確認目錄約束符合你自己的工作區佈局。
  • 非 Windows 平臺沒有回收站,刪除是永久的,點之前先確認勾選範圍。
  • 插件不聯網、不採集遙測、不碰憑據,只操作上面列出的四個路徑。
  • 卸載插件會把側邊欄恢復成默認行爲,但不會做數據遷移或改寫,之前刪掉的東西也不會回來。
  • 開發或調試時可以用 node --check index.js、node --check client.js 做語法檢查,node test/host-sim.mjs 在內存裏跑 Host 端邏輯;tools/purge-orphans.mjs 是清理「不屬於任何工作區」對話的一次性腳本,不加 --apply 時只做 dry run。

結尾

內置刪除只是把數據換個地方放着,側邊欄干淨了,磁盤上還在。dsh-workspace-purge 把會話日誌、投影緩存、工作區註冊統一納入刪除路徑,並提供回收站兜底,把「刪掉」這件事真正做完。

目錄頁:https://www.skillhub.cn/plugins/xuenann/dsh-workspace-purge
GitHub:https://github.com/xuenann/dsh-workspace-purge

羽毛球分组比赛记分
小程序二维码

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

小夜