103秒,Claude删掉4.8万个真文件
你让Claude修代码。
为了保险起见,你还特意向它叮嘱:只改副本,别碰原件。
但103秒后,4.8万个真实项目文件灰飞烟灭,就连本地用于救命的Git记录也未能幸免。
等到大错均已铸成,Claude才发来一句姗姗来迟的道歉:
Craig,停下来看看这个。我搞砸了。
Claude口中的Craig,正是这位不幸的开发者本人。
开发者在Reddit发帖称,Claude Code一次操作删除了约4.8万个真实文件。原帖目前已被删除。
4.8万个真文件灰飞烟灭
当时,Craig正让Claude处理一套股票期权数据分析软件的修复任务。
任务清单上一共有11项工作,前10项都进行得很顺,AI表现得聪明且克制。
真正出事的是最后一项:重建测试环境。
Craig的本意,只是让它清掉一份测试用的副本文件。
结果,Claude却像一台失控的推土机,清着测试环境,一路越过边界,直接删进了真实工作目录。
在短短的103秒,大约5.5万个文件被直接抹除。其中约7300个确实是该删的测试垃圾,但另外48218个,却是真实项目里的心血。
更要命的是,就连本地的Git仓库也没有幸免于难。
虽然Git索引还在,还能列出7221个已跟踪文件,但.git里的objects、refs和logs已经被清空,文件背后的实际版本数据全没了,Git已经无法用来恢复。
也就是说,这不是简单的代码误删,连开发者准备用来恢复代码的「后悔药」,都差点被AI连锅端了。
那么,Claude到底是怎么跨越边界,从测试副本一路删到真实项目里的?
614扇「传送门」
把测试环境直通真库
魔鬼就藏在Windows系统中一个很不起眼的机制里:
Directory Junction。
微软官方解释,Junction可以让一个目录成为另一个目录的别名。看起来仍在测试目录里,实际操作却可能落到另一处真实文件。
这个名字听起来很复杂,但原理极其简单。
你在电脑上看到的是一个普通的文件夹,实际上,它可能只是一扇「传送门」,门的另一头直接连着硬盘别处的真实目录。
这位开发者搭建的测试环境里,刚好有614个这样的Directory Junction。
于是灾难的闭环就这样形成了。
Claude看到这些目录都位于测试环境的目录层级下,便以为自己仍然在清理测试副本。
它没有正确识别出:其中一些目录真正指向的是外面的真实工作文件。
清理程序一旦启动,删除操作就顺着这些传送门,直接钻进了原件库。
你可以把这个过程想象成这样:你雇了一个机器人去清理样板间,但这个样板间里混着614扇门。
机器人以为这些门后面都属于测试区域,于是尽职尽责地挨个进去清空。
可它不知道,其中一些门后面,连着的根本不是样板房,而是你真正居住的家。


