Skip to content

About

不止 C 盘:给任意磁盘记一份轻量快照,一段时间后告诉你空间去哪了。只读、不删文件、本地运行、单文件免安装 | Not just C: snapshot any drive, then see exactly where the space went.

Topics

Resources

Contributing

Stars

2 stars

Watchers

0 watching

Forks

Repository files navigation

DiskDelta

不止 C 盘 —— 每一块盘少掉的空间,都要能对上账。

一个 Windows 桌面小工具:给任意磁盘或目录记一份轻量快照,一段时间后对比两个时间点, 按目录树逐层告诉你 空间到底去哪了,并给出大文件的处理建议。

只读 · 不删你任何文件 · 本地运行 · 单文件免安装 · 无广告无捆绑 · MIT 开源

Release Downloads Windows Go Dependencies License

English · 下载 · 命令行 · 更新日志 · 参与贡献 · MIT

DiskDelta —— 已用空间变化 = Σ 各目录变化 + 未覆盖变化

它解决什么问题

现有磁盘工具(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 —— 有人真的要,我们再动手。

用 npm 装

npx diskdelta scan c:

npm 包是一层薄壳,真正的引擎是预编译的 Go 二进制,按平台通过 optionalDependencies 安装 (与 esbuild 相同的做法)。同样只支持 Windows。

三步开始

  1. 解压 zip,双击 diskdelta.exe(不用装任何东西,不用管理员权限,也不会弹黑框);
  2. 首次会让你确认「报告存到哪」,然后自动为系统盘建立第一份基线(1–2 分钟,进度实时可见);
  3. 过一段时间再打开它,点一下扫描,它就会告诉你这段时间空间去哪了。

程序是一个独立窗口,没有地址栏、没有标签页,和普通桌面软件一样。

界面

  • 左侧菜单:概览 / 报告列表 / 对比分析 / 大文件与建议 / 设置 / 关于;左下角是问题反馈(默认收起,点开有二维码)
  • 中间内容,底部是可拖拽的操作栏 —— 按住上沿上下拖可以调高度,双击收起;每个按钮下面都写着等效命令行,方便你写脚本,也说明这个工具没有隐藏动作
  • 右侧 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。

About

不止 C 盘:给任意磁盘记一份轻量快照,一段时间后告诉你空间去哪了。只读、不删文件、本地运行、单文件免安装 | Not just C: snapshot any drive, then see exactly where the space went.

Topics

Resources

Contributing

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages