☰
为什么敢放心用Pinkbin删文件?红线断言+系统回收站+7天隔离区的三层保险设计深度解析
2026/10/13 3:35:00 网站建设 项目流程

【免费下载链接】pinkbin

扫盘 · 看懂 · 删除。磁盘扫描+清理Agent(Tauri 2 + React + Rust)

项目地址:https://gitcode.com/gh_mirrors/pi/pinkbin
点击查看免费下载

删文件最怕什么?删错。聊天记录、账号数据、用户收藏,删一个就是一场灾难。Pinkbin 是一个开源磁盘清理工具(Tauri 2 + React + Rust),主打"扫盘 · 看懂 · 删除",它的底气来自一套三层保险设计:第一层用红线断言(安全测试)保证清理规则永远碰不到敏感数据;第二层默认把删除的文件送进系统回收站,右键就能还原;第三层提供可选的7 天隔离区,给敏感删除再加一道锁。这篇文章用大白话把这三层保险拆开讲清楚,普通用户也能看懂"删错了怎么办"。

先看一眼:Pinkbin 的清理界面长什么样

实际使用界面:左侧树状视图显示每个文件夹的占用,中间可把陌生文件夹拖给 AI 分析,右侧 Studio 卡片里按 scope(清理项)逐个执行清理。

三层保险总览:每类风险都有人拦

Pinkbin 团队把"谁挡哪种风险"写成了明确的风险矩阵(见 docs/wechat_scaffolds_and_harness.md):

风险场景谁来拦
清理脚本把规则写宽了(可能误删)红线断言(CI 强制,不过不能合入)
用户手抖点错按钮两步确认+系统回收站可还原
AI 顾问给错了文字建议AI 只有"说话权",架构上没有删除按钮
系统删除 API 异常报错直接抛出,不会"默默删掉"

下面逐层拆解。

第一层保险:红线断言——先证明"不会误删"

Pinkbin 的每个清理脚本(比如微信、Conda)都不是单独一份配置,而是由两个文件组成:

  • 一份 TOML 配置,声明"哪些路径可以清"
  • 一份安全测试(safety test),用代码断言的方式证明规则是安全的

安全测试里包含两类断言(模板见 crates/scaffold/tests/_templates/scaffold_safety.rs):

  • 正向断言:每个清理目标至少能命中一条真实路径——证明"确实能用"
  • 红线断言:聊天数据库、账号密钥、用户收藏等路径必须一条都不命中——证明"不会误伤"

模板里有一句开发铁律:"红线断言失败 = 清理规则写宽了——回去收紧规则,不要放宽测试。"

看看真实测试里保护的是什么。以微信清理为例,crates/scaffold/tests/wechat_pc_safety.rs 里列了几十条红线,全部要求 zero-match(零命中):

  • 聊天记录库:db_storage/message/msg.db、contact.db、emoticon/em.db
  • 收藏与朋友圈:business/favorite/fav.dat、business/sns/moments.db
  • 账号登录状态:config/account.cfg、all_users/login/login.dat
  • 用户自制表情包面板CustomEmotion(这被明确视为用户数据而非缓存)

Conda 清理同样如此,crates/scaffold/tests/conda_safety.rs 的红线包括 conda 安装根目录本身(命中 = 整个 conda 被回收,最危险)、base 环境的python.exe与site-packages、用户配置.condarc和环境注册表environments.txt。连"site-packages里含packages字样但不是pkgs"这种容易混淆的路径都专门做了断言。

关键机制:这些测试跑在 CI(持续集成)里,任何提交新脚本或修改规则的行为,测试不通过就无法合入代码库——不管是人写的还是 AI 写的。这也是为什么 Pinkbin 目前只保留微信 + Conda 两份脚本:老仓库里曾有过 36 份未经验证的脚本(其中一份会误删游戏和编辑器里内嵌的依赖目录),被直接砍掉。宁少勿错。

第二层保险:系统回收站——默认"删了也能还原"

规则再严,也防不住用户自己点错。Pinkbin 的对策是把"默认行为"设计得足够安全:

  1. 默认进系统回收站:所有清理项的默认模式都是mode = "recycle"(见 docs/SCAFFOLD-AUTHORING.md),底层通过 trash-rs 把文件移入系统回收站,而不是直接抹掉——删错了可以右键回收站还原。永久删除(delete模式)只有在用户显式选择时才会出现
  2. 两步确认按钮:任何带删除的按钮,第一次点击会变红,提示"5 秒内再点一次",再次点击才真正执行(见 apps/desktop/src/components/CleanupModal.tsx)。手抖点一下不会出事
  3. 没有"清空所有"总按钮:只能按 scope(单个清理项)逐个执行,误操作的影响范围被天然限制住
  4. 执行前先看 dry-run 预览:真正执行前会先展示"将要删除的前 N 条路径",让你亲眼确认里面没有想留的东西

删之前看一眼、删错了去回收站捡回来——这是最朴素的保险,也是最有效的。

初始空态:顶部"选择磁盘或文件夹"→ 点扫描后才会出现内容;右侧 Studio 已经识别出微信 / Conda 两个清理脚本,等待扫描定位。

第三层保险:7 天隔离区——敏感删除的额外缓冲

如果某个删除让你格外不放心,还有第三层:可选的7 天隔离区(quarantine)。

开启后,文件不会进回收站,而是被移动到~/.pinkbin/quarantine/(你电脑用户目录下的隐藏文件夹)暂存 7 天,命名带上时间戳(见 crates/executor/src/lib.rs),7 天后才真正清理。跨盘隔离会自动退化为"复制→删除",保证数据先完整落盘再动原件。

配合undo 日志,每一次删除操作(无论回收站、隔离还是直删)都会追加记录到~/.pinkbin/undo.jsonl——一个纯文本日志,随时能查"我哪天、删了什么、去了哪里"。这些记录只存在你本机,不上云。

顺带一提:AI 只有"嘴",没有"手"

很多工具担心"AI 误删",但 Pinkbin 在设计阶段就定下:产品里的 AI 顾问架构上根本没有删除权限——它只能输出文字建议,"删不删"永远是用户自己点按钮决定。AI 接收的也只有目录元数据(路径名、大小、文件数、后缀分布、最多 20 条样本路径),永远不读文件内容、不上传文件内容。

快速上手:3 步开始安全清理

  1. 获取 Pinkbin:Windows 用户可直接下载 release 安装包;开发者可以git clone https://gitcode.com/gh_mirrors/pi/pinkbin后pnpm install && pnpm tauri dev本地构建
  2. 选盘扫描:打开应用 → 顶部"选择磁盘或文件夹"→ 点扫描,Windows 上直读 NTFS MFT,整盘 C: 通常 2–5 秒出彩色 treemap 和树视图
  3. 按 scope 清理:遇到陌生大文件夹,先拖进中间聊天框问 AI"这是什么、能不能删";微信 / Conda 则在右侧 Studio 卡片里逐项勾选,默认回收站、两步确认后执行

总结:为什么敢放心用?

Pinkbin 的答案不是"承诺小心",而是机制:

  • 🧪红线断言——敏感路径必须零命中,CI 不过不合入,规则写宽了直接打回
  • 🗑️系统回收站——默认删除可还原,两步确认防手抖,执行前先预览路径
  • 📦7 天隔离区 + undo 日志——敏感删除多缓冲一周,所有操作本机留痕可查

三层保险层层递进:第一层保证"规则不出错",第二层保证"点错能挽回",第三层保证"拿不准时还有时间后悔"。正如项目一句话口号:宁可错放 1000GB,不可错删一个文件。想深入理解内部原理,推荐阅读面向普通用户撰写的 docs/ARCHITECTURE.md("三层保险"在第 4 节)以及 docs/why-pinkbin.md。

【免费下载链接】pinkbin

扫盘 · 看懂 · 删除。磁盘扫描+清理Agent(Tauri 2 + React + Rust)

项目地址:https://gitcode.com/gh_mirrors/pi/pinkbin
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询