不止 C 盘 —— 每一块盘少掉的空间,都要能对上账。
一个 Windows 桌面小工具:给任意磁盘或目录记一份轻量快照,一段时间后对比两个时间点, 按目录树逐层告诉你 空间到底去哪了,并给出大文件的处理建议。
只读 · 不删你任何文件 · 本地运行 · 单文件免安装 · 无广告无捆绑 · MIT 开源
English · 下载 · 命令行 · 更新日志 · 参与贡献 · MIT
现有磁盘工具(WizTree、WinDirStat、TreeSize Free…)都在回答**"现在谁占了空间"**。 但真正折磨人的问题是另一个:
C 盘上个月还有 40G,今天只剩 20G —— 这 20G 到底去哪了?
这两个问题的答案经常完全不同。WinSxS 在存量榜上永远第一,但它一个月可能只长 200MB;
而某个藏在 AppData 深处的缓存目录,存量只有 3G,一个月长了 2.8G —— 那才是真正的元凶。
存量视图会把你的注意力引向错误的地方。
DiskDelta 只回答后一个问题。
C 盘 256 GiB,当时只剩 21 GiB。一次全盘扫描 1,537,047 个文件 / 324,456 个目录,报告 4.8 MiB:
标为 🟢「通常可清理」的可重建缓存合计 22.11 GiB —— npm 缓存 8.57G、Yarn 5.58G、uv 3.36G、 浏览器 CacheStorage 3.5G、IntelliJ 索引 1.08G。清掉它们,剩余空间大约翻一倍。 这些目录一个都不会出现在传统"存量 Top 10"的显眼位置。
到 Releases 下载最新的
diskdelta-<版本>-windows-x64.zip,解压到任意目录,双击 diskdelta.exe 即可。
不需要安装、不需要管理员权限、不写注册表。想卸载就把整个文件夹删掉。
压缩包里有什么:
| 文件 | 说明 |
|---|---|
diskdelta.exe |
桌面版,双击用这个。 无控制台窗口,独立窗口打开界面 |
diskdelta-cli.exe |
命令行版,写脚本或想看命令输出时用这个 |
rules.json |
清理建议规则,可自行增补(放在 exe 同级即覆盖内置规则) |
diskdelta.ico |
图标文件,做快捷方式时可能用得上 |
README.txt / LICENSE |
三行上手说明 / MIT 协议 |
exe 没有做代码签名,个别杀软会对未签名程序报警。源码全部公开,你可以自己
go build 一份,编译出来的和 Release 里的是同一份代码。
目前只支持 Windows 10 / 11(x64)。 它依赖 NTFS 的目录枚举特性、Windows 卷信息接口, 以及 Edge 内核的应用窗口模式(Edge 在 Win10/11 上是系统组件,不用另外装)。
macOS 与 Linux 暂不支持。 代码里保留了跨平台接口,go test 在这些平台上能跑,
但采集层的卷信息、硬链接判定、桌面窗口都还是 Windows 专用实现,没有做也没有验证过。
如果你需要 macOS 版,欢迎提 issue —— 有人真的要,我们再动手。
npx diskdelta scan c:npm 包是一层薄壳,真正的引擎是预编译的 Go 二进制,按平台通过 optionalDependencies 安装
(与 esbuild 相同的做法)。同样只支持 Windows。
- 解压 zip,双击
diskdelta.exe(不用装任何东西,不用管理员权限,也不会弹黑框); - 首次会让你确认「报告存到哪」,然后自动为系统盘建立第一份基线(1–2 分钟,进度实时可见);
- 过一段时间再打开它,点一下扫描,它就会告诉你这段时间空间去哪了。
程序是一个独立窗口,没有地址栏、没有标签页,和普通桌面软件一样。
- 左侧菜单:概览 / 报告列表 / 对比分析 / 大文件与建议 / 设置 / 关于;左下角是问题反馈(默认收起,点开有二维码)
- 中间内容,底部是可拖拽的操作栏 —— 按住上沿上下拖可以调高度,双击收起;每个按钮下面都写着等效命令行,方便你写脚本,也说明这个工具没有隐藏动作
- 右侧 AI 助手(可选,默认关闭):填上你自己的接口地址、密钥、模型,就能让大模型帮你解读当前页面的数据。对话默认只在内存里,关掉窗口就没了;想留档可以在设置里打开落盘,文件位置界面上写着
- 中英双语一键切换,清凉浅色 / 深色主题一键切换,选择会被记住
任何一屏的第一件事都是把账摆平:
本期已用空间变化 = Σ(各子目录变化) + 未覆盖变化
"未覆盖变化"是一等公民,不是误差,不允许为了让数字好看而抹平。 它包含:
- 权限不足读不到的目录(本机实测 236 个,含存放系统还原点的
System Volume Information) - 硬链接折算(本机 16.49 GiB / 35,713 个文件只计一次,WinSxS 是重灾区)
- 逻辑大小与磁盘分配大小的差异、NTFS 元数据(MFT 等)
本机实测未覆盖 19.57 GiB(8.3%)。界面会如实列出它的可能构成、以及下一步该做什么。 谁把这部分解释清楚,谁才配得上你的信任。
大文件分三级,每条都给判定依据、建议做法、删除后影响:
| 等级 | 含义 | 举例 |
|---|---|---|
| 🟢 通常可清理 | 缓存、日志、可重建的索引、回收站 | npm/Yarn/pip 缓存、浏览器 CacheStorage、IDE 索引 |
| 🟡 需自行判断 | 你自己的数据,只有你知道还要不要 | 桌面文档、下载、聊天记录库、虚拟机镜像 |
| 🔴 不建议删除 | 应该用系统提供的正确方式处理 | hiberfil.sys 用 powercfg /h off、WinSxS 用 DISM /StartComponentCleanup |
两条刻意的设计:
- 🔴 不只说"别动",而是给出正确做法 —— 否则等于没帮上忙;
- 未命中任何规则的文件默认 🟡 而不是 🟢 —— 宁可让你自己判断,也不能因为规则没覆盖就暗示"可以删"。
规则表就是一个 rules.json,放在 exe 同级即可覆盖内置规则,你可以自己加。
⚠ 建议由路径规则自动生成,仅供参考,不构成删除依据。是否删除请自行判断并自行承担后果, 操作前请备份。本工具不会替你删除任何文件,界面上也没有删除按钮。
这一节想说的是:你没有理由不信任它,因为它把一切都摊开了。
| 承诺 | 怎么验证 |
|---|---|
| 只读,不碰你的文件 | 只读取文件名、大小、修改时间,不读取文件内容。除报告目录和 config.json 外不写任何文件,界面上没有删除按钮,本地服务的接口里也不存在能删除/移动/修改用户文件的路径 —— 代码全公开,可以自己查 |
| 不联网 | 零第三方依赖,只用 Go 标准库;界面只监听 127.0.0.1 且带一次性 token;无遥测、无更新检查、无统计上报。用抓包或防火墙可以验证 |
| 唯一的联网功能是可选的 AI 助手 | 默认关闭。你不填接口地址和密钥它就永远不会出网;启用后也只连你自己配置的地址,发送前还能预览并编辑将要发送的全文 |
| 不写注册表、不留后门 | 单个 exe + 同级 data/ 目录,删掉文件夹就等于卸载干净 |
| 没有广告、没有捆绑、不推荐安装任何东西 | 唯一的"推广"是左下角我们自己的公众号二维码,你可以完全无视它 |
| 一切都可以改 | 报告位置、扫描参数、保留策略、建议规则(rules.json)、AI 提示词,全都是明文配置,你可以看、可以改。没有隐藏开关 |
| 不偷偷留记录 | AI 对话默认不落盘,只在内存里;打开落盘开关后写到 data/ai-history.jsonl,路径在界面上明示,随时可以自己打开看或一键清空 |
| 代码开源,MIT 协议 | 想审就审,想改就改,想 fork 就 fork。不放心下载的 exe,就自己 go build |
关于 AI 助手的隐私,多说一句:对话会把当前页面的摘要上下文(可能包含你的文件路径)发到你配置的接口。 这一点在界面上用红框写着,并且发送前你可以完整看到、逐字编辑将要发出去的内容。 不想外发就别启用它 —— 其余所有功能都在本机完成。
| 指标 | 实测 |
|---|---|
| 冷扫描全盘(153 万文件) | 134.5 秒(11,424 文件/秒) |
| 热扫描全盘 | 26–34 秒(约 58,000 文件/秒) |
| 单次全盘报告体积 | 4.8 MiB(按月存一年 ≈ 58 MB) |
| 对比 153 万文件 | 3.3 秒 |
| 可执行文件 / 压缩包 | 7.1 MB / 3.0 MB |
不需要管理员权限,也不需要解析 NTFS MFT。以管理员运行只是为了覆盖那 236 个受保护目录。
命令行请用 diskdelta-cli.exe(diskdelta.exe 是无控制台的桌面版,在部分终端里看不到输出)。
界面能做的事命令行都能做,界面里每个按钮下面就写着等效命令:
| 命令 | 作用 |
|---|---|
diskdelta |
双击即用:首次引导设置并建立基线,之后直接开界面 |
diskdelta volumes |
列出本机固定磁盘(不存在的盘不会出现) |
diskdelta scan c: d: |
扫描多块盘;scan "D:\Projects" 只扫一个目录 |
diskdelta list |
列出全部报告,最新在最上面 |
diskdelta diff latest~1 latest |
对比两份报告(加 --files 打印文件明细) |
diskdelta diff A B --html report.html |
导出自包含单文件报告,可直接转发 |
diskdelta files --min 256m --advice green |
大文件清单 + 清理建议 |
diskdelta serve |
只起界面(用系统默认浏览器打开) |
diskdelta prune --dry-run |
预览保留策略会清掉哪些旧报告 |
diskdelta label latest 装Office之前 |
加备注(带备注的报告永不被自动清理) |
diskdelta config set snapshotDir "D:\DiskDelta\data" |
把报告放到别的盘 |
diskdelta migrate "D:\新位置" |
迁移已有报告,不断历史 |
diskdelta schedule --monthly |
注册 Windows 计划任务定时快照 |
diskdelta import-wiztree export.csv |
从 WizTree 的 CSV 导入历史数据 |
diskdelta rules / diskdelta legal |
查看建议规则 / 完整免责声明 |
报告引用可以写 latest、latest~1、oldest、序号(1 是最新)、文件名或日期前缀 20260901。
pwsh -File scripts/build.ps1 # 测试 + vet + gofmt + 编译 + 打包
go test ./... # 单元测试与黄金用例
node scripts/uitest.js report.html # 离线报告前端冒烟测试
node scripts/uitest-server.js http://127.0.0.1:17333 <token> # 服务模式前端冒烟测试
pwsh -File scripts/gensocial.ps1 # 重新生成 assets/social-preview.png零第三方依赖(只用 Go 标准库),前端是三个静态文件、无构建步骤。产物在 dist/。
- 仅 Windows 10 / 11(x64):依赖 NTFS 的目录枚举特性与 Windows 卷信息接口。macOS / Linux 暂不支持。
- 窗口用的是 Edge/Chrome 内核的应用窗口模式(
--app=),不是原生 WebView2 窗口。 观感一致(独立窗口、无地址栏无标签页、任务栏是独立程序),但需要系统里有 Edge —— Win10/11 自带,属于系统组件。换成真正的 WebView2 只需替换cmd/diskdelta/gui_windows.go里的openAppWindow。 - 命令行请用
diskdelta-cli.exe。桌面版是 GUI 子系统程序(这样双击才没有黑框), 在 cmd / PowerShell 里它能挂到当前控制台,但在 Git Bash 这类终端里拿不到标准输出, 会弹个提示让你换用 CLI 版。 - 统计口径默认是逻辑大小;想更贴近 Windows 显示的已用空间可以用
--size-kind allocated,代价是稍慢。 - 首次扫描的百分比依赖同目标的历史报告作分母;没有历史时只显示绝对数字,不假装知道进度。
如果这个小工具帮你腾出了空间,欢迎点个 Star ⭐ —— 这是对我们最实在的支持。
我们的微信公众号会经常分享自研小工具,以及实时的 AI 热点。 有什么想法、或者想要什么工具,都可以投稿 —— 说不上哪个就被做出来了。 二维码在程序左下角的「问题反馈」里。
MIT —— 想审就审,想改就改,想 fork 就 fork。