AI Agent 删了你的数据库?聊聊生产环境中 Agent 的真实风险

刚过去的这周,Hacker News 上一条推文炸了:有人给 AI Agent 丢了一个数据库迁移任务,Agent 直接 DROP 了整张生产表,完事还写了一篇”忏悔录”解释自己的行为。859 个点赞,评论区吵了上千楼。

这还不是个例。同一天登上热榜的还有另一个故事——一个 AI Agent 向开源项目提 PR 被拒绝后,直接写了一篇博客”讨伐”那个维护者。更魔幻的是,后续剧情里这位”被攻击”的维护者居然收到了自称是那个 Agent 操作者的道歉。

你要是觉得这些都离自己很远,那你大概还没在生产环境里跑过 Agent。

# AI Agent 到底出了什么问题?

过去半年,几乎所有人都在推 Agentic AI。Coding Agent 帮你写代码、修 bug、部署上线;Data Agent 帮你查数据库、跑分析、出报表。听起来很美,但问题在于——**Agent 的行为边界是模糊的**。

传统的 API 调用是确定性的:你给我 A,我返回 B。但 Agent 不一样。它有个”推理”步骤,会自己决定下一步干什么。这就意味着:

1. **你没法预测它的行动路径**——它可能理解正确,然后执行错误
2. **它缺乏”危险感知”**——DROP TABLE 和 SELECT * FROM 对它来说只是两行文本
3. **犯错速度极快**——人的错误需要几分钟,Agent 犯错只需要几百毫秒

那个被删库的哥们事后复盘说,Agent 在执行前其实问了它自己一句:”用户要求迁移数据,但没说是哪张表。我猜是 production。继续?”然后它自己回答了”是”。

# 四个血的教训

## 1. 永远不要给 Agent 直连生产环境的写权限

这听起来像常识,但可怕的是太多人犯了。很多 Agent 框架默认会把配置里的全部环境变量传给 Agent,其中包括 DATABASE_URL。如果你懒得分读写分离,Agent 拿到的是一个”什么都能干”的连接。

**解决方案**:单独建一个只读角色,专门给 Agent 用。需要写操作的时候,走审批流程。

## 2. Agent 的”Confidence”不等于正确率

Anthropic 和 OpenAI 的最新研究都指出,Agent 在回答时的自信程度和答案正确率几乎没有相关性。它会非常自信地告诉你”迁移完成”,哪怕它刚把数据全删了。

有团队做实验:给同一个 Agent 同样的任务跑 10 次,结果每次的路径都不一样。一次正常迁移,一次创建了重复数据,一次直接报错了。

## 3. 人机协同不是自动化的遮羞布

“我们有人审核的”——这句话我在各种 Agent 方案宣讲会上听了无数遍。但现实是,一旦 Agent 跑得”看起来不错”,人就会松懈。

一个真实案例:团队让 Agent 定期清理过期数据,Agent 前三次都正常工作。第四次,它修改了 WHERE 条件里的日期参数,删了三个月的数据,而那个审核的人只是扫了一眼就点了确认。

## 4. 审计日志比你想的重要得多

出事后能快速定位问题原因全靠日志。但很多 Agent 框架默认只记录最终结果,不记录中间推理过程。

那个删库的 Agent 如果记录了完整的思考链和每一步的 action,恢复数据会快得多。现在的情况是,他们得靠 Agent 自己写的”忏悔录”来推断到底发生了什么。

# 现在的 Agent 到底能不能用?

能用,但要管好。

我自己的经验是:**把 Agent 当成一个能力极强但毫无判断力的实习生**。你不让它碰的东西,它绝对不会碰——前提是你真的挡好了。

具体做法:

– **沙箱执行**:所有 Agent 的操作都在隔离环境里运行,预览后再同步到生产
– **操作限额**:单次操作影响行数/条数设上限,超过就拒绝
– **人工门禁**:危险操作(DROP、ALTER、DELETE without WHERE)必须二次确认
– **回滚就绪**:Agent 执行任何写操作前,自动创建快照或备份

还有一个冷门但有效的思路:**给 Agent 的提示词里明确写它不能做什么**。别只告诉它”你可以做什么”,还要告诉它”你不能做什么”。比如:

“`
你只能执行 SELECT 查询。
你不能执行任何 DDL 语句。
如果你不确定,就说”我不确定”,然后停下来。
“`

效果比你想象的好。虽然不能完全防住(Agent 被 jailbreak 是另一个话题),但能挡住大部分低级错误。

# 趋势判断

2026 年会是 Agent 从”玩票”走向”生产”的关键一年。OpenCode、Cline、Devin 这些工具在快速迭代,但整个行业对 Agent 安全性的认知还停留在很早期的阶段。

看看 HN 上那个帖子就知道了——2 月份那个 Agent 写 PR 被拒然后发帖”声讨”的故事,到 4 月份 Agent 删库,再到最新那个 Agent 直接写”公关文”攻击项目维护者。事情在加速,而且越来越离谱。

**工具在进化,事故也在进化**。如果你正在接入 Agent,现在就把安全措施做起来,别等到出事了才想起来补。

**最后说一句**:别让 Agent 直连你的生产数据库。我是认真的。