如果你的团队正在用 AI 写代码(随便哪个AI工具),下面这些问题你大概率正在经历,或者即将经历。
AI 写代码最大的幻觉不是"它写错了",而是"它写对了——但只对了 80%"。
AI 做得很好的 80%:
AI 系统性遗漏的 20%:
举个真实场景:
AI 生成了一个支付接口:
app.post('/api/payments', async (req, res) => {
const { amount, currency, customerId } = req.body;
const charge = await stripe.charges.create({ amount, currency, customer: customerId });
await db.payments.insert({ chargeId: charge.id, amount, status: charge.status });
res.json({ success: true, chargeId: charge.id });
});这不是 bug。AI 写的每一行代码都是"正确的"。但它不是生产级代码。
这是最普遍的问题。AI 生成的代码"功能正确"但"无法采纳",因为:
典型表现结果:你花 10 分钟让 AI 生成代码,花 30 分钟把它改成"属于这个项目的样子"。有时候还不如自己写。
这是有数据支撑的事实:
实际表现:
你越想在一个 session 里做完整件事,质量越低。
METR 2025 研究(目前最严格的对照实验):
结果:使用 AI 工具的组,完成任务实际慢了 19%。
但实验后,开发者自己估计 AI 帮他们快了 20%。主观感受和客观数据完全相反。
为什么:
Stack Overflow 2025 调查:
注意:这不是说 AI 没用。而是说"AI 让你快 10 倍"这种话,至少目前不是事实。
GitClear 对 2.11 亿行代码的纵向研究(2020-2024):
指标 | 2020 | 2024 |
|---|---|---|
重构/移动代码占比 | 24.1% | 9.5% |
复制粘贴代码占比 | 8.3% | 12.3% |
5 行以上重复代码块 | 基线 | 8 倍增长 |
AI 的默认行为是"生成新代码"而不是"复用已有代码"。它不会说"这个功能你项目里已经有了,不需要再写"。
实际后果:
AI 写安全代码的方式是"你问它加它就加"——而不是在架构层面统一处理。
典型问题:
Veracode 2025 报告:
代码幻觉比聊天幻觉更隐蔽,因为代码"看起来对的"。三种常见模式:
1. 幻觉 API签名(占幻觉的 20.4%)
AI 写了 stripe.charges.create({idempotencyKey: ...}),但实际 Stripe SDK 的参数名是 idempotency_key放在 options 里。代码能跑,但幂等不生效。
2. 幻觉依赖包
AI 推荐 npm install response-validator——这个包根本不存在。或者推荐一个名字接近但已经弃用 3 年的包。
3. 修改代码时幻觉加倍
研究表明,让 AI 修改已有代码(而非从零生成)时,幻觉率翻倍。因为它需要同时推理旧代码和新代码的状态,partial context 极易出错。
为什么:
Stack Overflow 数据:45% 的开发者表示 debug AI 代码比预期耗时更长。
这是最坑的:你以为 AI 省了写代码的时间,结果在 debug 上花了更多时间。净效率可能是负的。
AI 一次处理一个文件没问题。但当改动涉及多个文件时:
特别是在多 Agent 协作时(Multi-agent workflow),不同 Agent 对同一个 API contract 的理解可能不一致。
AI 写的测试有一个通病:测试在通过,但没在测你关心的东西。
典型表现:
OpenAI Harness 团队的经验:他们每周五花 20% 的时间清理"AI slop"——通过测试但实际质量不行的代码。后来他们被迫建了自动化 GC 机制来持续清理。
Stack Overflow 2025:66% 的开发者表示最大的挫败感是 AI 给出"几乎对了但不完全对"的答案。
"几乎对"比"完全错"更危险,因为:
项目规模 | AI 表现 |
|---|---|
新建小项目(<5 文件) | 很好,几乎可以全自动 |
中型项目(50-200 文件) | 开始出现"不属于项目"的代码 |
大型项目(1000+ 文件) | 大量 context 丢失,经常产生互相矛盾的改动 |
遗留系统 | 几乎不可用——AI 不了解未文档化的约定和隐含 contract |
Google 2025 DORA Report:
大型项目中的 AI 代码需要更多人力来审查,而不是更少。
你今天让 AI 写一个组件,它用 React Hooks。明天同样的 prompt,它用 Class Component。后天,它用一个你没见过的第三方状态管理库。
在个人开发中,这是小问题。在团队协作中,这是灾难:
即使你写了 Spec(PRD、用户故事、API 规格),AI 的代码质量改善也有限。因为:
Spec 告诉 AI "做什么",但不告诉它:
ETH Zurich 的研究发现:LLM 生成的 context 文件反而让任务成功率降低 3%,同时推理成本增加 20% 以上。人写的 context 文件也只提供了平均 4% 的改善。
不是"写了 Spec 就好了"——关键是 Spec 之外的项目级上下文怎么传递。
一个很少被讨论但正在发生的事,当团队大量采用 AI 代码后,Review 质量下降。因为:
BCG 研究指出:人类 oversight 在 AI 辅助工作流中经常被自动化偏见、直觉判断和上升通道阻塞所削弱。
# | 问题 | 一句话 |
|---|---|---|
1 | 80% Problem | 功能写完了但不是生产级代码 |
2 | 项目融入 | 代码不属于你的项目 |
3 | Context Rot | 对话越长质量越差 |
4 | 速度幻觉 | 主观觉得快了,客观可能慢了 |
5 | 不重构 | 只加代码,不复用不整合 |
6 | 安全碎片化 | 安全是逐接口加的不是架构级的 |
7 | 隐蔽幻觉 | 代码看起来对但其实不生效 |
8 | Debug 更难 | 理解别人写的非人类逻辑更耗时 |
9 | 多文件矛盾 | 跨文件改动容易不一致 |
10 | 假测试 | 测试通过但没测到关键逻辑 |
11 | Almost Right | "几乎对"比"完全错"更贵 |
12 | 规模反比 | 项目越大 AI 越不好使 |
13 | 非确定性 | 同样 prompt 不同结果 |
14 | Spec 不够 | Spec 只解决"做什么"不解决"怎么做" |
15 | Review 退化 | 人类审查质量因自动化偏见下降 |
这些问题不是"AI 不行所以不要用"。AI Coding 是真实可用的工具,但它目前有明确的边界和限制。
了解这些限制,比盲目相信"AI 让开发效率提升 10 倍"更重要。