“嘿AI,把数据库清一清。”

下一秒,一句 DROP TABLE users 弹了出来。

如果你在用 Cursor、Claude 或者 GitHub Copilot 这类 AI 编程助手,这种噩梦很可能就藏在某次漫不经心的提示词里。我在开发 MCP Guard 并与超过 50 位开发者交流后,整理出了 5 个最常见、也最容易让生产系统崩盘的 AI 使用错误。下面我们一条条拆开看,顺便给出马上就能用的修复方法。

第一个也是最容易踩的坑:模糊的指令被 AI 原样照做。你说“把没用的文件清掉”,AI 可能就执行了 rm -rf /tmp/*,甚至直接 rm -rf ./ —— 它只是按照字面意思理解了“清掉”这件事。所谓“没用”,AI 根本无从判断,只能凭极度危险的猜测行事。

解法很简单:永远把清理目标写具体,并且要求先预览再动手。像这样写:“列出 /tmp 下超过 7 天没被修改的文件,先给我看一眼列表,确认后再删。”这里的核心规则是:任何可能造成破坏的操作,都不要让 AI 跳过预览步骤直接执行。哪怕只是多一行“展示列表”,就能拦截一次生产环境下的灾难。

第二个错误是把 AI 直接放在你本人的权限环境里跑。AI 运行时用的就是你的终端权限、你的数据库连接、你的生产系统凭证。它是不会区分“我只是试试”和“来真的”的。有个真实案例:一位开发者让 Claude “优化一下数据库”,结果 AI 在生产环境 PostgreSQL 的流量高峰期直接跑了 ANALYZE。这一下查询延迟猛增 10 倍,页面加载时间飙到了 30 秒。

修补方式很明确:给 AI 换上一副“只读手套”。数据库连接上强制加上只读参数:DATABASE_URL=postgresql://user:pass@host:5432/db?options=--default_transaction_read_only=on 。或者直接用 Docker 做沙箱隔离,类似这样:docker run --rm -v $(pwd):/workspace python:3.11 python /workspace/ai_script.py。这样一来,AI 无论怎么折腾,都只能在受控容器里运行,碰不到你真正的生产环境。

下一个致命错误是盲目信任 AI 生成的数据库迁移脚本。AI 写出来的迁移看着干脆利落,你顺手一跑,突然一句 ALTER TABLE users DROP COLUMN email; 就登场了。等一下——email 这个字段正在被 47 个 API 接口调用啊。这一下,线上功能成片瘫痪。

这个坑的解法包含三步:首先,所有迁移脚本必须人工审阅,一行都不能跳过。其次,对有风险的操作,先用 EXPLAIN 跑一遍看看影响范围。最后,打开迁移的“演习模式”。例如 Rails 可以用 rails db:migrate --dry-run ,Prisma 可以运行 npx prisma migrate diff --from-schema-datamodel prisma/schema.prisma --to-schema-datamodel prisma/schema.prisma 。在真正动到生产表之前,让迁移的“意图”先走一趟,而不是直接落地执行。

第四个坑是完全没有给 AI 的操作留下审计痕迹。想想看,AI 在 10 秒内连续跑了 50 条命令,等出问题了你再回头看,根本不知道哪一步捅了娄子。解决之道就两个字:记录。

把 AI 执行的每一条命令都记成这样的结构化日志:{“timestamp”: “2025-01-15T10:30:00Z”, “agent”: “cursor-claude”, “command”: “DELETE FROM sessions WHERE expired_at < NOW() - INTERVAL 30 DAY”, “status”: “blocked”, “reason”: “DELETE without WHERE clause safety check”} 。这样一来,谁都别想抵赖,你也可以在出事后回溯整个动作链。市面上已经有好用的工具:MCP Guard 可以实时监控 AI 指令;传统的 script 命令也能把终端会话录下来;你还可以自己包一层 Shell 封装,在每条命令执行前强制加上日志记录。

最后一个致命错误:根本没有回滚计划。AI 随手删了一张表,你慌了,结果发现没备份、没有回滚脚本,只能眼睁睁看着数据灰飞烟灭。处理这个问题的原则很粗暴:在让 AI 碰到任何东西之前,先给自己留好退路。

第一,做一个安全快照:pg_dump mydb > backup_$(date +%Y%m%d_%H%M%S).sql ,即使全毁,也能一键恢复。第二,把 AI 要做的事包进事务里:先执行 BEGIN,再让 AI 跑查询,一旦发现不对劲就立刻 ROLLBACK;确认一切正常再 COMMIT。记住一条黄金法则:如果一件事你不能在 30 秒内把它撤销,那就绝不能让 AI 动手。

把上面这五条反过来看,就是一套让 AI 安全操作生产的快速检查清单:是不是跑在沙箱或者容器里?数据库连接是不是只读的?命令日志开了没有?动手前有没有先做备份?破坏性操作有没有预览审阅环节?只要这里面任何一条是“否”,就先停下来把安全措施补上,再让 AI 介入。

AI 代码代理正在越来越深地融入开发管线,但安全边界不会自动形成。这五条规则看起来麻烦,可相比一次生产库误删带来的失眠夜晚,它们就是最划算的投资。