AI 写代码听起来很美,但真用起来却常常“翻车”。从语法错误到逻辑混乱,从工具误导到思维惯性,坑一个接一个。本文作者结合亲身经历,复盘了多个典型“翻车现场”,并总结出一套避坑思路,帮你在 AI 编程路上少走弯路、走得更稳。

在用 AI 辅助开发的这段时间里,我越来越觉得:AI 并不是你随便一说,它就能接得住。用不好,不是因为模型不够强,而是你自己没说清楚。下面是我在项目中踩过的一些坑,总结下来供参考。
1. 需求和目标,不能含糊
你可能会说:“我要一个列表页。”但你说的是表格、卡片视图,还是分页列表?有没有筛选?支持移动端吗?这些 AI 不知道,也不会替你猜。
真正有效的方式,是像写给同事那样说清楚:
“我需要一个移动端优先的商品列表页,要求分页加载,最多展示 10 条,点击后进入详情页,页面使用 React + Vite,状态管理用 Redux Toolkit。”
说得越清楚,AI 给的代码就越接近你想要的。否则它给你写完你还得大改,浪费时间不说,还容易出 bug。
2. 复杂度自己先有数,别一上来就全丢给 AI
比如有一次我在 cursor 里写 prompt,想让它帮我生成一个搜索接口的实现。我一句话说了大概 4 件事:模糊匹配、分页、前端防抖和后端限流。结果它给了我一个看起来完整,但问题很多的实现。
后来我改成分步骤让它写:
第一步:实现一个基本的关键词匹配接口,支持模糊搜索。
第二步:前端加上防抖输入框,避免频繁请求。
第三步:再让它加分页逻辑,并说明每页大小和返回结构。
第四步:最后告诉它,后端需要加限流策略,防止接口被刷爆。
这样每步确认一个点,AI 的反馈就靠谱得多。很多时候你觉得它“听不懂”,不是因为它能力不行,而是你一次性说了太多事,它只能抓住一部分。换成人也一样,信息太多反而会失焦。
3. 代码不能全信,学会自己检查
AI 生成的代码,经常看起来“能跑”,但很多关键细节是缺失的。
比如生成一个登录接口,逻辑写得挺完整,但却忘了处理接口失败时的 token 清理。结果用户登录失败后,前端还以为自己登录过,接口一路 401。又比如请求数据时确实写了 loading 状态,但没有在出错或取消时正确关闭,导致页面一直转圈卡住。
这类“功能有,但边界没管”的代码,在实际开发里最容易出问题。它们表面看起来没 bug,实际上体验一塌糊涂。
检查点包括:loading 有没有兜住所有异步路径、接口是否兜底失败状态、逻辑是否具备初始值、是否有 fallback。只要你自己不看,这些问题就不会自动被解决。
AI 可以帮你提速,但提效的前提,是你有能力去识别和修正它的疏漏。如果完全不查不看,最后埋雷的还是你自己。
4. 项目上下文一定要说清楚
这点特别重要。AI 不知道你项目的技术选型,不知道你是用函数式组件还是 class,也不知道你 prefer fetch 还是 axios。
比如如果我们想用 SWR 做数据请求,那每次都要提醒它:
“我们使用 swr 来做请求缓存,请用 useSWR 而不是 useEffect 去请求数据。”
如果你不说,它会给你生成一堆你可能根本不会用的写法,后面还得你自己去改。
5. 说不清楚问题,AI 也解决不了
有个开发者只跟 AI 说:“这个布局有点卡”,AI 直接把整个组件改成 virtual list,虽然逻辑没错,但实际瓶颈并不是列表渲染多,而是图片都同步加载,导致滚动时掉帧。
后来他把描述改为:
“当前列表滚动时掉帧严重,初步定位是每个 item 内图片同步加载。建议用loading=”lazy”+ IntersectionObserver 控制加载时机。”
这次 AI 给出的方案才靠谱:用原生loading=”lazy”属性或结合 IntersectionObserver 延迟加载图片,页面性能立刻提升。
所以,不要说模糊词,像“卡”、“慢”、“不好看”,你得具体说是哪块慢、什么条件下卡,AI 才能帮得上忙。
结尾:需求说不清,AI 自然帮不了你
用 AI 写代码,归根结底是个“表达-反馈-修正”的过程。你说得清楚,它才能给得准确。
别期待它替你拍板选技术、补边界逻辑,也别幻想它能看穿你的上下文和项目背景。你要做的,是逼自己把需求表达清楚,说出你真正想要的东西。
一旦你能把复杂的系统需求讲清楚、把问题拆得有逻辑、能指出 bug 出现的上下文,AI 才能真正成为你的帮手,而不是一个反复返工的负担。
后记:AI 编程没那么省事,但值得一练
说实话,刚开始我用 AI 写代码的时候,觉得比我自己写还累。
它像个“不会自动对齐语境”的智能搭子,常常给我一堆看似对的代码,实则不合用,问题根本不在 AI,而在于我没把话讲明白。
慢慢地我意识到,AI 编程根本不是“偷懒”利器,而是反向逼你去思考表达、思考结构、思考逻辑。你说得越明白,思路越清楚,它就越能节省你的精力。
所以,AI 编程没有变简单,只是把开发的难点,从动手转移到了动脑——从写代码,转向写清楚自己的想法。
本文由 @AI思·享@蓉77 原创发布于人人都是产品经理。未经作者许可,禁止转载。
题图来自 Unsplash,基于CC0协议。
该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务。