# AI Mac 清理工具：模型该决定什么，不该决定什么

> 比较 cc-cleaner、DevCleaner、智能体技能和 Mole 如何处理缓存、旧版本、模型与会话记录，并区分 AI 辅助解释和真正执行删除所需的校验。

Published: 2026-08-20 | Updated: 2026-10-05

「AI Mac 清理工具」可以指两种产品，一种在清理应用里加入模型，帮忙判断或解释扫描结果，另一种处理 Claude Code、Cursor、Ollama 留下的缓存和旧文件。这篇会分别看这两类工具，先说清模型适合做哪些判断，再看 AI 工具占用的空间该怎么收拾。

## 第一部分：模型到底在做哪一步决定

清理这条链路至少有四步，一款打着 AI 旗号的清理器，说的是它在其中某一步上用了模型：

1. **枚举。** 走一遍磁盘量出大小，`du` 干的就是这个活，不掺判断。
2. **归属。** 判断每条路径属于哪个应用或哪套工具链。
3. **排序和解释。** 从四千个候选里挑出值得看的十二个，再用一句话说清每个是什么。
4. **决定并删除。** 判断哪些能安全删掉，然后删。

第 2 步和第 3 步是真的模糊，模型在这两处帮得上忙。第 4 步换了一类问题，模型不是干这个的。关于 AI 清理器的争论，几乎每一场吵的都是厂商说的到底是哪一步。

### 模型真正管用的地方

难就难在归属这一步。假设 `~/Library/Application Support/Foo Labs` 占了 3 GB，磁盘上却没有叫 Foo Labs 的应用。线索可能散在目录的 plist、`~/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 好不好，而在于沿着这条链路中间划一刀，错了顶多多看两眼的那半边交给概率，错了会丢数据的那半边交给确定性。

<figure class="blog-diagram">
  <img src="https://mole.fit/img/blog/cleaner-decision-halves.webp" width="1360" height="454" loading="lazy" alt="一条清理流水线被切成两半：枚举、归属、排序和解释在概率的那一侧，答错了顶多多看两眼；保护清单和删除决定在确定性的那一侧，答错了会丢数据。">
  <figcaption>这条线分的不是聪明工具和笨工具，是「错了只浪费几屏」和「错了会丢文件」这两半。</figcaption>
</figure>

### Mole 站在哪一边

[Mole](https://mole.fit/zh/) 不带模型，也不做推理，候选项由固定规则判断。普通清理的内置保护清单包含 `.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](https://github.com/tw93/Mole) 以 GPL-3.0 开源，与 Mac 应用共用这份用户白名单，但两者的内置规则不应视为完全相同。

最后那个条目就是这场争论的缩影。`com.apple.e5rt.e5bundlecache` 躺在 `~/Library/Caches` 里，名字里写着 cache，任何一条启发式规则都会判它可删。里面装的是 Apple 神经网络引擎编译好的模型，应用已经把模型加载进去了，这时候清掉它，识别类调用会一直坏到重启机器。它被保护，是因为真有人踩过这个坑，然后补上了那一行。

挑这类工具，先问模型参与哪一步。枚举、归属、排序和解释都可以作为辅助，但结果仍要核对。若厂商说「它来判断什么能安全删除」，还应要求查看候选清单、保护规则和执行前的校验，不能把模型的解释当成删除依据。

这类边界大多不是在白板上想全的，而是有人在自己的 Mac 上撞到之后才被写下来。写本文时，[Mole CLI 的 GitHub 仓库](https://github.com/tw93/Mole)有 145 位贡献者，累计收到 987 个 issue，其中 984 个已经关闭，3 个仍在处理。这个关闭数只是 GitHub 的跟踪状态，不能硬说成解决了 984 个 bug，但它留下了一条足够长的反馈路：问题从哪来，规则为什么改，下一次遇到相同情况该怎么挡住。

这些数字不是“所有 Mac 都测过了”的证明。macOS 和应用都在换版本，也会悄悄改掉数据的存放方式，没有哪一台 Mac 能替所有人的电脑做完测试。它们真正说明的是，Mole 的清理边界一直在真实机器上被质疑、被补充、再被放进测试里，而不是只靠一句“我们会小心”。

Mole CLI 和 Mole for Mac 不是同一套删除程序。命令行版免费开源，适合愿意读 `--dry-run` 输出、自己决定范围的人；Mac 应用有独立的扫描和删除链路，候选范围只会和命令行版相同或更窄。比如 `node_modules`、`Pods`、`venv` 这类需要网络和正确依赖才能重建的目录，命令行版可以交给熟悉终端的人检查，Mac 应用则不会把它们端到普通清理列表里。

这套规则从你看到清单之前就开始工作。系统目录、钥匙串、邮件、信息、照片、云盘内容、隐私授权、登录项和后台任务不会因为占得大或路径里带着 Cache 就成为候选。普通清理中，Claude、Codex 等 AI 工具的对话、计划、记忆和本地模型也一样，Mole 只会识别经过核验的缓存叶目录，不把整个应用支持目录当作垃圾。一个目录说不清里面存的是什么，默认答案就是留下。

真正的区别在最后一步。扫描时看起来安全，不代表几分钟后仍然安全，等你审完清单，应用可能已经启动，构建可能刚好开始，路径也可能被符号链接带到了别处。Mole 会在删除前重新检查原始路径、受保护位置、用户白名单和对象身份，再确认所属应用或构建工具没有正在使用它。任何一项拿不准，结果都是跳过，不会为了让“已清理”这个数字更大而继续删。

你仍然能看到每个选择的后果。清单带着路径、归属和大小，拿不准的项目可以不选，也可以设为永不清理；卸载普通应用时会进废纸篓，缓存默认直接删除以释放空间，但可以改为移入废纸篓。最后的结果会分开记录已清理、已移入废纸篓、已跳过和失败的项目，本机日志还能回看那次操作实际做了什么。

AI 可以帮你把目录解释成人话，也可以在陌生的工具链里帮你找线索。Mole 做的是另一半：把这些线索变成一条不会因为一次回答、一个模糊目录名或一台不同的 Mac 就失效的删除规则。它不追求把盘上所有看起来能删的东西都删掉，目标是让每一次删除都说得清楚，拿不准的时候还留得住。

## 第二部分：给 AI 工具收拾残局的工具

另一种需求是清理 AI 工具留下的文件。这些占用有四类，处理规则各不相同，不能混在一起删除：

- **工具缓存和日志。** `~/Library/Caches/claude-cli-nodejs`、Cursor 的 Electron 缓存、`~/.claude` 下的遥测与调试目录。可再生，也很无聊。
- **对话记录和项目状态。** `~/.claude/projects`、`~/.codex/sessions`、`~/.grok/sessions`。经常是一次扫描里最让人意外的大头，而且不可替代。
- **旧版命令行工具。** 会自更新的 agent 命令行可能保留旧版本。举个容量例子：假设每份约 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，认得这些路径，动手前先让你审一遍

「清理」先扫描，扫完给出一份清单，确认后才动手。候选项列出路径、归属和大小，拿不准的项目默认不勾选。应用卸载进废纸篓，缓存默认永久删除以释放空间，也可以改为移入废纸篓；清理操作写入 `~/Library/Logs/mole/operations.log`，日志中的 `TRASHED` 和 `DELETED` 分别表示移入废纸篓与永久删除，不能混为一谈。

<figure class="blog-diagram">
  <img src="https://mole.fit/img/blog/mole-clean-review.webp" width="2584" height="1741" loading="lazy" alt="Mole 清理审查页按类别列出缓存和各自大小，每类都有勾选框，底部是永久清理已选 5.14 GB 的按钮。">
  <figcaption>扫描结束审核界面才出现，不会让你在一份还没建完的清单里挑东西。</figcaption>
</figure>

对 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](https://github.com/elexingyu/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](https://devcleaner.app) 是一款 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 工具残留](https://mole.fit/zh/blog/how-to-remove-ai-tool-leftovers-mac)。

## 横向对比

| 工具 | 是否确定性决策 | 是否预览路径 | 是否可恢复 | 是否保护模型仓库与聊天记录 | 价格 |
|---|---|---|---|---|---|
| Mole for Mac | 固定阻止前缀清单加用户白名单 | 是，每行带路径、归属和大小 | 应用卸载进废纸篓；缓存默认永久删除，可改为移入废纸篓 | 是，永不成为候选 | $19 买断，两台 Mac，持续更新 |
| Mole CLI | 内置保护规则与共享用户白名单 | 是，`mo clean`、`mo purge` 支持 `--dry-run` | 卸载进废纸篓，缓存清理为永久删除 | 是，按 CLI 的保护规则 | 免费，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 聊天记录也只在 AI 清理与维护里由你逐条勾选后处理，所以那 200 GB 如果整个就是一座模型库，它会在「分析」里把这座库摊开给你看，活交给 Ollama 或 LM Studio 去干。一个月没用的 Ollama 模型是例外，AI 清理与维护会把它们列出来，你勾上的交给 `ollama rm` 删除。这条边界是有意划的，不是以后要补的缺口。

## 怎么选

**200 GB 的构建产物加十几套工具链。** 体积压在缓存、旧的 `node_modules`、DerivedData 和 Docker 上，跟 AI 没什么关系。先做一轮可审的清扫，或者 `mo clean --dry-run`，剩下那些得用专用命令清的仓库，按[清理开发缓存](https://mole.fit/zh/blog/how-to-clear-dev-caches-mac)来。cc-cleaner 适合当第二遍，前提是先读懂它的风险分级。

**一座很大的本地模型库。** 权重交给对应工具管理。先用 `ollama ls`、`hf cache ls` 或 LM Studio 的 My Models 查看已安装的模型，再用该工具提供的删除功能移除确认不需要的项，列表命令本身不会释放空间。磁盘地图适合找位置，不适合代替模型仓库管理。

**刚发现 Cursor 或 Claude Code 在吃盘。** 先分清缓存、旧版命令行和对话记录，可重建的缓存要等相关程序与构建停止后再清，旧版命令行也要确认没有启动器、运行中的进程或固定版本配置仍在使用，对话记录则保留下来。逐步操作的版本在[给 AI 编程工具收拾残局](https://mole.fit/zh/blog/how-to-clean-up-ai-coding-tools-mac)。

## 常见问题

### 带 AI 的 Mac 清理工具删得比普通的更安全吗

不能只凭 AI 标签判断。模型可能帮助解释目录归属、整理候选项的优先级，但本文没有对照测试证明它比规则更准确。真正删除前，仍需要可核对的清单、保护规则和执行时的校验。问清模型参与哪一步，再看工具如何限制删除范围，比看标签更有用。

### 让 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` 就会删掉。风险分级要在第一次运行之前读，不是之后。唯一有意为之的例外在 Mole 的 AI 清理与维护页，那里可以列出超过你选定保留期的 Codex 会话和项目已经不在的 Claude Code 会话，默认不勾，要你一条条确认。

### 用了一年 AI 编程工具，空间到底被什么占走了

旧版命令行、缓存和对话记录都值得分别测量，不能只凭用了多久判断。沿用前面的假设，每份约 300 MB，五份中四份确认不用，约有 1.2 GB 可供检查，但删除前仍要核对启动器、运行中的进程和固定版本设置。`~/.claude/projects` 下的对话记录也可能持续增长，它是用户数据，不应因为体积大就自动清除。

## 延伸阅读

- [清理 Mac 上的 Ollama 与 LM Studio 模型](https://mole.fit/zh/blog/how-to-remove-ai-tool-leftovers-mac)，讲内容寻址模型仓库的机制。
- [清理开发缓存又不弄坏构建](https://mole.fit/zh/blog/how-to-clear-dev-caches-mac)，讲包管理器仓库和散落各处的 `node_modules`。
- [给 AI 编程工具收拾残局](https://mole.fit/zh/blog/how-to-clean-up-ai-coding-tools-mac)，一步一步、一条路径一条路径的版本。

---

Canonical HTML page: https://mole.fit/zh/blog/ai-mac-cleaner-tools
Blog index for agents: https://mole.fit/zh/blog/llms.txt
Site index for agents: https://mole.fit/llms.txt
