前言¶
DSH 每輪對話都會產生大量臨時文件,這些文件堆積在工作區會佔用空間,且往往難以分辨用途,誤刪可能導致數據丟失。手動清理既耗時又容易出錯。dsh-turn-scratch 插件旨在解決這一問題,通過自動隔離和清理機制,保持工作區的整潔與安全。
介紹¶
dsh-turn-scratch 是一款由 popujiang 維護的 DSH 插件,專注於管理 DSH 每輪產生的多餘臨時文件。它的核心邏輯是將臨時文件從工作區移出,進行隔離存儲,待確認後再進行清理,從而避免文件混入工作區。
核心功能¶
該插件主要提供以下能力:
- 隔離回合產生的臨時文件:默認不直接刪除文件,而是將其先移入隔離區。
- 跨盤安全搬運:當工作區與隔離區不在同一塊盤時,插件會通過“複製 → 校驗文件數與字節數 → 落庫 → 刪原件”的流程,確保任何時候崩潰都不會丟失原件。
- 暫存區機制:提供一個暫存區(
workDir),讓中間產物先寫入此處,保持工作區從一開始就是乾淨的。 - 手動還原與清理工具:提供一系列命令,允許用戶查看狀態、手動還原文件、標記文件以便收走或徹底清理隔離區。
安裝與啓用¶
安裝該插件需要使用官方提供的命令。請在終端中執行以下指令:
dsh plugin --profile desktop add "git+https://github.com/popujiang/dsh-turn-scratch.git#v0.3.1"
配置項¶
安裝後,可以通過修改 profile 下的 cordis.patch.yml 文件來調整插件行爲。
- 指定隔離存儲路徑(加速跨盤搬運):
默認情況下,隔離區可能位於不同的磁盤,移動速度較慢。如果需要加速,可以將storeRoot指向與工作區同盤的路徑。
turn-scratch:
config:
storeRoot: "D:/.dsh-turn-scratch"
- 關閉暫存區:
如果不需要保持工作區全程乾淨,可以將workDir設置爲空字符串,插件將恢復爲直接在工作區操作,但在回合結束時依然會執行隔離清理。
turn-scratch:
config:
workDir: ""
常用命令¶
插件提供了一組工具命令,用於管理隔離區:
scratch_status:查看當前的隔離狀態,包括扣留了哪些文件以及已還原的文件。scratch_restore:手動將隔離區中的文件還原回工作區。scratch_purge:清空隔離區,這將執行真正的刪除操作。scratch_mark:標記特定的文件爲“可收走”狀態,以便在回合結束時被處理。scratch_workdir:獲取暫存區的路徑,適合在長對話中讓中間產物寫入此處。
安全與注意事項¶
- 默認安全策略:插件默認只隔離文件,不進行刪除。只有通過
scratch_purge手動清空隔離區,文件纔會真正從磁盤消失。 - 權限限制:由於模型權限受限,它只能執行還原操作,無法執行刪除操作。文件的最終生殺大權掌握在用戶手中。
- 兼容性:該插件需要 DSH 版本
>=0.1.1-rc.2。
總結¶
dsh-turn-scratch 通過將臨時文件隔離到專門目錄,解決了 DSH 工作區混亂的問題。其默認的安全策略(先隔離後刪除)和跨盤安全搬運機制,降低了誤刪數據的風險。對於希望保持工作環境整潔的開發者來說,這是一個實用的工具。
插件詳情請查閱:catalog_url
源碼地址:github_url