安全与恢复
Cleanr 的目标是让清理可审阅、可恢复,但“移动到回收站”并不等于永久备份。 这一页说明它的安全边界。
移入回收站通常仍会占用文件对应的磁盘空间。候选大小和已移动字节数描述文件, 不是实测的可用空间增量。清空回收站是用户的另一个决定;清空后 Cleanr 无法再恢复 这些内容。文件系统压缩、共享块和快照也可能使文件大小与物理占用不同。
清理时会发生什么
对于每一个已选条目,Cleanr 会:
- 先为已选条目创建 pending 执行清单;
- 确认路径位于扫描根目录内;
- 拒绝文件系统根目录、符号链接和受保护的 Cleanr 路径;
- 在适用时检查条目类型、修改时间、文件大小和目录指纹是否仍与扫描时一致;
- 将条目移动到操作系统回收站;
- 把结果和恢复定位信息写回执行清单。
每个条目都会在移动前立即校验。目标在扫描后发生变化时,该条目会安全失败并 保留在原处。
受保护路径
Cleanr 会排除:
- 作为整体清理目标的主目录;
- 当前 Cleanr 可执行文件和配置文件;
- Cleanr 状态目录,包括清理与恢复历史;
- 已配置的插件和语言目录。
主目录下的内容仍然可以扫描。这里的保护是为了避免把主目录本身或其他受保护 子树当成一个清理条目。
自动选择规则
普通 TUI 审阅、cleanr plan 和 cleanr dry-run 会先只保留其他方面仍符合条件、且
候选目录树中最新观测修改时间至少达到当前门槛的条目。长期设置是
[recommendations].preselect_after_days,默认 90 天;--inactive-days <天数> 只
覆盖本次运行。设为 0 会移除年龄过滤,显示其他方面仍符合条件的全部候选项。
只有同时满足以下条件时,条目才可能被预选:
- 规则置信度为
High; - 规则声明
default_selected = true; - 规则来自 Cleanr 内置包或显式信任的插件;
- 观测到的修改时间年龄满足当前门槛;
- 扫描证据完整,且时间不在未来。
- 每个已声明归属进程保护都确认处于空闲状态。
执行前仍然可以取消任何选择。下载文件、日志、宽泛的临时文件匹配、中等置信度条目和
未信任插件的匹配都需要手动选择。当前 Windows 用户 Temp 目录中的普通文件使用一条
窄规则作为例外:文件必须至少 30 天未修改,并且仍需通过当前门槛。显式 --select
可以把其他方面仍可选择、但修改时间较新或缺失的需审阅候选项加入计划。
cleanr analyze 和 TUI /usage 会保留完整证据;/usage 的候选和已选摘要指标仍
使用当前门槛。
修改时间只是观测到的文件系统元数据,并不能证明最后访问时间。对于目录,Cleanr 使用 候选项自身及其已扫描后代中最新的观测修改时间。
清单与历史
Cleanr 会保存:
- 每次清理的执行清单;
- 每次恢复尝试的恢复清单;
- 每个条目的成功、失败和回滚信息。
这些文件位于平台状态目录下的 cleanr 文件夹中。Cleanr 的恢复历史依赖它们,
如果之后可能需要撤销清理,请不要删除该目录。
恢复支持
目前支持程序化恢复:
- macOS 废纸篓;
- Windows 回收站;
- 兼容 Freedesktop 回收站规范的 Linux 桌面。
恢复是尽力而为。系统回收站清空后无法找回条目;原路径重新出现时也不会覆盖。 外部工具修改回收站元数据后,Cleanr 也可能无法定位原条目。
如果恢复失败,请先检查系统回收站和对应清单,再决定下一步。
确认与外部本地自动化
cleanr analyze 是只读操作:它扫描并输出证据,但不会创建清理计划或移动文件。
Agent 的建议或预选条目都不等于清理权限。
只有当前用户审阅并明确授权某个确切计划后,本地 Agent 才能执行清理。受限命令为:
cleanr clean \
--plan cleanr-plan.json \
--plan-sha256 <reviewed-sha256> \
--authorized-by-user
cleanr plan --output 会打印计划摘要。可重复使用的 --select 和 --deselect
可以记录当前用户在证据审阅中对确切候选路径作出的选择,但不能加入未知、被重叠处理
抑制或被安全策略排除的路径。执行前,clean 会校验该摘要、重新扫描记录的根目录、
按该确切选择重新生成计划,并把已选执行投影与已授权文件比较。范围、规则、推荐策略、
选择、安全策略或已选目标文件系统证据的变化都会中止清理,并要求重新审阅和授权;
已选目标之外的候选项变化不会使计划失效。已声明进程保护会在写清单前统一检查,且在
每个受保护条目执行前立即复核;运行中或未知状态都会安全阻断。成功条目仍然只进入系统
回收站,同时写入含恢复定位信息的执行清单。清单还会记录授权来自本地 TUI 确认还是
用户的显式委托。
--authorized-by-user 是调用方提供的授权声明,不是独立验证的人类批准凭证。摘要
用于校验计划内容,不会认证授权者身份。这些保护适用于通过 Cleanr 执行的操作,不能
把拥有其他文件操作工具的 Agent 隔离在沙箱中。Agent 仍必须取得并遵守用户真实授权。
设置 cleanup.require_confirm = false 只会取消本地 /clean 的交互确认框,
不会把 analyze 变成执行接口,也不会取消委托命令对摘要和授权的要求。
预算受限扫描绝不授予清理权限。其来源信息会保留在分析证据中;计划生成和执行层都会 安全拒绝,并且拒绝发生在任何回收站或清单操作之前。
实用安全清单
- 从范围较小的项目目录开始。
- 对不熟悉的候选项阅读风险说明。
- 用版本控制或备份保护源码和不可替代的数据。
- 确认清理正确前,不要清空系统回收站。
- 仍需恢复历史时,保留 Cleanr 状态目录。
版本与各平台实际验证范围见发布准备。