本文阅读约 8 分钟
用了三个月 AI 编程助手之后,我删掉了 60% 的自动生成代码
一个 senior dev 的 honestly late review
事情的开始
去年十二月,我和大多数人一样,在 Copilot 推出 Chat 之后立刻开了会员。当时我想的是:省下来的时间够我多刷两道 LeetCode。
三个月过去了。LeetCode 一道没刷,但我学会了在代码审查里说"这里为什么这么写"的时候不脸红——因为很多时候我自己也不知道。
这不是一篇 Copilot 吹文,也不是一篇「AI 万岁」或者「AI 全是垃圾」的二极管文章。就事论事地聊聊这三个月里我亲眼看到的事。
它确实帮你省了时间——但省的是哪种时间?
Copilot 在以下几个场景里是真的香:
- 写样板代码:DTO、serializer、CRUD 的 boilerplate,以前要手敲 20 行,现在 Tab 键按 5 下搞定。
- 写正则表达式。我至今遇到过一个正则能一次写对的情况,凤毛麟角。Copilot 一次过的情况比我高多了。
- 翻译。把 Python 脚本翻成 Go、把 Java 类翻成 Kotlin,输出质量比 DeepL 靠谱,因为它理解上下文。
但以上这些占我日常编码的多少?大概 30%。
剩下 70% 是什么?是需要在多个抽象层之间跳来跳去的业务逻辑,是「这个字段在 service 层改了之后 repository 的查询条件也要跟着动但 migration 脚本可能还有一处遗漏」,是你需要知道整个系统的因果链才能写对的一段代码。
在这方面,Copilot 能帮你做到的是让你更快地写出一个看起来对的版本——然后你花了两倍的时间去 review 它为什么在某些边界条件下是错的。
真正让我警惕的一件事
我发现自己开始跳过自己写代码时那种「慢下来想想」的过程。
以前写一个不熟悉的接口,我会先把文档打开,看一遍参数定义,理解调用方的意图,再开始写。现在 Copilot 在第二行就已经把一整段实现贴出来了。我看了几眼,觉得"差不多",就接受了大块输出。
结果是:我对业务的理解深度在下降。
这不是玄学——是有 concretely 可感知的后果:
- code review 时看不出别人的逻辑漏洞,因为自己的逻辑也从来没有亲手「抠」过。
- 遇到线上 bug 时第一反应是「丢给 AI 看看」而不是自己在脑内跑一遍执行路径。
- 六个月前自己写的代码,重新打开的时候有一半是"我当时到底在想什么"。
我现在的做法
不是什么 hard rule,就是几个 personal heuristics:
1. 业务逻辑自己写,AI 只当 pair programmer。
我给它描述需求,它给思路,但我亲手敲每一行关键代码。
2. 测试代码交给 AI。
单元测试、fixture、mock——这些有固定模式且重复性极高,AI 产出的质量可以接受。
3. 写完之后绝不直接提交。
AI 写的代码我已经建立了条件反射式的 review checklist:异常路径有没有处理?副作用在哪里?类型安全吗?有没有隐性耦合?
4. 定期「无 AI 日」。
每周选一天关掉 Copilot,纯手写。不是为了作秀,是为了保持手感。
写在最后
工具本身没有罪。但不用思考就能得到的答案,正在悄悄削弱你深度思考的能力——这个说法放在知识付费时代被说烂了,但用在 AI 编程上,它是一句实话。
Copilot 是自行车,不是自动驾驶。自行车能让你骑得更远,但轮子要你自己蹬。
— 如果这篇文章让你有共鸣,欢迎转发。不加Follow不取关,纯粹技术交流。
夜雨聆风