上周三晚上十点,我在赶一个上线前的bug。
Cursor给我生成了一段代码,看起来很完美。我直接复制粘贴,commit,部署。
二十分钟后,线上服务崩了。
不是bug没修好,是Cursor在代码里引入了一个我没注意到的逻辑错误——它把用户权限检查写在了一个永远不会被执行的分支里。
我不是唯一一个这样干的人。
我问了三十多个同行,发现大家踩过的坑惊人的一致。
今天我把这些坑扒出来,不是让你看完说「原来如此」就划走,而是真心想让你少踩几个。
坑一:盲目信任AI的代码
这是最大的坑。
你觉得AI怎么可能写错?真的会错。
GPT-4曾经把len()和count()搞混,Claude把map()和flatMap()混用,DeepSeek把if和while写反。这些都不是段子,都是真人踩过的坑。
不是AI笨,是它真的不会「思考」。它只会根据概率猜下一个token。
你觉得它是在理解你的需求?不,它是在做统计预测。
最可怕的是,它写得越像人,你越容易信。
你信到什么程度?我问过一个人,他说他连代码审查都省了——「AI写的,应该没问题吧」。
这句话让我后背发凉。
你发现了吗?我们开始把AI当成一个「不会犯错」的存在。但真相是:它错得比你想象的还要频繁。
而且它犯错的方式特别隐蔽——不是给你一段乱码,而是给你一段看起来完全正确的代码,里面藏着一个你根本不会注意到的小错误。
这种「看起来没问题」的信任陷阱,比直接出错更危险。因为你不会怀疑,不会检查,直到生产环境给你一记闷棍。
更深层的是,这种信任还是一种认知懒惰。你在用AI替代的不只是写代码这个动作,更是「验证代码」这个关键决策环节。而验证,恰恰是程序员最核心的价值。
坑二:用AI替代思考
这才是真正可怕的地方。
你以前写代码时,第一件事是什么?想清楚要做什么,想清楚数据结构,想清楚边界情况。
现在呢?打开对话框,敲几个字,AI直接给你一段代码。你看都没看就运行了。
问题不是AI写的代码有bug,是你自己越来越不会写代码了。
有个读者给我留言说,他以前写个简单的Python脚本要二十分钟。现在用Cursor,三秒就出结果。
但他已经半年没写过一个完整的程序了。
你在用AI编程,还是AI在替你想?
这其实是一个认知上的滑坡:当你习惯了「输入需求→得到结果」这个模式,你会慢慢失去定义问题的能力。而定义问题的能力,恰恰是程序员最核心的能力。
有一天AI能理解你的每一个需求,你突然发现——你已经不会自己想问题了。
这不是危言耸听。认知科学早就告诉我们:任何技能,一旦你不再主动练习,它就会退化。编程技能也不例外。AI帮你省下了时间,但时间省下来之后,你用来做什么?刷手机,还是继续学习?
如果答案是刷手机,那AI不是在帮你,是在掏空你。
坑三:Prompt写得太模糊
「帮我写一个登录页面」。
这是最烂的Prompt。没有需求说明、没有技术栈、没有安全要求。
AI会给你生成一堆东西——HTML表单、密码明文传输、没有CSRF保护。
然后你就直接用了。
好的Prompt应该长什么样?「用React写一个登录页面,用户名密码字段,提交后调用后端API /api/login,返回JWT token,密码用bcrypt哈希,错误消息用Toast显示,不要明文传输」。
差几个字,差的是安全漏洞。
这里其实藏着一个更深层的认知问题:你越懒于描述需求,AI越会按照自己的理解去填坑。而AI的「理解」和你期待的「理解」之间,永远存在一个偏差。
当你意识到这个偏差时,往往已经出了事。
而且这个偏差还不只存在于代码层面。你给AI的需求越模糊,AI生成的不只是代码偏差,而是整个解决方案的偏差。它可能给你选了一个你完全不适合的技术栈,或者做了一个你根本没想到的架构假设。
到那时候你才发现问题,已经晚了——你已经在用这个方案写了一个月了。
坑四:AI生成的注释不可信
这是最隐蔽的坑。
AI给你写了一段代码,还贴心地写了注释。你看注释觉得「哦原来这么写的」,于是你就信了。
但AI可能写了一段完全不像注释描述的行为。
我看过一个例子:AI写了一个函数,注释写着「返回两个数的最大公约数」。实际代码是返回两个数的和。
你信注释还是信代码?
答案是:只信代码,注释一律当它是胡说。
为什么?因为注释是AI生成的token,代码也是AI生成的token。但代码至少可以被执行、被测试、被验证。注释不行——它只是文字。
而AI的文字生成能力,恰恰是它最容易出幻觉的地方。
更可怕的是,当你的代码库里全是AI写的注释,而注释又不匹配代码时,三个月后的你会变成什么?一个读自己代码都像读外语的人。
代码可读性不只是风格问题,更是认知问题。你看不懂自己的代码,意味着你失去了对系统的整体认知——你不知道自己写过什么,也不知道为什么这么写。
这种「代码失忆」,比写bug更致命。因为bug至少会被发现,失忆不会。
坑五:AI解决不了复杂问题
不是所有问题都能靠prompt解决。
你让AI帮你设计一个分布式系统的架构?它会给出一堆漂亮的大词:微服务、Kubernetes、消息队列。
但它给不出这个架构在你们公司现有技术栈下的具体实施方案。
它不知道你们的DB是MySQL还是PostgreSQL,不知道你们团队的习惯是DDD还是简单三层架构,不知道你们的运维能力能扛多少复杂度。
AI擅长的是小问题、标准问题、模板问题。
架构设计、性能优化、复杂业务逻辑——这些还是需要你自己的脑子。
别指望AI能替代架构师。它能替代的是查文档、写样板代码的程序员。
但这恰恰是最危险的幻觉——你以为它替代了程序员,其实是程序员在用AI替代自己。
而且AI生成的架构方案,往往是一个「完美但不可执行」的方案。它没有考虑团队规模、没有考虑遗留系统、没有考虑技术债务。就像给你设计了一套米其林菜单,但你只有一个灶台。
真正好的架构,是在约束条件下做的最优选择。AI看不到约束条件,所以也看不到真正的最优解。
坑六:依赖AI调试
这是第二个大坑。
你代码报错了,复制错误信息给AI,让它帮你修。
它能找到错误吗?大概率能。
但它真的理解错误的原因吗?大概率不能。
它可能给你改了报错的那行代码,但整个问题的根源它根本看不见——因为它的上下文窗口是有限的,你贴的日志和代码只是冰山一角。
调试是一门手艺。读堆栈、看日志、断点调试、理解系统整体状态——这些AI暂时还替代不了。
更可怕的是,你越依赖AI调试,就越不会自己调试。等你遇到一个AI解决不了的问题时,你已经失去了自救的能力。
这就像学游泳时总扶着泳池边,有一天泳池边被收走了,你才意识到自己其实不会游。
而且AI调试还有一个隐蔽的问题:它修好了bug,但没告诉你为什么会有这个bug。你学会了「按AI说的改就能好」,但没学会「这个bug的根因是什么」。下次类似的bug出现,你还是会一头雾水。
真正的成长不是修了多少bug,而是你知道bug为什么会发生。
坑七:AI会发明不存在的API
这个坑被踩烂了。
AI给你写代码时,会调用一些根本不存在的库、函数、参数。
比如用Python的collections.OrderedDict当它是sorted,或者用React的useMemo但传的依赖数组格式完全不对。
最离谱的是,它还会给你编造一个库的名字,让你去安装。
你装了才发现——根本没有这个包。
解决方法很简单:任何AI引用的第三方库,安装前先搜索确认存在。
但更深层的问题是:你为什么会相信一个AI告诉你这个包存在?因为它说话的语气和Stack Overflow上的高赞回答一模一样。
这就是AI最狡猾的地方:它不仅给你编答案,还给你编出了可信的语气。
而且这种现象不只是发生在API上。AI还会「记住」一些过时的API、已经废弃的方法,甚至是你公司内部的私有接口(如果你把代码喂给它)。它不会区分什么是真、什么是它的训练数据里的「可能」。
你让它调用一个API,它可能调的是三年前的版本。你改了代码,发现不对劲,但AI已经给你用这个「错误记忆」生成了三十行代码。回头改的时候,你才能意识到——它从头到尾都在用错误的前提。
坑八:把所有鸡蛋放一个篮子里
你开始用Cursor,发现真香,于是所有代码都用Cursor写了。
然后Cursor出了新问题、改了新规则、升级了模型,你之前的代码全跑不通了。
或者更极端的情况——Cursor涨价了,从每月二十刀涨到一百刀。
我见过一个人,整个项目从前端到后端都是Copilot写的。然后某天他换了个编辑器,不会写代码了。
工具会迭代,模型会变化,API会过期。
但你的编程能力不应该依赖某一个工具。
如果你把所有代码能力都外包给AI,那AI停服的那一天,你就真的什么都不会了。
这不是危言耸听。十年前有人把所有东西都放在Twitter上,后来Twitter变成了X。十年后,谁会说某个AI工具永远不变?
而且还有一个更隐性的风险:你深度绑定一个工具,意味着你的工作流程、编码习惯、甚至思考方式,都围绕这个工具建立了。当它发生变化时,你不仅要适应工具的变化,还要重建你建立在工作流之上的认知框架。
这比单纯的「工具坏了」要严重得多。
坑九:不会验证AI的输出
这是所有坑的根源。
你拿到AI的代码,不看就直接用。没有测试、没有审查、没有手动验证。
然后bug上线了。
验证不是奢侈,是必须的。
任何AI生成的代码,必须经过人工审查。至少要看三遍:第一遍看逻辑对不对,第二遍看边界情况,第三遍看有没有安全隐患。
别问我怎么知道的。
我写过一段代码,AI帮我改了一个bug。我直接commit了。一周后这个bug又出现了——不是原来的bug,是新引入的另一个bug。
AI修好了这个,但没注意到修的过程中引入了那个。
如果当时我验证了代码,本可以省下三天的排查时间。
更关键的是,验证不只是检查「代码对不对」,更是确认「代码是不是我想让它做的」。AI可能完美地实现了你的prompt,但你的prompt和真实需求之间可能有一个你没意识到的差距。
这种「完美错解」,比「明显的错误」更可怕。因为你不会发现——它看起来完美。
坑十:用AI替代基本功
这是最深的坑。
你开始用AI,发现不用看源码也能写代码了,不用debug也能修bug了,不用理解底层原理也能跑通项目了。
于是你放弃了读源码、放弃了debug、放弃了理解原理。
三年后,AI出问题了,你连问题出在哪都不知道。
基本功永远是基本功。
AI是工具,不是老师。
你用它查资料、生成样板代码、加速开发,这些都是好的。
但你用不了一辈子——或者说,你用了,但总有一天它不再像现在这样好用。
到那时候,你会感谢今天还在坚持写代码、读源码、debug的那个自己。
而且这个坑的可怕之处在于它没有明显的临界点。你不会突然发现自己不会编程了——你是在不知不觉中,一点点把基本功丢掉的。每一个「用AI算了」的决定,都在削弱你的能力。一年下来,你可能不会意识到自己已经退化了;但当某天你需要从零开始写一个东西,没有任何AI帮助时,你才会发现:自己已经不会了。
到那时候,AI不会回来救你——因为它不会做你没做过的东西。
最后说句实在话
AI编程不是洪水猛兽,也不是救世主。
它就是一个工具——一个特别好用、特别让人上瘾的工具。
上瘾到让你忘记自己本来会编程这件事。
下一次你让AI写代码的时候,先问自己:
我是真的不会写,还是懒得写?
这个区别,会决定你三年后是在做架构,还是在学怎么用Cursor。
夜雨聆风