前言¶
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