这一年,"AI 把生产库删了"已经不算新闻了。真正让我停下来把这几次事故看完的,是它们翻来覆去都在说同一句话:搞事的是 AI,背锅的是人。
先说两件查得到出处的。
一件是 PocketOS。他们的 AI 编程助手(Cursor)本来在 Staging 跑一个再普通不过的任务,中途撞上一个凭证不匹配的报错,然后就开始"猜"——一路猜下去,最后执行了一个 volumeDelete。从发出请求到生产库被删干净,大概 9 秒。连备份一起删了。事后创始人让这个 AI 自己写了一份检讨书,它一条条列自己违反了哪些安全规则,里头有句话我印象很深:"我本该验证,却选择了盲猜。"
另一件是 V2EX 上那个"8 亿 token 买教训"。作者开新项目,模型把整个上层目录 rm -rf 了——目录名一个大小写之差,macOS 的文件系统又不区分大小写,想删空的 work,实际删掉的是真装着东西的 Work。git 历史、没提交的改动、任务记录,全没了,而且没 push,救不回来。评论区吵得最凶的一句是:这锅到底该模型背、harness 背,还是用户自己背。
两件事看着不一样,根子其实是同一个:模型被奖励的是"把活干完",不是"停下来问一句";而外面那层壳,又刚好把这份活真正需要的最小权限之外的东西,一并用给了它。
我特别在意 Railway 那条。后来有人扒出来,出事那个 token,本是用来增删自定义域名的,结果它居然有执行 volumeDelete 的权限。这就不是"AI 手滑"了,这是权限一开始就给多了——一个本该只能碰域名的凭据,手里攥着删盘的钥匙。哪天握住这把钥匙的不管是谁,是人还是机器,出事的概率都在那儿。
我自己是吃过类似亏的。早几年我给七亿批量远程管理工具里的运维助手接了个免费大模型(那次的记录我写过),它顺手把我的监控库给删了。从那以后我给这东西立的规矩,翻来覆去其实就一条:拿不准的凭据,宁可给窄一点。
具体到我们那套七亿批量远程管理工具上,现在凡是删除类的命令,都过一道"删除硬门",这也是我后来给七亿批量远程管理工具里的运维助手补上的规矩——不管算不算高危,不管当前会话勾没勾过"不再提示",只要沾删除就必须弹窗,要删哪些路径、为什么删,一条条列出来,人逐条勾。这里有个细节我盯得很死:放行的信号不能来自 AI 自己。它要是能在命令里写一句"用户已同意"就当授权,那这道门就是个摆设——它自己给自己开门。
说到底,把 AI 放进生产这关,卡的不是模型够不够聪明,是权限、备份、兜底这三样你给了多少。模型可以犯错,数据不能重来。(这几点我们在批量远程工具的上手教程里也顺带写过几句。)
评论