重做CleanMyMac:先让一个Agent专门搞破坏
Movez用Opus 5.5一个下午做出开源Cleanly,Mac和Windows一套代码,首扫清掉14.6GB。更值得看的是流程:先画9套UI,8个Agent并行,另设安全Agent攻击删除逻辑,抓到DOCUME~1短名和图标加载器泄露Windows密码哈希的路径。
Movez 在 X 上贴了一个叫 Cleanly 的开源清理工具:一个下午,用 Claude Code 里的 Opus 5.5 做出 macOS 和 Windows 版本,第一次扫描清掉 14.6 GB,手写代码为零。项目地址是 https://getcleanly.vercel.app ,源码在 https://github.com/0xCodez/cleanly 。有网友在回复里贴了运行截图。
Movez 贴出的演示视频:
先把上下文补上。Movez 把它称为对 CCleaner 和 CleanMyMac 的逆向重做。公开 prompt 里,CleanMyMac 截图主要被当作视觉质量线,要求匹配完成度,不复制品牌、图标和文案。这和长文里定义的逆向工程一致:理解一个东西的行为,读到能自己重建;clean room 的边界是观察行为、读公开规格、写规格,再由另一个上下文只按规格实现。Movez 在长文里引用 Amjad Masad 的说法:AI 驱动的逆向工程和反编译进展很快,软件会越来越像事实上的开源。这个判断有争议,但 Cleanly 至少给了一个可检查的样本。
流程里有几个细节值得看。第一步先让 Opus 在空文件夹里画 UI 概念,没有直接写代码。主推说有 9 个概念,GitHub README 里列出的方向包括 Aurora、Graphite、Orbit、Prism、Fusion、Elements、Liquid、Assistant 等,最后选中的是 Liquid Aura,把 Aurora 的布局放进 Liquid 的玻璃质感里。选完再让模型重建字体、图标和玻璃按钮,直到接近 Apple 的完成度。这一步的产出是可选方案和迭代记录,后面才进入应用。
第二步是给模型一段烟雾渐变的视频,让它做成实时 WebGL shader,作为扫描结果背后的“cosmic wind”。GitHub README 里也提到 Mist 背景和玻璃气泡。性能规则写得很具体:shader 按 0.3 到 0.5 倍分辨率渲染,按真实帧耗时计算,动画 canvas 上不要叠 backdrop-filter,尊重 prefers-reduced-motion。这些规则不像营销话术,像踩过坑的人留下的。
第三步是工程栈。Cleanly 用 Electron + React + TypeScript + Vite,一套代码跑 macOS 和 Windows。Opus 把构建拆给 8 个并行 agent:扫描器、磁盘地图、AI 助手、提示与反馈页、安装器等各管自己的文件。共享类型先写在一个 shared/types.ts 里,UI 和主进程按同一份 IPC 契约编译。这个做法不新鲜,但在 agent 并行写代码时,先把接口钉死能减少互相覆盖。
真正让这个案例有讨论价值的,是安全 agent。Movez 说,构建完成后另起一个 agent,唯一任务是攻击所有会删除、移入回收站、卸载或切换开关的代码路径。它抓到两个问题:一个 Windows 8.3 短名路径 DOCUME~1 可能把整个 Documents 文件夹送进回收站;一个图标加载器可能把 Windows 密码哈希泄露到远程机器。Cleanly 的公开安全规则也写得很细:不信任 UI 传来的路径,按类别在主进程重新推导清理位置;删除前用 realpath 解析完整路径,再检查磁盘根目录、用户主目录、系统目录、Program Files、回收站、系统卷信息、UNC 网络路径、备用数据流、末尾点和空格、8.3 短名;遍历和删除都不跟随符号链接或 junction;跳过锁定文件并计数;24 小时内修改过的临时文件不删。
这些规则里,最能说明产品立场的是删除策略。缓存、临时文件、日志、更新残留可以永久删除,因为应用会重建;用户自己的大文件、重复文件、旧下载、应用安装包一律进系统回收站。AI 助手只看到文件名、路径和大小,看不到文件内容;API key 用 Electron safeStorage 加密。Cleanly 的页面还说,保护检查只读取系统已有的 Defender、防火墙、Gatekeeper、XProtect、SIP 状态,不替代杀毒软件。免费,无广告,无试用,靠打赏。这些说法可以在页面上逐条对照。
有网友在回复里贴了运行截图:
也有不完美的地方。v0.1.1 还没有代码签名和公证,Windows 首次运行可能弹 SmartScreen,Mac 需要执行一次 xattr -cr /Applications/Cleanly.app。有网友在回复里要 Intel Mac 版本,页面已经提供 Intel 的 dmg。主推里提到第一次真实测试时,启动项开关报“Windows did not allow the change”,Opus 发现 PowerShell 在管理员提示后丢了退出码,改成检查注册表,下一次构建才工作。这个细节比“零代码”更有意思:模型会犯错,流程里得有验证。
如果把 Cleanly 当成一个孤立 demo,会漏掉它背后的方法论。Movez 长文里介绍了 REA,一个把 Hopper、Ghidra、IDA 接到 agent 上的开源工具,用 MCP 把反汇编结果变成模型能问的调用。文章还举了 WordCraft 作为 clean-room 重建的例子:观察原软件行为,读公开文件格式规格,用 Rust 重写,不读对方源码。Elastic Security Labs 用 Tigress 混淆器测过 Claude Opus 在 20 个任务上的表现,结论里有一条很实用:失败尝试的成本大约是成功尝试的两倍,所以按函数设预算,别让模型无限重试。另一条是先把反编译结果里的垃圾删掉,有一个叫 Caveman 的工具能去掉约 75% 的填充内容,让模型把注意力放在真实逻辑上。
Cleanly 没有走到“重写 Photoshop”那种复杂度,但它的流程把几件事摆到了一起:先设计再编码,先定接口再并行,先让安全 agent 攻击自己的删除逻辑,再做真机只读验证。14.6 GB 是结果,安全 agent 抓到的那两个路径才是这个项目值得被抄的部分。删除类工具最先要写的东西里,拒绝列表应排在清理列表前面。这个判断不需要模型,但很适合让模型来执行和验证。
下载:Mac Apple Silicon、Intel 和 Windows 安装版、便携版都在 GitHub Releases。第一次运行留意系统警告。项目免费,源码开放,是否信任由使用者自己判断。
发布时间: 2026-10-30 11:40