吕文翰
26-04-14 16:41 微博认证:北京水木优品科技有限公司技术总监

我的数据库被AI删除了!为了不再重蹈覆辙,我做了一个 Laravel skills 项目并开源。
开源地址:github.com/johnlui/laravel-skills

几个月前,某国产AI编程IDE发布的第一天,我就下载下来试用,第一个需求,数据库就被AI删除了。幸好 PolarDB 的基础设置做的比较好,经历了1个小时的停服,200GB 大小的生产库最终恢复了,只丢失了几秒的数据。
讽刺的是,这个AI编程IDE,和PolarDB,都是同一家公司的产品。具体名字我就不说了,避免被和谐掉。有图有真相。

事后我查找原因,发现这个AI编程工具没有傻到执行 drop database ooxx 这种毁灭性语句,这种基础的安全还是有保障的,数据库被清空的原因是它帮我执行了测试数据库刷新操作:
php artisan migrate:fresh
这就很难防了。

我知道,有的人已经准备开喷了:
你怎么能放开发站连接生产库呢?
你怎么还给生产库的写入权限呢?
你太菜了,转行吧
先别急,听我狡辩,不是,听我解释。

AI编程时代,直连生产库反而成了某些场景下的刚需。
现在是 Claude Code、Codex 的 AI 编程时代,我已经3个月完全不手写代码了,虽然大部分时候,都还是半自动AI编程,但是我已经明显地发现:AI 处理线上问题的能力和速度要远超人类。很多bug都和线上数据直接相关,只要允许AI读取生产库,再结合它自己超群的代码能力,找bug修bug简直就是砍瓜切菜,又快又准。
另外,Codex 的 review 能力也是超群的,过去依靠复杂流程和数倍人力投入才能保证的软件质量,在Codex介入review流程之后,可以大幅提效,很多刁钻的边缘条件它都能挖出来。

为了能够安全又愉快地进行AI编程,我对我的项目做了针对AI编程工具的加固。
面向AI编程工具进行安全加固的核心思路是——严防死守。不仅要在配置文件如 AGENTS.md 中反复强调,还要在功能层面找出所有会导致数据库清空的危险操作,直接封禁。例如,我直接屏蔽了所有 php artisan test 操作,要求所有单元测试必须使用 ./vendor/bin/phpunit --filter XxxTest 的形式进行单文件测试。

为了让AI写Laravel代码更快更准,我搞了一个 schema 同步工具。
诚然,CC和Codex有自己读数据库的能力,但是为了节约时间和提升AI编程的准确性,我想到可以把每一个数据表的结构、备注信息写入到文档中并放入源代码文件夹,实测效果非常不错,本次我也打包发布出来给大家使用。
这个 skill 名叫 laravel-sync-database-schema,来自本人的最佳实践,能够大幅减少 AI 对数据库的误判,大幅节约时间和 token,显著减少代码撤回。AI社会,时间宝贵。

开源地址:http://t.cn/AXMQAMgU
这个项目当前包含了6个skill,除了安全和schema之外,我还提供了其他几个好用的skill:Laravel 新项目初始化、
统一 API 响应协议、服务端异常飞书消息通知、定时任务耗时埋点。详情看图。

欢迎大家继续贡献新skill。

发布于 北京