用 Claude Code 或 Codex 安全地给 Mac 清理空间
现在越来越多人打开 Claude Code 或 Codex,直接输入一句「磁盘快满了,帮我看看是什么占的」。这件事交给 Agent 其实很合适,它能一口气读完上百个目录,认出 ~/Library/Developer/Xcode/DerivedData 是编译产物、~/Library/Containers/com.tencent.xinWeChat 是微信聊天记录,再用大白话讲给你听。真正有风险的是下一步,同一个 Agent 根据自己读到的 du 结果拼出一条 rm -rf,直接在你的用户目录里执行,这条命令没有预览,不进废纸篓,删了什么也没有任何记录。
这篇讲一种更稳的分工,Agent 负责读和解释,带预览的清理工具负责删,中间由你点头。这里用的工具是 Mole 的免费命令行版 Mole CLI,以及它的官方 Agent skill,这个 skill 会教 Claude Code、Codex、Cursor 等 Agent 怎么正确地用 Mole。换成别的工具,只要它有 dry run,下面这套习惯一样适用。
为什么不该让 Agent 用 rm 删文件
清理里模糊的那部分正是 Agent 擅长的,比如遍历一棵很大的目录树,判断某个路径属于哪个 App,从四千个候选里挑出最值得看的十二个。但「这个路径能不能删」是另一类问题,它要求每次都给出同样的答案,还要有一份你能逐条核对的清单,这两样模型都给不了,更完整的讨论在AI Mac 清理工具:模型该决定什么,不该决定什么。
落到实际操作上,让 Agent 直接用 shell 命令清理,会少掉四样东西:
- 预览。
rm一执行就生效,你看到的是一行命令,看不到它展开后的三千个路径。 - 退路。 用
rm删掉的文件不经过废纸篓,没有备份的话就找不回来了。 - 记录。 下周某个 App 的设置突然没了,你没办法知道是不是那次清理动过它。
- 不能碰的清单。 一个名字像缓存的目录,里面可能是登录会话、签名密钥,或者另一个 App 还在写的数据库,Agent 未必知道。
专门做清理的工具本来就带着这四样,Agent 要做的就变成读懂它的输出,然后问你。
安装
先用 Homebrew 装 Mole CLI,再装 skill:
brew install mole
npx skills add tw93/Mole -a claude-code codex cursor -g -y
第二条命令会一次给 Claude Code、Codex 和 Cursor 都装上 skill,用不到的 Agent 从命令里删掉就行。如果习惯用 Agent 自己的插件系统,Claude Code 里依次运行 /plugin marketplace add tw93/Mole 和 /plugin install mole@mole,Codex 里依次运行 codex plugin marketplace add tw93/Mole 和 codex plugin add mole@mole。以后更新 skill 用 npx skills update -g -y。
装完不需要任何配置,下次你问起磁盘空间、想卸载某个 App,或者 Mac 为什么变慢,Agent 会自己加载这个 skill 并照着做。
skill 给 Agent 定的四条规矩
skill 是一份不长的 Markdown 文件,大部分篇幅是规矩而不是命令,和你的文件安全相关的是这四条:
- 先读,再动。 Agent 先用只读命令回答问题,磁盘占用看
mo analyze --json,内存和 CPU 看mo status --json,以前清理过什么看mo history --json,装了哪些 App 看mo uninstall --list,再加上所有带--dry-run的预览,这些都不用问你就可以跑。 - 每次删除前先预览。 清理之前,Agent 先带上
--dry-run跑一遍,然后把结果讲给你听,一共多大,最大的几组是什么,每一组是直接删除、进废纸篓,还是之后要重新下载才能恢复。 - 敲下删除命令之前先问你。 由 Agent 调用时,
mo clean一启动就开始删,中间不会再确认,所以同意这一步必须先在对话里完成。「为什么磁盘满了」只是一个问题,不算同意,看完预览之后说「就清这些」才算。 - 有些步骤留给你自己。 卸载 App、在列表里勾选、任何需要管理员密码的操作,都留在你自己的终端里做,Agent 只给你准确的命令然后停下,它不会运行
sudo,也不会向你要密码。
还有两条小规矩堵住了常见的绕路,Agent 只能用 skill 里列出的命令和参数,没法自己编一个 --force 出来,Mole 跳过或保护的路径,Agent 也不能改用 rm 硬删,跳过本身就是 Mole 的答案。
一次完整的对话是什么样
假设你输入:「Mac 提示磁盘快满了,是什么占的?」
Agent 先跑 mo --version,确认面对的是 macOS 版,然后跑 mo analyze --json。返回的是你用户目录里占空间大的位置,大小以字节为单位,每项带一个 scan_status,取值是 complete、partial 或 unavailable,Mole 认得出是缓存的目录还会标上 cleanable: true。最大的两三项,Agent 可能再对它们各跑一次 mo analyze --json 看看里面是什么。
接着它会把找到的东西分给能处理的人:
| 找到的东西 | 交给谁 |
|---|---|
| App 缓存、日志、已删除 App 的残留 | mo clean |
| 项目里的编译产物和依赖目录 | mo purge |
| 不再用的已安装 App | mo uninstall,由你来运行 |
| 下载文件夹里的安装包 | mo installer,由你来运行 |
| 文稿、照片、音乐、虚拟机、iPhone 备份 | 你自己决定,没有哪条 Mole 命令会删它们 |
最后一行和前面几行一样重要。好的回答会告诉你其中 40 GB 是一台 Parallels 虚拟机,然后把决定权留给你,而不是去找一条能把它删掉的命令。
如果你想清理出空间,Agent 会先跑 mo clean --dry-run,摘要显示在对话里,每一个候选路径都写进 ~/.config/mole/clean-list.txt,所以在真正动手之前,你问一句「我的 Slack 聊天记录在不在里面」,它可以直接查给你看。它也会提醒你 mo clean 默认会清空废纸篓,很多人是故意把东西留在里面的。只有你说了可以,它才会运行 mo clean。
哪些事留给你,为什么
需要管理员权限的部分。 一部分系统缓存要管理员密码才能清,由 Agent 运行时,mo clean 只清用户级的部分,跳过系统级的部分,并在输出里写明。想两部分一起清,Agent 会请你在自己的终端里运行 mo clean,Mole 会自己弹出密码输入,一次跑完。它不会先清一半、再让你补另一半,因为第二次运行会重新扫描,把第一次做过的事再做一遍。
卸载 App。 Agent 可以用 mo uninstall --list 找到这个 App,再用 mo uninstall --dry-run <名字> 给你看会一起删掉什么,包括 App 本身、它的缓存,以及一份「保留的个人数据」清单,里面的设置和数据默认不删。真正的卸载在没有终端时会直接拒绝,所以 mo uninstall <名字> 由你自己来跑,删掉的文件会进废纸篓。以前卸载的 App 还留着东西,可以看卸载 Mac 应用后如何清理残留文件。
项目目录。 mo purge --dry-run 会列出两类东西,一类是编译产物,离线重新构建就能恢复,另一类是 node_modules 这种依赖目录,要重新下载才能恢复。只想清其中几个项目时,Agent 会把 mo purge 交给你,它的选择列表可以让你逐个勾选。
事后怎么核对
真正跑完之后,Agent 会读命令自己的摘要和 mo history --json --limit 1,告诉你删了什么、跳过了什么。跳过的东西它不会再重试,Mole 跳过的通常是正在使用或者被刻意保护的文件。
这份记录还能回答一个通常一周后才冒出来的问题:「那次清理是不是删了我的文件?」直接这样问 Agent 就行,它会在 mo history --json --limit 200 里找这个路径以及它下面的所有东西,日期更早的话再去读完整的删除日志。没找到,说明 Mole 没有删除它的记录,这不等于证明它一定没被删,Agent 也应该这样措辞。
想让某个目录以后永远不被清理,让 Agent 把它加入保护就行,它会在你同意后把路径写进 ~/.config/mole/whitelist,再跑一次 mo clean --dry-run,确认这个路径已经不在清单里了。
用的不是 Mole 怎么办
skill 是为 Mole 写的,但里面的规矩不是。如果你让 Agent 用别的工具清理,可以在对话一开始先贴上这样一段:
删除任何东西之前,先把清单给我看,说清楚哪些进废纸篓、哪些是永久删除。
用工具自带的 dry-run 或预览模式,不要用 rm 或 find -delete,不要运行 sudo。
任何会删文件的命令,都等我说可以再执行,执行完告诉我删了什么、跳过了什么。
它没法凭空变出保护清单和操作日志,但至少把预览和决定权放回了该在的地方。不管用什么工具,哪些东西应该留着,可以看Mac 清理工具永远不该删什么和Mac 上哪些缓存可以安全删除,这两篇按目录逐个讲过。
常见问题
哪些 AI Agent 能用 Mole 的 skill?
安装命令里写了 Claude Code、Codex 和 Cursor,npx skills 也能给其他读取 skill 文件的 Agent 安装。Claude Code 和 Codex 还可以从各自的插件市场安装。Agent 必须能在你的 Mac 上执行命令,所以只能聊天、没有终端的助手跑不了 Mole。
Agent 会不会不问我就删文件?
skill 要求它只在预览之后、你在对话里同意之后,才运行会删除的命令。但这是给 Agent 的指令,不是一把锁,所以 Agent 自己对 shell 命令的确认提示请保持打开,也不要在它的权限设置里预先放行 rm 或 mo clean。卸载和需要管理员权限的步骤,Agent 根本跑不了,只能在你的终端里完成。
通过 Agent 清理,会比单独用 Mole 删得更多吗?
不会。Agent 跑的就是你自己也能敲的那些 CLI 命令,保护路径和预览都一样,它多做的是阅读和解释,告诉你哪个目录属于哪个 App,该用哪条命令处理,或者哪条都不该用。
Mole CLI 收费吗?
不收费。Mole CLI 以 GPL-3.0 协议开源,skill 也在同一个仓库里。Mole for Mac 是另一个付费 App,适合更习惯点鼠标的人,Agent 最多只会在一次对话里提一次,而且只在某一步用窗口操作更方便时才提,比如勾选要卸载的 App。
Windows 上能这样用吗?
能,配合 Mole CLI for Windows 使用,它有自己的一套命令,回收站和管理员权限的规则也不一样。skill 会读 mo --version,自动切换到 Windows 的说明。Windows 版的这篇在用 Claude Code 或 Codex 安全地给 Windows 清理空间。
延伸阅读
- AI Mac 清理工具:模型该决定什么,不该决定什么,讲模型在清理里哪里帮得上忙、哪里帮不上。
- 怎么清理 Mac 上 AI 编程工具留下的东西,讲 Claude Code、Codex、Cursor 在 Mac 上留下的缓存和会话。
- Mole CLI 和 Mac 版,该选哪个,讲命令行版和 App 版的区别。