AI Mac 清理工具:模型该决定什么,不该决定什么
「AI Mac 清理工具」这个说法指向两种产品,一种是里面塞了个模型的清理应用,卖点是建议给得有多聪明;另一种是来收空间的,过去一年 Claude Code、Cursor、Ollama 和它们的缓存悄悄占走了不少磁盘,它管的就是这一摊。2026 年搜这个词的人多数想要第二种,但第一种得先回答,因为它决定了第二类工具该信到什么程度。
第一部分:模型到底在做哪一步决定
清理这条链路至少有四步,一款打着 AI 旗号的清理器,说的是它在其中某一步上用了模型:
- 枚举。 走一遍磁盘量出大小,
du干的就是这个活,不掺判断。 - 归属。 判断每条路径属于哪个应用或哪套工具链。
- 排序和解释。 从四千个候选里挑出值得看的十二个,再用一句话说清每个是什么。
- 决定并删除。 判断哪些能安全删掉,然后删。
第 2 步和第 3 步是真的模糊,模型在这两处帮得上忙。第 4 步换了一类问题,模型不是干这个的。关于 AI 清理器的争论,几乎每一场吵的都是厂商说的到底是哪一步。
模型真正管用的地方
难就难在归属这一步。假设你发现 ~/Library/Application Support/Foo Labs 占了 3 GB,磁盘上却没有一个叫 Foo Labs 的应用。能拿到的证据又弱又散:目录自带的 plist 里有一小段 bundle 标识符,~/Library/HTTPStorages 里有一项前缀对得上,~/Library/Saved Application State 下躺着一个 .savedState 包,/var/db/receipts 里还有一份安装记录。按名字对着找立刻就不灵,因为厂商这边写 Foo Labs,那边写 com.foolabs.editor;手写一份目录表,排在前面的几百款还能覆盖住,再往后就断崖式失效。这正是模型比规则强的地方,信号一大堆,单拿哪个都定不了案,长尾又长到没人有耐心编完。
排序也一样,一次扫描给出四千条路径、六十 GB,这不是结果,是又扔给你一个问题。解释更简单,把 ~/Library/Caches/com.apple.nsurlsessiond 翻成一句人话,本来就是翻译活。把模型用在这三件事上,并且明说用在哪,这样的工具宣传的是真功能。
为什么最后一道闸必须是确定性的
删不删这个决定要靠三样东西,模型一样都给不了。
确定性。 同一块盘、同一个版本,每次都要给同一个答案。把温度调成零也换不来这一条,提示词里带着这台机器的内容,多装一个应用,文件列表就变了,决定挂在哪几个 token 上也跟着变。一条规则在这台机器上成立、在同事那台上不成立,它就不叫安全规则。
事前可审。 保护清单就是一组路径前缀,一分钟能读完,两个版本之间还能做一次 diff。权重加提示词读不出一份「哪些会被拒」的名单,边界在哪,只有撞上去了才知道。
事后可审。 确定性规则删错了东西,留下的是一个能复现的 bug,路径在这里,放行它的那一行在这里,挂掉的那个测试也在这里。模型删错了,留下的只有一段对话记录,修法是改提示词,改完它对其他情况有什么影响,没人量过。
出错的代价也不对称。排序排差了,顶多多划几屏;把 ~/.claude/projects 删错了,丢的是全部对话记录。所以问题不在 AI 好不好,而在于沿着这条链路中间划一刀,错了顶多多看两眼的那半边交给概率,错了会丢数据的那半边交给确定性。
Mole 站在哪一边
Mole 不带模型,也不做推理。一条路径能不能成为删除候选,看一份固定的阻止前缀清单,这份清单编译进了应用里,写着 .ollama/models、.lmstudio/models、.cache/huggingface、.cache/torch、.claude/projects、.codex/sessions、.grok/sessions 和 Library/Caches/com.apple.e5rt.e5bundlecache 这些条目。另一半交给用户自己编辑,就是个纯文本文件,cat ~/.config/mole/whitelist 直接能读。免费的 Mole CLI 以 GPL-3.0 开源,用的是同一份清单,执行它的代码都在明处。
最后那个条目就是这场争论的缩影。com.apple.e5rt.e5bundlecache 躺在 ~/Library/Caches 里,名字里写着 cache,任何一条启发式规则都会判它可删。里面装的是 Apple 神经网络引擎编译好的模型,应用已经把模型加载进去了,这时候清掉它,识别类调用会一直坏到重启机器。它被保护,是因为真有人踩过这个坑,然后补上了那一行。
所以挑这类工具,能用的检验就一个问题,模型干的是四步里的哪一步。答枚举、归属、排序、解释,都可信。答「它来判断什么能安全删除」,就再追一句「清单拿来看看」,没有清单,就没有可审的东西。
第二部分:给 AI 工具收拾残局的工具
这才是多数人真正想搜的。这些工具留下的占用有四类,每一类的处理规则都不一样,出事往往就出在把它们混成一堆:
- 工具缓存和日志。
~/Library/Caches/claude-cli-nodejs、Cursor 的 Electron 缓存、~/.claude下的遥测与调试目录。可再生,也很无聊。 - 对话记录和项目状态。
~/.claude/projects、~/.codex/sessions、~/.grok/sessions。经常是一次扫描里最让人意外的大头,而且不可替代。 - 旧版命令行工具。 会自更新的 agent 命令行会把之前的发布版留在原地,Codex 上量下来大约每个版本 300 MB,五个版本叠着就到 1.2 GB,其中只有一个在用。
- 模型权重。
~/.ollama/models、~/.cache/huggingface/hub、LM Studio 的模型目录。体积远超其他几类,该由下载它们的那个工具来管。
挑工具之前先量一遍:
du -sh ~/.claude ~/.codex ~/.ollama/models ~/.cache/huggingface 2>/dev/null | sort -h
Mole,认得这些路径,动手前先让你审一遍
「清理」先扫描,扫完给出一份清单,你确认了它才动手。每一行候选都写清路径、归属和大小,扫描器拿不准的一律不勾选,默认选中的永远是更小的那一份。删除是丢进废纸篓,不是直接 unlink,每次操作都追加进 ~/Library/Logs/mole/operations.log,那里 TRASHED 和 DELETED 是两个词。
对 AI 工具链来说,有两个行为格外重要。旧版 agent 命令行的目录会被列出来,正在用的那个版本永远不会进候选,启动器指向哪个目标,先解析出来钉死,跑着的那个版本是被结构挡在外面的,不靠猜版本号。另一个是卸载按归属推断走,不按名字匹配,卸掉某家厂商的一款应用时,同厂另一款还在用的共享 Application Support 父目录不会被一起端上来。
做法是:打开「清理」,等扫描结束,展开体积大的那几组,把想留的取消勾选,再执行清理,核对释放出来的空间。扫描免费,每个付费工具还能免费用两次,掏 $19 之前,整套审核流程能先自己走一遍。
Mole CLI,适合更想待在终端里的人
这是另一款独立的免费产品,GPL-3.0 开源,brew install mole 装上。永远先预览:
mo clean --dry-run
mo purge --dry-run
mo clean 管缓存和日志,mo purge 针对项目里的旧构建产物,每条破坏性命令都支持 --dry-run,能先把完整的路径清单读一遍。它和 Mac 应用共享同一份保护清单、同一份操作日志。去掉那个参数之前记住一个差别,命令行的缓存清理是永久删除,卸载和残留清除仍然走废纸篓。
cc-cleaner,为这个问题而生的开源终端方案
cc-cleaner 用 MIT 许可,需要 Python 3.10 以上,pipx install cc-cleaner 装。它带 22 个清理器,覆盖 Claude Code、npm、uv、cargo、Docker、Playwright、浏览器缓存,另有一个 AI/ML 模型分组,管的是 Hugging Face、PyTorch、Whisper 和 Ollama。cc-cleaner status 打印一张大小表,cc-cleaner clean 打开可交互的选择界面,-n 是预演。
风险分级写在明处,Safe 项默认清理,Moderate 和 Dangerous 项要加 --force,README 把「对话记录、共享仓库」归在 Moderate 这一档。剩下的看源码就知道。Ollama 清理器把整个 ~/.ollama/models 当一个目录删掉,Hugging Face 清理器对 ~/.cache/huggingface/hub 和 datasets 也一样,Claude 清理器会把 ~/.claude/projects 下的 *.jsonl 对话记录列出来。删除走 shutil.rmtree 和 Path.unlink,什么都不进废纸篓。安全层是一组写死的系统禁止路径,外加一条要求,每个目标都得在主目录底下,一份人写的确定性清单,本该就是这样。差别在于线划在哪儿,不在于严不严谨,cc-cleaner 把模型仓库和对话记录放在一个参数后面,Mole 是直接拒绝。
DevCleaner,想用菜单栏应用管同一片地
DevCleaner 是一款 macOS 14 及以上的菜单栏工具,当前版本 1.9.0,覆盖 23 类生态,从 Xcode DerivedData、Gradle 到 npm 和 Docker,Claude、ChatGPT、Cursor、Ollama 和 LM Studio 另有专门的扫描器。Safe 项默认删除,Warning 项「你自己定」,Danger 项永不预选,凭据和会话文件另有一份硬性拒绝清单,应用还在跑的时候要动它的缓存,会先警告一句。核心清理免费,Pro 卖买断或年订阅,具体数字以厂商页面为准。官网没写删除进不进废纸篓,而这恰好是第一次运行前最该问清的一件事。
MacPaw 也放出了一版 CleanMyMac 命令行工具的公开测试版,用 Homebrew cask 装,瞄的是同一批产物。它闭源,仓库只是个问题追踪器,不是源码,行为也明说还在变,所以该读的是它在确认步骤里摆出来的东西,不是任何已发布的说明。
让 agent 自己上手清磁盘
最后一条路线是干脆跳过清理工具,让 Claude Code 这类 agent 直接去清磁盘,也可以走某个已发布的清理 skill。这条路的优势是真的,别的工具还给不了,一套布局没人给它编过目录表,agent 照样能推理出来,可能是上个月才发布的框架,一套私有工具链,或者一个只有你会这么摆的主目录。
短处也得说得一样直白。shell 命令是推理时现对着真实文件系统生成的,跑起来之前没有一个人审过。不主动要求,就没有预演。影响面是整个主目录,一个变量恰好为空,拼出来就是一条 rm -rf,这种翻车方式历史很久了。第一部分说的在这里全都适用,只是安全网被撤了,决定是概率的,还直接接在最后一道闸上。
四道护栏,几乎不花什么成本:
- 让它去驱动一个带预览参数的工具,而不是自己拼删除命令。 有个公开的 Claude Code skill 包住了
mo命令行,mo clean之前必须先跑一次mo clean --dry-run,把完整的预演输出打出来,再要你手打确认。agent 负责挑目标,确定性的工具负责删。 - 永远不要在权限设置里预先放行
rm。 每条删除命令单独批准,要读的是路径本身,不是它给的那句概述。 - 把废纸篓设成默认落点。 Homebrew 的
trash,或者mv到~/.Trash,能让每一次失误都还有的救。 - 限定作业范围。 一次只指一个目录,要求它事前跑
du -sh、事后跑df -h,让它说的释放量是量出来的,不是估出来的。
模型仓库属于下载它们的那个工具
这件事不该交给任何通用清理器,上面这几款也一样。Ollama 和 Hugging Face 都维护内容寻址的仓库,模型之间共享数据块,哪个块还有人引用,只有管着仓库的那个工具清楚。用 ollama ls 和 ollama rm <model>,以及 hf cache ls 配合 hf cache rm model/<repo> --dry-run。手动删数据块文件为什么会让一个模型断了引用,见清理 AI 工具残留。
横向对比
| 工具 | 是否确定性决策 | 是否预览路径 | 是否可恢复 | 是否保护模型仓库与聊天记录 | 价格 |
|---|---|---|---|---|---|
| Mole for Mac | 固定阻止前缀清单加用户白名单 | 是,每行带路径、归属和大小 | 是,默认进废纸篓,另有操作日志 | 是,永不成为候选 | $19 买断,两台 Mac,终身更新 |
| Mole CLI | 同一份共享保护清单 | 是,每条破坏性命令都有 --dry-run |
卸载进废纸篓,缓存清理为永久删除 | 是,同一份清单 | 免费,GPL-3.0 |
| cc-cleaner | 冻结的禁止路径集,且限定在主目录内 | 是,-n 预演加可交互选择界面 |
否,用 shutil.rmtree 和 unlink |
加 --force 就能碰到,不是拒绝 |
免费,MIT |
| DevCleaner | 三档风险分级加一份凭据拒绝清单 | 每个扫描器给出大小,Danger 项永不预选 | 未写明,运行前先问清楚 | 模型权重被单列为一类 | 核心免费,Pro 买断或年付 |
| CleanMyMac CLI | 未公布,仓库只是问题追踪器 | 是,删除前有确认 | 未写明 | 未写明 | 公开测试版,条款以厂商为准 |
| 有 shell 权限的 agent | 没有,在推理时才定 | 你要求了才有 | 你强制走废纸篓才有 | 你在提示词里说了才有 | 你的 agent 订阅费 |
ollama rm、hf cache rm |
仓库内部的引用计数 | hf cache rm --dry-run |
否,但可以重新下载 | 这本身就是那份保护 | 免费 |
把边界说白
Mole 不做恶意软件处置,不做备份,也替代不了软件自带的卸载器,尤其是那些装了驱动、VPN 组件或系统扩展的。它不删模型权重,也不删 AI 聊天记录,所以那 200 GB 如果整个就是一座模型库,它会在「分析」里把这座库摊开给你看,活交给 Ollama 或 LM Studio 去干。这条边界是有意划的,不是以后要补的缺口。
怎么选
200 GB 的构建产物加十几套工具链。 体积压在缓存、旧的 node_modules、DerivedData 和 Docker 上,跟 AI 没什么关系。先做一轮可审的清扫,或者 mo clean --dry-run,剩下那些得用专用命令清的仓库,按清理开发缓存来。cc-cleaner 适合当第二遍,前提是先读懂它的风险分级。
一座很大的本地模型库。 权重这部分完全不要交给通用清理器,只有 ollama ls、hf cache ls 和 LM Studio 的 My Models 视图能安全地把共享数据块释放掉。先用磁盘地图找到仓库在哪,再用管它的那个工具去动它。
刚发现 Cursor 或 Claude Code 在吃盘。 这是最好办的一种,缓存和日志会重新生成,旧版命令行纯属浪费,只有对话记录不该碰。上面任何一款可审的工具都能应付,逐步操作的版本在给 AI 编程工具收拾残局。
常见问题
带 AI 的 Mac 清理工具删得比普通的更安全吗
按现在的证据不是。有两件事模型确实赢过规则,一个找不到主人的目录到底属于哪款应用,四千条候选里哪些值得看,这都是弱信号一大堆的模糊问题。但判断一条路径能不能安全删掉,要的是确定性和一份能审的清单,这两样模型给不了。可以直接问厂商,模型跑的是这条链路里的哪一步,听到「它来判断什么能安全删除」,就当它说的是「请把清单拿出来」。
让 Claude Code 来清理 Mac 安全吗
它是最灵活的选项,也是边界最松的一个。命令是推理时生成的,直接跑在主目录上,不主动要求就没有预览。真要这么用,就让 agent 去驱动一个带预演参数的工具,别让它自己拼 rm -rf,权限设置里永远不要预先放行 rm,删除一律进废纸篓,一次只让它管一个目录。
Mac 清理工具会删掉我的 Ollama 模型或者 Claude Code 记录吗
完全看是哪款工具,所以这该是最先问的问题。Mole 在删除这道闸上拦下 ~/.ollama/models、~/.lmstudio/models、~/.cache/huggingface、~/.claude/projects、~/.codex/sessions 和 ~/.grok/sessions,不管放了多久都拦,它们永远不会成为候选。cc-cleaner 把模型目录和 Claude Code 对话记录归在 Moderate 风险,传了 --force 就会删掉。风险分级要在第一次运行之前读,不是之后。
用了一年 AI 编程工具,空间到底被什么占走了
通常是旧版命令行和对话记录,不是大家以为的缓存。agent 命令行会自更新,每个版本可能留下几百 MB,Codex 上五个版本叠着大约 1.2 GB,其中只有一个在用。~/.claude/projects 下的对话记录一直在悄悄堆,是一次扫描里最容易让人意外的一项,也正因为这样,它该被排除在清扫之外,而不是收进来。
延伸阅读
- 清理 Mac 上的 Ollama 与 LM Studio 模型,讲内容寻址模型仓库的机制。
- 清理开发缓存又不弄坏构建,讲包管理器仓库和散落各处的
node_modules。 - 给 AI 编程工具收拾残局,一步一步、一条路径一条路径的版本。