# 用 Claude Code 或 Codex 安全地给 Windows 清理空间

C 盘一变红，现在越来越多人会让 Claude Code 或 Codex 帮忙查原因。这一步交给 Agent 很合适，它能列出上百个目录，认出 `AppData\Local\npm-cache` 是包管理器的缓存、`Documents\WeChat Files` 是微信聊天记录，再用大白话讲清楚。风险在下一步，同一个 Agent 按自己读到的目录大小拼出一条 `Remove-Item -Recurse -Force` 或者 `del /s /q`，生成的命令里引号或反斜杠错一个，就可能指到别的目录上去，而这两条命令都不会先问你，不进回收站，也不留任何记录。

这篇讲一种更稳的分工，Agent 负责读和解释，带预览的清理工具负责删，中间由你点头。这里用的工具是 Mole 的免费 PowerShell 版 Mole CLI for Windows，以及它的官方 Agent skill，这个 skill 会教 Claude Code、Codex、Cursor 等 Agent 怎么正确地用 Mole。换成别的工具，只要它有预览模式，下面这套习惯一样适用。

## 为什么不该让 Agent 用 Remove-Item 清理

让 Agent 直接用 PowerShell 或 cmd 命令清理，会少掉四样东西：

1. **预览。** `Remove-Item` 一执行就生效，你批准的是一行命令，看不到它展开后的几千个文件。PowerShell 虽然有 `-WhatIf`，但没有什么能保证 Agent 会用它。
2. **退路。** 这样删掉的文件不经过回收站。
3. **记录。** 下周某个软件的设置没了，你没办法知道是不是那次清理动过它。
4. **不能碰的清单。** 一个叫 `Cache` 的目录，里面可能是浏览器的登录会话、游戏存档，或者某个正在运行的软件还在写的数据库。

专门做清理的工具本来就带着这四样，Agent 要做的就变成读懂它的输出，然后问你。想先了解哪些目录要紧，[Windows 缓存哪些能删，哪些要留](/zh/windows/blog/windows-cache-cleanup)按目录逐个讲过。

## 安装

先用 Scoop 装 Mole CLI for Windows，再装 skill：

```powershell
scoop install mole
npx skills add tw93/Mole -a claude-code codex cursor -g -y
```

装 skill 的命令需要 Node.js，会一次给 Claude Code、Codex 和 Cursor 都装上，用不到的 Agent 从命令里删掉就行。Claude Code 里也可以依次运行 `/plugin marketplace add tw93/Mole` 和 `/plugin install mole@mole`，Codex 里依次运行 `codex plugin marketplace add tw93/Mole` 和 `codex plugin add mole@mole`。CLI 请用 1.37.0 或更新的版本，这一版加了 `mo analyze --json` 和 `mo uninstall --list`，正好是 Agent 最常用的两条命令，`mo --version` 可以看当前版本。

## skill 给 Agent 定的四条规矩

1. **先读，再动。** Agent 先用只读命令回答问题，磁盘占用看 `mo analyze --json`，CPU、内存和磁盘看 `mo status --json`，以前清理过什么看 `mo history --json`，装了哪些软件看 `mo uninstall --list`，再加上 `mo clean --dry-run`，这些都不用问你就可以跑。
2. **每次删除前先预览。** Agent 先带上 `--dry-run` 跑一遍，然后讲给你听，一共多大，最大的几组是什么，每一组是直接删除、进回收站，还是之后要重新下载才能恢复。
3. **敲下删除命令之前先问你。** 由 Agent 调用时，`mo clean` 一启动就开始删，中间不会再确认，所以你的同意必须在看完预览之后、在对话里先给出。
4. **有些步骤留给你自己。** 卸载软件、在列表里勾选、任何需要管理员 PowerShell 的操作，都留在你自己的终端里做，Agent 只给你准确的命令然后停下，它不会尝试提权。

skill 还规定 Agent 不能自己编参数，Mole CLI for Windows 本来就没有 `--yes` 或 `--force`，Mole 跳过或保护的东西，Agent 也不能改用 `Remove-Item` 硬删。

## 一次完整的对话是什么样

假设你输入：「C 盘快满了，是什么占的？」

Agent 先跑 `mo --version`，看到第二行是 `Windows:`，就切换到 Windows 的规则，然后跑 `mo analyze --json`。返回的是用户目录和各个磁盘的概览，大小以字节为单位，每项带一个 `scan_status`，取值是 `complete`、`partial` 或 `unavailable`，旧的下载文件、Temp 目录、包管理器缓存这类常见的大户还会标上 `insight: true`。想看得更细，它会接着跑 `mo analyze --json D:\`，或者对最大的那个目录再看一次。

接着它会把找到的东西分给能处理的人：

| 找到的东西 | 交给谁 |
| --- | --- |
| 临时文件、软件和浏览器缓存、日志 | `mo clean` |
| Windows Temp、系统日志、错误报告和内存转储 | `mo clean --system`，由你以管理员身份运行 |
| 项目里的编译产物和 `node_modules` | `mo purge`，由你来运行 |
| 不再用的已安装软件 | `mo uninstall`，由你来运行 |
| 文档、照片、视频、游戏库、虚拟机 | 你自己决定，没有哪条 Mole 命令会删它们 |

如果你想清理出空间，它会先跑 `mo clean --dry-run`，每一个候选路径都写进 `%USERPROFILE%\.config\mole\clean-list.txt`，所以在真正动手之前，你问一句「Chrome 保存的密码在不在里面」，它可以直接查给你看。只有你说了可以，它才会运行 `mo clean`。在 Windows 上 `mo clean` 不会清空回收站，游戏录像和显卡着色器缓存默认也不动，除非你要求加上 `--game-media` 或 `--gpu-shaders`，因为着色器缓存清掉后，游戏下次启动要花不少时间重新编译。

## 哪些事留给你，为什么

**需要管理员权限的部分。** Agent 运行的 `mo clean` 只清你这个账户下的东西。要清系统范围的部分，用「以管理员身份运行」打开 PowerShell，先跑 `mo clean --system --dry-run`，再跑 `mo clean --system`。如果你的管理员账户是另一个 Windows 用户，那个窗口用的是另一个用户目录，白名单和日志都和你的分开。

**卸载软件。** Agent 可以从 `mo uninstall --list` 里找到这个软件，列表会给出名称、来源（注册表或 Microsoft Store）、发布者、版本和大小。卸载本身是一个选择列表，所以由你先跑 `mo uninstall --dry-run`，看清每个软件会用哪个卸载程序，再跑 `mo uninstall`，输入名字搜索并勾选。Mole 会调用软件厂商自己的卸载程序，它目录里的东西删不删由厂商决定，卸载完之后，Mole 再把确认属于它的残留安装目录移到回收站。有些卸载程序会弹出自己的 UAC 提示或安装向导。卸载后通常会留下什么，可以看[软件卸载以后，Windows 上还留下什么](/zh/windows/blog/what-apps-leave-after-uninstall)。

**项目目录和系统文件检查。** `mo purge` 会打开选择列表，所以要在你的终端里跑。`mo optimize` 最后会问要不要运行系统文件检查（SFC），这一步要好几分钟，答不答应也由你来定。

## 事后怎么核对

真正跑完之后，Agent 会读命令的摘要和 `mo history --json --limit 1`，告诉你删了什么、跳过了什么，跳过的不会再重试。记录保存在 `%USERPROFILE%\.config\mole\operations.log`，预览不会写进去，所以里面只有真正的删除。

几周后想知道「Mole 是不是删了我的文件」，也是查这份记录，Agent 会在 `mo history --json --limit 200` 里找这个路径。没找到，说明 Mole 没有删除它的记录，这不等于证明别的东西也没删过它。

想让某个目录以后永远不被清理，让 Agent 把它加入保护就行，它会在你同意后把路径写进 `%USERPROFILE%\.config\mole\whitelist.txt`，用带 BOM 的 UTF-8 保存，这样 Windows PowerShell 5.1 读中文路径才不会乱码，然后再跑一次 `mo clean --dry-run` 确认。

## 用的不是 Mole 怎么办

这些规矩不只适用于 Mole，换成别的工具，可以在对话一开始先贴上这样一段：

```prompt
删除任何东西之前，先把清单给我看，说清楚哪些进回收站、哪些是永久删除。
用工具自带的预览或 -WhatIf 模式，不要用 Remove-Item -Recurse -Force 或 del /s，
不要提权，也不要让我开管理员窗口。任何会删文件的命令，都等我说可以再执行，
执行完告诉我删了什么、跳过了什么。
```

## 常见问题

### Windows 上哪些 AI Agent 能用 Mole 的 skill？

安装命令里写了 Claude Code、Codex 和 Cursor，`npx skills` 也能给其他读取 skill 文件的 Agent 安装。Agent 必须能在你的电脑上执行命令，Windows PowerShell 5.1 和 PowerShell 7 都可以。

### Agent 会不会不问我就删文件？

skill 要求它先预览、等你同意，但这是给 Agent 的指令，不是一把锁，所以 Agent 自己对 shell 命令的确认提示请保持打开，也不要在它的设置里预先放行 `mo clean` 或 `Remove-Item`。卸载和需要管理员权限的清理，Agent 根本跑不了。

### 会不会清空我的回收站，或者删掉游戏存档？

在 Windows 上 `mo clean` 不会清空回收站，游戏录像和着色器缓存也默认不动，除非你要求。游戏存档和游戏库是你的数据，没有哪条 Mole 命令会删它们。不过软件自己的卸载程序仍可能删掉它目录里的数据，这也是 Agent 把卸载交给你来做的原因。

### Mole CLI for Windows 收费吗？

不收费，它以 GPL-3.0 协议开源，skill 也在同一个仓库里。Mole for Windows 是另一个有窗口的付费软件，两者的区别在[Mole CLI for Windows 和 Mole for Windows 有什么区别](/zh/windows/blog/mole-cli-vs-windows-app)。

### Mac 上也能这样用吗？

能。skill 读到 `mo --version` 是 macOS 时会改用 macOS 的命令，那边卸载的 App 进废纸篓，`mo clean` 默认会清空废纸篓。Mac 版的这篇在[用 Claude Code 或 Codex 安全地给 Mac 清理空间](/blog/use-claude-code-to-clean-up-mac)。

## 延伸阅读

- [Windows C 盘快满了，先分类再决定怎么处理](/zh/windows/blog/windows-c-drive-full)，讲空间通常去了哪里。
- [开发工具越装越多，npm、pip 和 Gradle 的哪些文件该留](/zh/windows/blog/windows-developer-caches)，讲编程工具塞满的那些缓存。
- [C 盘空间去哪了，先找出大文件](/zh/windows/blog/find-large-files-on-windows)，讲怎么手动找同样的东西。


Canonical: https://mole.fit/zh/windows/blog/use-claude-code-to-clean-up-windows
