一、起因:C盘又红了
238GB 的 C 盘,只剩 46.2GB。
相信每个 Windows 用户都经历过这个时刻:磁盘条变红,软件装不下,系统更新失败。这时你有几条路——
- 装某"清理大师"?它会尖叫着"检测到 3247 个垃圾!你的电脑危在旦夕!",然后趁你慌乱装上三个全家桶;
- 用专业工具?满屏 WinSxS\\amd64_microsoft-windows… 这样的路径,看得懂算我输,更别提敢删了;
- 重装系统?备份折腾一整天,半年后 C 盘照样红。
我选了第四条路:自己一项一项查清楚,搞明白每个大文件是什么、为什么占空间、删了会怎样,然后才动手。
这篇文章记录整个过程:先分享手工清理的完整战果(不装任何软件也能照着做),再讲我们怎么把这套经验做成了一个 2.4MB 的开源小工具,以及路上踩过的坑。
二、手工清理实战:安全清出 34GB
先上结果,全部项目都验证过安全性,零误删:
| Windows 更新旧备份(WinSxS) | 11.4 GB | 微软官方 DISM 命令(下文详述) |
| 软件更新遗留的旧安装包 | 6.1 GB | %LOCALAPPDATA% 下 24 个 *-updater 目录 |
| 下载器未完成的残块 | 3.7 GB | IDM 的 DwnlData 目录(在 IDM 内删任务最稳) |
| 临时文件 | 2.9 GB | %LOCALAPPDATA%\\Temp,占用中的文件自动跳过 |
| npm 缓存 | 2.0 GB | npm cache clean –force |
| pip 缓存 | 0.6 GB | 直接删 %LOCALAPPDATA%\\pip\\cache |
46.2GB → 80+GB,合计约 34GB。
几个值得展开的点:
1. WinSxS:最大的头,也是最多人不敢碰的
WinSxS 是 Windows 组件存储,动辄十几 GB,绝对不能手动删。正确姿势是用微软官方的 DISM 工具,而且要分两步:
:: 第一步:只读分析(不改任何东西),看微软自己怎么说
Dism /Online /Cleanup-Image /AnalyzeComponentStore
:: 第二步:确认"推荐清理=是"之后,再执行
Dism /Online /Cleanup-Image /StartComponentCleanup
我机器上分析报告显示"组件存储备份 19.24GB,推荐清理:是",执行后释放 11.4GB。两个细节:
- 进度跑到 100% 后 DISM/TiWorker 还会继续工作很久,进程真正退出才释放空间,别急着关;
- /StartComponentCleanup 不能加 /NoRestart 参数——这个参数在这里是无效参数,会直接报错退出。我们后来在软件里就栽过这个跟头(后文有讲)。
2. 更新包残留:藏得最深的一批
这是最意外的发现:%LOCALAPPDATA% 下躺着 24 个 *-updater 结尾的目录,共 6.1GB——各种软件(尤其 Electron 系)下载更新包装完就忘删的残留。
更有意思的是:这批目录是我人工盯着 Top20 大目录查时漏掉的,一个个都不大(几百 MB),分散在犄角旮旯,人眼扫过去根本注意不到。后来是软件全盘扫描时才抓出来的——这件事直接改变了我对"手工清理够不够"的判断。
3. 哪些东西看着像垃圾,其实千万别动
- BaiduNetdiskDownload、WeChat Files、迅雷下载目录——这是你的个人数据,不是缓存;
- conda 的 pkgs 目录——和环境之间有硬链接,手删会废掉环境,只能 conda clean -p;
- 各种叫 Cache 但在 User Data 里的目录——先搞清楚是谁的,浏览器内核类的可以清,有些"Cache"里存着登录令牌。
三、为什么做成软件:人眼会漏
手工清理有两个绕不过去的问题:
于是我们把整套经验做成了软件:C盘管家(DiskButler),开源免费。

核心设计只有一条原则:把用户当成年人。每一项清理都先回答三个问题——这是什么?为什么占空间?删了会怎样?看明白了,用户自己做决定。
具体落地成几个机制:
- 白名单后端强制:能删什么由 Rust 后端白名单决定,前端界面显示什么就删什么,想越界删都做不到;
- 清理三分层:垃圾残留(默认勾选)/ 性能缓存(空间充足时会劝你留着——缓存能加速软件,这是别的清理软件不会说的实话)/ 含个人数据(永不默认勾选);
- DISM 两步式:先只读分析,原始报告一字不改地展示,用户确认后才真正执行;
- 每条规则都有单元测试:目前 55 个测试守着,改规则必须全绿才能发版。

四、技术选型:为什么是 Tauri 2 + Rust
| 安装包 | 2.4 MB | 100~300 MB |
| 运行内存 | 几十 MB | 几百 MB |
| WebView | 系统自带 WebView2 | 自带整个 Chromium |
| 后端语言 | Rust | Node.js |
对一个磁盘清理工具来说,"自己就是个胖子"是没有说服力的。Tauri 用系统自带的 WebView2 渲染前端(React 18 + TypeScript + Tailwind),Rust 后端负责扫描和清理——2.4MB 安装包、零联网、无常驻进程。
扫描引擎用 jwalk 并行遍历,全盘几十万文件十几秒扫完;TreeMap 可视化用 d3-hierarchy 的 squarify 布局,Top-N 剪枝 + 按需下钻,百万级节点也不卡。
五、写在最后
这个项目从一次真实的 C 盘自救开始,现在长成了四个功能:磁盘透视、一键清理、启动管理、内存体检。所有清理规则都先在我们自己的电脑上跑过、验证过才保留——拿不准的,宁可不清。

- GitHub(MIT 开源):https://github.com/YGTQ3/disk-butler
- 国内加速下载:https://github.akams.cn/?url=https://github.com/YGTQ3/disk-butler/releases/latest/download/DiskButler-Setup.exe (打开点"开始下载"即可)
- 不想装软件?上面第二节的手工清理表格照着做,一样能清出不少空间。
如果它帮到了你,点个 Star 就是最好的支持。也欢迎跑一下软件里的「帮它认识更多软件」,把你电脑上小众软件的缓存分布发给我们(报告只有目录名和大小,没有文件名、没有内容、没有用户名)——规则库靠真实样本一条条长大。


