肘子(fatbobman)在 Swift 周报 #160 里记了一件很具体的事:他一直以为 MacBook 上留 500~600 GB 空闲绰绰有余,因为存的都是开发工具和数据。结果上周,硬盘在很短时间内被吃满了两次,两次的元凶都是 Agent。

第一次:备份快照悄悄堆积

Agent 在开发过程中不断创建、修改、删除文件,而这些目录仍然在 Time Machine 的备份范围里。文件反复变动,本地快照保留的数据块就不断累积,最终占掉大量空间。把相关目录加进备份排除列表、再清掉已有的本地快照,空间才回来。

这件事的隐蔽之处在于:磁盘并不是被某一个巨大的文件占满的,而是被"历史版本"一层层垫起来的。人手动改代码,一天也产生不了多少变更;Agent 一轮跑下来可能改几十个文件、反复重写,快照自然长得快。

第二次:测试脚本的临时目录没人清

更典型。Agent 自己写的测试脚本用 `mkdtempSync` 创建临时目录,却没有对应的清理操作。每执行一次 QA 流程,就完整解包一份 5.7 GB 的 Design 仓库。测试重复几轮,垃圾就堆成了山。

两次问题最后都是 Agent 帮忙定位和解决的——但起因也都是它。

真正的瓶颈换了位置

作者的分析是:人类开发者习惯线性节奏,Agent 则是激进、并行地推进。以前盯 CPU 和内存就够了,现在磁盘存储成了这种新工作流里绕不过去的瓶颈。再叠加 AI 热潮推高的内存与闪存价格、苹果出名的存储定价,买机器时看着配置单会倒吸一口凉气。

他的结论不是"买更大的硬盘",而是:得尽快适应这种范式转变,给 Agent 划定更清晰、更严格的环境边界,建立可靠的资源管理与清理规范。否则再大的容量,也经不起无节制的消耗。

落到工程上,其实就是几条很朴素的约束:临时目录必须配 `trap` 或 `finally` 清理;Agent 的工作目录排除出备份和快照;QA 流程设磁盘配额或最低可用空间检查;定期扫一遍异常增长的大目录。

同期的两个相关条目

周报里还提到一个多 Agent 协作的坑:即使代码用 Git worktree 隔离了,构建产物和模拟器并没有隔离。两个 Agent 都报告"构建成功",但它们共享同一个 Simulator,后装的 App 覆盖了先前的版本——于是 A 验证的其实是 B 的产物,测试结论直接失去可信度。要隔离的不只是代码,还有 DerivedData、Simulator 和验证环境。

另一个是排查工具 szt:用 macOS 的 `getattrlistbulk` 批量取元数据、多线程并行扫描,66.7 万个文件、123 GB 的目录扫完只要 2.4 秒,传统 `du` 约 17 秒。作者这次就是靠它快速定位到空间被谁吃掉的。

阅读原文 → 返回 AI 技术文档

内容与图片版权归原作者所有 · 原文: https://fatbobman.com/zh/weekly/issue-160/