跳到主要内容

规则与置信度

Cleanr 不会只看目录名就判断它可以移除。扫描条目会与带版本的规则包匹配, 规则会解释它是什么、为什么可以清理,以及重建它可能付出什么代价。

每个候选项包含什么

字段含义
名称便于理解的名称,例如“Rust target 目录”
分类build-cachepackage-cachedownloads 等分组
置信度HighMediumLow
原因为什么该路径被视为清理候选项
风险说明清理后可能出现的问题、耗时或网络下载
默认选择规则是否请求预选该条目

同一个条目被多条规则匹配时,Cleanr 会结合来源信任级别、默认选择和置信度 保留最佳命中。最终计划还会移除互相重叠的父子候选项,避免重复计算空间。

置信度不是绝对保证

等级建议
High通常是生成或可下载数据;不熟悉的路径仍需审阅
Medium往往可以重建,但代价可能较高,或包含仅存在于本机的状态
Low可能是用户数据,必须谨慎人工确认

只有来自内置或可信来源、置信度为 Highdefault_selected = true 的规则才能预选条目。

内置规则包

builtin-dev

内置插件 manifest cleanr.builtin.dev 提供 builtin-dev 规则包。除了已知的包管理器 和工具缓存,这个规则包还会通过项目感知规则识别生成的项目产物。这类规则先根据 marker 文件识别项目根,并可用项目根的直接子目录进一步约束,再只匹配相对于该项目 根声明的精确路径。仅凭目录名称,不足以把它判断为这类项目产物。

项目感知规则覆盖:

  • Cargo、Node.js 和 React Native、Unity、Haskell、SBT、Maven、Gradle、CMake 以及 Unreal Engine;
  • Jupyter、Python、Pixi、Composer、Pub、Flutter、Elixir、Swift、Zig、Godot 以及 .NET;
  • Turborepo、Terraform 和 CocoaPods。

规则包仍然覆盖 Cargo registry 与 Git 依赖缓存、npm、pnpm、Yarn、pip、uv、Go module、Xcode DerivedData、Next.js 和 Python 工具缓存等内容。Python .venv 目录被有意排除,因为其中可能包含重建成本很高、甚至无法精确重现的本地环境。其他 风险较高或可能包含本地状态的目录只供审阅,绝不会被预选;加入清理计划前,请阅读 对应的匹配原因和风险说明。

builtin-general

查找需要人工审阅的通用候选项:

  • Downloads 目录中至少 100 MiB 的文件;
  • 至少 50 MiB 的 .log 文件;
  • 至少 1 MiB 的 .tmp 文件。

这些规则有意设置为中低置信度,并且默认不选中。

builtin-system

查找已知用户级系统清理候选项:

  • 常见浏览器缓存目录;
  • 应用缓存目录;
  • 大型临时文件、日志和 Downloads 文件。

只有高置信浏览器缓存目录会被预选。应用缓存、临时文件、日志和 Downloads 默认只展示,需人工审阅。

启用或禁用规则包

只有 cleanup.enabled_rule_packs 中的 ID 会被加载:

[cleanup]
enabled_rule_packs = ["builtin-dev", "builtin-general", "builtin-system"]

如果只想关注开发者缓存,可以移除 builtin-generalbuiltin-system

在 TUI 中运行 /rules 可以查看当前启用的规则包和规则。

添加自定义规则

推荐使用声明式插件 bundle。完整的最小示例、校验命令和信任模型见 插件

如果生成路径只有位于特定项目中才有意义,应使用 project matcher,而不是宽泛的 目录名或路径 glob。正向 marker 和根目录 glob 用来识别项目根,排除 glob 会否决 含糊的项目根,artifact_paths 则列出允许匹配的精确相对目录:

[rules.match]
kind = "directory"

[rules.match.project]
marker_globs = ["acme-project.toml"]
root_dir_globs = ["src"]
excluded_marker_globs = ["acme-keep-build"]
excluded_root_dir_globs = ["keep-output"]
artifact_paths = ["build/cache", "build/generated"]

这段配置应放在一个 [[rules]] 条目中。置信度、默认选择、匹配原因和风险说明仍应 保持保守,尤其是产物重建需要网络访问或可能包含仅存在于本机的状态时。排除 glob 只能否决同一次扫描快照中实际观察到的子项;被忽略的路径不能证明子项不存在,因此 绝不能把排除项作为规则唯一的安全边界。发布使用此 matcher 的 bundle 时,应把 cleanr_version 设为规则 schema 首次支持 project 的 Cleanr 版本;不要沿用最小 示例中通用的 >=0.1.0 下限。

插件目录中仍可以发现旧版独立 TOML 规则包,但 bundle 能提供版本和兼容性 元数据,因此更推荐使用。