Featured image of post 我为什么不信任 AI 写的代码

我为什么不信任 AI 写的代码

AI 写代码越来越快,但信任度从 40% 降到 29%,这背后到底发生了什么

看到一组数据,我愣了挺久。

2023 年,40% 的开发者信任 AI 生成的代码。

2026 年,这个数字降到了 29%。

三年,降了 11 个百分点。

问题是——AI 写代码的能力明明在变强啊。

GPT-4 到 GPT-5,Claude 3 到 Claude 4,模型一个比一个猛。

为什么信任度反而下降了?


我自己就是这 29% 里的一个。

不是不信 AI 能写代码。

是不信它写的代码能直接上线。


事情是这样的。

上个月我接了个小项目,帮朋友做个内部工具。

需求很简单:一个表单提交系统,带审批流程。

我心想,这不就是 CRUD 吗,让 AI 来。

于是打开 Cursor,开始 vibe coding。

“帮我生成一个 Next.js 表单组件,包含姓名、邮箱、部门三个字段。”

啪,代码出来了。

挺漂亮的,TypeScript,带类型定义,还有错误处理。

我直接复制粘贴,跑起来了。

然后继续。

“帮我写一个 API 路由,处理表单提交,存到数据库。”

又啪,出来了。

Prisma schema 也给了,migration 也给了。

我心想,这也太快了。

以前这种活儿,怎么也得半天。

现在两小时,前端后端全搞定。


然后问题来了。

测试的时候,我发现一个奇怪的 bug。

表单提交偶尔会丢数据。

不是每次都丢,是偶尔。

我查了半天,发现是 AI 生成的 API 路由里,有个异步操作没 await。

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
// AI 生成的代码
export async function POST(req: Request) {
  const data = await req.json();
  
  // 这里没 await!
  db.form.create({ data });
  
  return Response.json({ success: true });
}
```text

数据库写入还没完成,API 就返回了。

大部分时候,数据库够快,数据能存进去。

但偶尔网络抖动,或者数据库负载高,就会丢。

这种 bug,最恶心。

因为不是必现,测试环境跑十次可能九次都正常。

但上线后,用户量一大,就会出问题。

---

我盯着那段代码,突然意识到一件事。

AI 写代码,是在"猜"我要什么。

它不知道这个表单是给谁用的。

不知道这个系统会不会并发。

不知道数据库是 PostgreSQL 还是 MySQL。

它只知道,"表单提交"这个模式,通常是这样的。

所以它给了一个"通常正确"的答案。

但"通常正确"不等于"一定正确"。

---

这让我想起以前带新人的时候。

有些新人,代码写得很快。

但你 review 的时候,总能发现各种问题。

不是语法错误,是那种"看起来对,但实际有坑"的问题。

比如:

- 异常处理只 catch 了 happy path
- 数据库查询没加索引
- 并发场景下会 race condition
- 边界条件没考虑

这些坑,不是技术不行,是经验不够。

AI 现在就像一个"技术很强但经验不足"的新人。

它能写出漂亮的代码,但不知道生产环境的残酷。

---

后来我学乖了。

AI 生成的代码,我都要 review。

不是那种"看起来没问题"的 review。

是逐行看,逐行想。

"这里如果并发会怎样?"

"这里如果数据量大了会怎样?"

"这里如果网络断了会怎样?"

以前我自己写代码,这些问题是自然就会想到的。

因为踩过坑,被坑过,痛过。

但 AI 没踩过坑。

它只是从训练数据里"学"到了模式。

模式是对的,但边界条件,它不知道。

---

所以我的信任度下降了。

不是不信 AI 能写代码。

是不信它写的代码能直接上线。

---

我看到有人统计过。

AI 生成的代码,平均每个文件有 2-3 个潜在问题。

不是语法错误,是那种"能跑,但可能有坑"的问题。

比如:

- 没处理 null/undefined
- 没考虑并发
- 没加错误处理
- 性能不是最优

这些问题,在测试环境看不出来。

但上线后,用户量一大,就会爆。

---

我有个朋友,做 SaaS 的。

他说他们团队试过 vibe coding。

一个月,代码量翻了 3 倍。

但 bug 也翻了 3 倍。

最后算下来,修 bug 的时间比写代码的时间还多。

他说了一句很经典的话:

"AI 让我们写得更快,但也让我们错得更快。"

---

我不是说 AI 不好。

AI 是好东西。

我现在写代码,70% 是 AI 生成的。

但我会花 30% 的时间 review 和修改。

以前没有 AI 的时候,我 100% 自己写,但不用 review。

现在有了 AI,我写代码的时间少了,但 review 的时间多了。

总时间其实差不多。

但代码质量,比以前高了。

因为 AI 帮我处理了那些重复的、无聊的部分。

我可以把精力集中在关键逻辑上。

---

所以我的结论是:

AI 写代码,2 倍速,不是 10 倍速。

而且这 2 倍速,不是"写"的 2 倍速。

是"整体"的 2 倍速。

写代码快了,但 review 慢了。

加起来,2 倍。

---

回到那个问题。

为什么 AI 写代码越来越强,但信任度下降了?

我觉得不是 AI 变差了。

是我们更了解它了。

刚开始用 AI 写代码的时候,觉得它是神。

什么都能写,什么都对。

用了一段时间,发现它也会犯错。

而且犯的错,都是那种"看起来对,实际有坑"的错。

这种错,比语法错误更危险。

因为语法错误,编译器会告诉你。

但这种"看起来对"的错,只有上线后才会发现。

---

所以我现在对 AI 的态度是:

信任,但验证。

让它写,但我来 review。

让它快,但我来把关。

这不是不信任 AI。

是对生产环境的尊重。

---

最后说一句。

如果你也在用 AI 写代码,别太信它。

也别太不信它。

把它当成一个"技术很强但经验不足"的同事。

它写的代码,你要 review。

它犯的错,你要纠正。

它帮你省的时间,你要用来思考更重要的事。

这才是 AI 时代的正确打开方式。

不是 vibe coding。

是 vibe reviewing。


数据库写入还没完成,API 就返回了。

大部分时候,数据库够快,数据能存进去。

但偶尔网络抖动,或者数据库负载高,就会丢。

这种 bug,最恶心。

因为不是必现,测试环境跑十次可能九次都正常。

但上线后,用户量一大,就会出问题。

---

我盯着那段代码,突然意识到一件事。

AI 写代码,是在"猜"我要什么。

它不知道这个表单是给谁用的。

不知道这个系统会不会并发。

不知道数据库是 PostgreSQL 还是 MySQL。

它只知道,"表单提交"这个模式,通常是这样的。

所以它给了一个"通常正确"的答案。

但"通常正确"不等于"一定正确"。

---

这让我想起以前带新人的时候。

有些新人,代码写得很快。

但你 review 的时候,总能发现各种问题。

不是语法错误,是那种"看起来对,但实际有坑"的问题。

比如:

- 异常处理只 catch 了 happy path
- 数据库查询没加索引
- 并发场景下会 race condition
- 边界条件没考虑

这些坑,不是技术不行,是经验不够。

AI 现在就像一个"技术很强但经验不足"的新人。

它能写出漂亮的代码,但不知道生产环境的残酷。

---

后来我学乖了。

AI 生成的代码,我都要 review。

不是那种"看起来没问题"的 review。

是逐行看,逐行想。

"这里如果并发会怎样?"

"这里如果数据量大了会怎样?"

"这里如果网络断了会怎样?"

以前我自己写代码,这些问题是自然就会想到的。

因为踩过坑,被坑过,痛过。

但 AI 没踩过坑。

它只是从训练数据里"学"到了模式。

模式是对的,但边界条件,它不知道。

---

所以我的信任度下降了。

不是不信 AI 能写代码。

是不信它写的代码能直接上线。

---

我看到有人统计过。

AI 生成的代码,平均每个文件有 2-3 个潜在问题。

不是语法错误,是那种"能跑,但可能有坑"的问题。

比如:

- 没处理 null/undefined
- 没考虑并发
- 没加错误处理
- 性能不是最优

这些问题,在测试环境看不出来。

但上线后,用户量一大,就会爆。

---

我有个朋友,做 SaaS 的。

他说他们团队试过 vibe coding。

一个月,代码量翻了 3 倍。

但 bug 也翻了 3 倍。

最后算下来,修 bug 的时间比写代码的时间还多。

他说了一句很经典的话:

"AI 让我们写得更快,但也让我们错得更快。"

---

我不是说 AI 不好。

AI 是好东西。

我现在写代码,70% 是 AI 生成的。

但我会花 30% 的时间 review 和修改。

以前没有 AI 的时候,我 100% 自己写,但不用 review。

现在有了 AI,我写代码的时间少了,但 review 的时间多了。

总时间其实差不多。

但代码质量,比以前高了。

因为 AI 帮我处理了那些重复的、无聊的部分。

我可以把精力集中在关键逻辑上。

---

所以我的结论是:

AI 写代码,2 倍速,不是 10 倍速。

而且这 2 倍速,不是"写"的 2 倍速。

是"整体"的 2 倍速。

写代码快了,但 review 慢了。

加起来,2 倍。

---

回到那个问题。

为什么 AI 写代码越来越强,但信任度下降了?

我觉得不是 AI 变差了。

是我们更了解它了。

刚开始用 AI 写代码的时候,觉得它是神。

什么都能写,什么都对。

用了一段时间,发现它也会犯错。

而且犯的错,都是那种"看起来对,实际有坑"的错。

这种错,比语法错误更危险。

因为语法错误,编译器会告诉你。

但这种"看起来对"的错,只有上线后才会发现。

---

所以我现在对 AI 的态度是:

信任,但验证。

让它写,但我来 review。

让它快,但我来把关。

这不是不信任 AI。

是对生产环境的尊重。

---

最后说一句。

如果你也在用 AI 写代码,别太信它。

也别太不信它。

把它当成一个"技术很强但经验不足"的同事。

它写的代码,你要 review。

它犯的错,你要纠正。

它帮你省的时间,你要用来思考更重要的事。

这才是 AI 时代的正确打开方式。

不是 vibe coding。

是 vibe reviewing。
Built with Hugo
Theme Stack designed by Jimmy