tobi 的开源编年史:写过 Rails、管着 Shopify,如今为何亲手做了个"磁盘清理小工具"
【免费下载链接】disktreeA treemap for finding and removing what fills your disk, for Omarchy. Rust + GPUI.项目地址: https://gitcode.com/gh_mirrors/di/disktree
一个身家千亿的电商公司 CEO,最近在 GitHub 上悄悄放出了一个小工具。
没有发布会,没有融资 PPT,就一个仓库、一张截图。结果不到两周,星标冲到了 3.6k,分叉 212 个,45 个 PR 从世界各地飞来,其中 15 个是素未谋面的开发者第一次给这个项目提代码。
这个工具叫 disktree,干的事特别朴素:帮你找出硬盘里到底是谁在偷空间,然后把它删掉。
而写它的人,叫 Tobias Lütke,圈内人都喊他 tobi。
一、先认识这个人:16 岁辍学的德国学徒
故事要从德国的一个小镇说起。
tobi 16 岁就离开了学校。按他自己的说法,学校那套东西他实在学不进去,反倒是一回家摸电脑就精神百倍。家里带他看了不少医生,最后给的结论是"学习障碍"——多年后他自己想明白了,那不是障碍,他只是个必须"动手做过才能理解"的人。
于是他走了德国特色的双元制教育路线:进西门子旗下的一家公司当编程学徒。第一年在食堂、财务、仓库、前台各轮三个月,美其名曰"交学费"。真正的转折,是他被一个留长发、穿得像摇滚乐手、坚决不穿公司制服的老工程师 Jürgen "捞"进了地下室小队。
那三年里,他每天上班第一件事,就是看到自己前一天写的代码被红笔批注得密密麻麻。这段经历后来被他写进博客,也成为他做 Shopify 时反复强调的东西:别把自尊心绑在代码上,永远有更好的写法。
后来的事很多人都知道了。2004 年,他和朋友想开个卖滑雪板的网店,发现市面上的电商软件一个比一个难用,索性自己写了一套。这套"顺手做出来的东西",就是今天的 Shopify。2006 年公司正式成立,如今它是全球最大的独立电商平台之一,tobi 至今担任 CEO。
而在开源世界里,他的资历更老:Rails 早期核心团队成员之一。那个让无数程序员"三天做出一个网站"的 Ruby 框架,他深度参与过。他写的后台任务库 delayed_job 被无数项目用过,GitHub 上至今 2.2k 星,代码是从 Shopify 生产环境里直接抽出来的。
打开他的 GitHub 主页,128 个仓库。除了 disktree,还有本地文档搜索引擎 qmd(3 万多星)、给 AI 编程准备的临时目录工具 try(4k 星)、终端里的 git 图形界面 walgit(2.7k 星)。最近他还成了 Linux 发行版 Omarchy 的核心团队成员,并且是它最早的一批资助人之一。
一个管理着上万员工的人,业余时间在写磁盘清理工具。这事本身就挺有意思。
二、disktree 到底是个啥?把硬盘摊成一张"城市地图"
我们都有过这种时刻:C 盘红了,或者 Mac 弹窗说"启动磁盘已满",你翻遍文件夹也找不到罪魁祸首。系统自带的存储管理告诉你"其他"占了 200G,然后就没有然后了。
disktree 的思路很简单粗暴:不给你列表,给你一张地图。
它把整个目录画成一块块嵌套的矩形,谁占的地方大,谁的方块就大。就像从飞机上俯瞰一座城市:大片空地是系统文件,密密麻麻的小格子是代码项目,某个占了半壁江山的巨型厂房,可能就是你三年没清过的缓存。
更妙的是颜色。它按"这堆东西是什么"来上色:代码、AI 智能体留下的草稿、工具链、同步文件、Git 仓库、影音媒体、文档、缓存,各有各的颜色。再叠一层斜纹——凡是有斜纹的方块,就是"删了也不心疼"的空间,比如可以重新生成的缓存、构建产物、包管理器的历史版本。
截图里这块界面很能说明问题:扫描了 881 GiB、390 万个文件、49.9 万个目录,右下角写着总耗时 1.0 秒。左侧巨大的橙色区域是一个叫 tobi 的项目,88 GiB;旁边带斜纹的 src、cache、worktrees 一眼就看得出"这块能要回来"。
右侧面板会把选中的东西算得明明白白:占全盘多少比例、多少个文件、最后一次修改是多久以前。底下还有一条进度条,写着"现在 107 GiB 可用"——你每标记一块,它就实时告诉你删完能变成多少。
这台秤,是这个工具最让人上瘾的地方。大多数清理软件只告诉你"删这个能省 20G",disktree 是删完重新扫一遍,然后告诉你"实际多出来了 19.3G"。表里如一,不吹牛。
三、它到底牛在哪?三个让人"哦豁"的细节
第一,快得有点不讲道理。
普通扫描是单线程一个一个文件夹爬,几百万文件能跑到你泡完一杯咖啡。disktree 用的是多核并行,而且是"摊平了跑"——不管目录嵌套多深,任务都能被所有 CPU 核心同时啃。
官方给的实测数字挺狠:在 Windows 上,一块装了 400 万个文件的 C 盘,用管理员权限直接读 NTFS 的文件表,3.4 秒扫完;同场竞技的老牌工具 WizTree 用了 11.2 秒,而老老实实一个目录一个目录爬要 20 秒左右。
还有个细节特别讨喜:你本来只扫了家目录,突然想看看整个盘。它不是从头再来一遍,而是把已经量好的部分直接搬过去复用,只去读家目录之外那些没扫过的。所以从"我的文档"扩到"整块硬盘",往往就是几秒钟的事。
第二,它会主动告诉你"这里可能有鬼"。
侧栏有个叫Worth a look(值得看一眼)的板块,会自动挑出几类东西:能重新生成的缓存、一群没人管的 Git 工作树、以及超过 30 天没人动过的实验目录。
这个功能在 AI 编程时代简直是救命稻草。你可能没意识到,现在最吃硬盘的早就不是电影和照片了,而是那些为了试一个想法随手 clone 下来的仓库、跑一次就忘的沙盒环境、以及各种 AI 助手生成的临时工作树。它们不会自己消失,只会越堆越多。
disktree 把这些"数字垃圾场"直接拎到最上面,标好体积,配一句话说明。截图里的第一条就是"codex/worktrees,3 个 worktree,最老的已经 94 天"。你不用懂任何命令,看一眼就知道该不该动。
第三,它比你更怕你手滑。
这是我最欣赏的一点。很多清理工具删得爽,出事也快。disktree 的设计原则近乎偏执:
- 只能删你扫描范围内的东西,系统根目录、你的家目录本身,一律拒绝;
- 遇到挂载点绕着走,绝不跨盘"顺手带走"别的东西;
- 符号链接只删链接本身,绝不跟进去把真实文件端了;
- 删除时根本不经过命令行解释器,一个名字叫
-rf的文件,在它眼里就只是普通文件; - 默认动作是扔进回收站,不是永久删除。真要永久删,会单独弹窗,把"删什么、能回来多少"再念一遍。
它甚至写了一份"拒绝清单":/usr、/etc、/boot 这些系统目录,哪怕权限允许也不碰。理由很实在——那些文件归包管理器管,该用系统自带的方式清理,不该由一个图形工具越俎代庖。
还有个给技术人的彩蛋:远程模式。
你可以用 SSH 连上一台服务器,扫它的磁盘,但故意不给它删除按钮。它只负责生成清单:可以导出成文本,可以生成一份删除脚本(脚本还得先跑一遍预览),甚至可以直接生成一段给 AI 编程助手的提示词,让助手去核对每个路径后再动手。远程机器上永远不会发生"点错一下就没了"的悲剧。
四、为什么是现在?这是一个"极客的痒点"
回到开头那个问题:一个 Shopify CEO,为什么花时间做这个?
答案可能藏在 Omarchy 里。这是一个由 DHH 发起、主张"键盘优先、终端优先、为 AI 智能体而生"的 Linux 发行版,tobi 是核心团队成员。disktree 的官方定位写得很明确:一个为 Omarchy 做的树图工具,界面会跟随系统主题变色,用起来就像桌面自带的一部分。
换句话说,这不是一个商业产品,而是一个重度用户给自己和同类人造的趁手家伙。
而这恰恰是"创始人级开发者做小工具"最迷人的地方:他有资格不计成本地较真。为了把 Windows 上那 20 秒压到 3.4 秒,他让人去啃 NTFS 的底层文件表;为了让扫描时界面不卡,他把已经量好的结果拆成可复用的块;为了不在远程服务器上留后门,他干脆把删除功能从远程模式里彻底拿掉。
这些事,做一个"能用的产品"的公司不会做,因为投入产出比不划算。但一个自己天天在用的人会做。
五、普通人能上手吗?门槛其实不高
结论先说:能,但要看你用什么系统。
- Windows 10/11 和 macOS 11 以上:官网有现成的压缩包,下载解压直接双击运行,不用装任何环境。macOS 第一次会拦一下,需要在"隐私与安全性"里放行,并建议给它"完全磁盘访问权限",否则邮件、信息、其他 App 的数据它看不到。
- Linux:主流发行版都有包,Arch 系(包括 Omarchy)一行安装命令搞定,也可以在软件商店里找到。
- 硬件:不需要独立显卡,近几年的普通笔记本都能跑。唯一的要求是 Linux 下需要显卡驱动支持 Vulkan——这个条件现在大部分机器都满足。
它适合谁?
老实说,最适合三类人:天天和代码、容器、AI 工具打交道的开发者;硬盘常年告急、又不敢乱删的普通办公用户;以及需要维护一堆服务器、却不想在每台机器上装图形界面的运维。
如果你只是偶尔清一次垃圾,系统自带的功能其实够用。但如果你曾经盯着"其他:187 GB"发过呆,这个工具值得你花十分钟试试。
写在最后
从 Rails 到 Shopify,再到一个几百 KB 的磁盘小工具,tobi 这条线其实一以贯之:看到一件天天都在折磨人的小事,然后忍不住把它做到极致。
二十多年前,那件小事是"开个网店太麻烦";十多年前,是"后台任务没地方跑";现在,是"我的硬盘又满了,而且我不知道为什么"。
技术圈总爱讨论下一个风口在哪。但看完这个项目我反而觉得,真正能打动人的工具,往往来自一个人自己被烦到了,然后说:行吧,我自己写一个。
你上一次因为"磁盘爆满"抓狂,是什么时候?当时删掉的,又是些什么东西?
【免费下载链接】disktreeA treemap for finding and removing what fills your disk, for Omarchy. Rust + GPUI.项目地址: https://gitcode.com/gh_mirrors/di/disktree
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考