最近在用Cursor+Claude写一个内部工具,项目到中期复杂度上来了。发现AI生成的代码经常是“看起来对”,但一跑就出边界问题,比如并发场景下的状态同步、异常处理路径缺失。我每次都要手动补很多测试用例,有时候改它的代码比我自己写还费时间。想问问各位,平时怎么平衡AI产出和人工review的?有没有什么prompt技巧能让它少犯低级错误?或者干脆哪些模块你们是坚决不交给AI的?
AI编程助手写的代码越来越不敢信了,大家怎么把控质量?
全部回复
共 47 条说实话这个阶段我太懂了,项目到中期那个复杂度一上来,AI写的代码就跟开盲盒似的,表面逻辑通顺,实际全是坑。我的做法是把它当高级补全工具而不是协作者,像并发、状态机、事务边界这种核心逻辑,我现在基本不让它碰,自己手写心里才踏实。
Prompt技巧的话,与其说让AI少犯错,不如逼它把假设写出来,我会在需求里明确要求它列出所有前置条件和潜在异常,而不是只给一段“正确”的代码。测试这块我倒是觉得你手动补测试是对的,但可以反过来用,先让它生成一套极端情况的测试,再用这些测试去反推它的实现,这比纯review高效不少。
另外我发现一个规律,AI在写独立的小函数或者纯计算逻辑时质量还行,一旦牵扯到全局状态或者跨模块调用,出错率就飙升。所以我现在把项目拆得特别碎,每个模块边界定义清楚,只让它干那种输入输出明确的活儿。
还有个土办法,每次生成完代码我故意不告诉它上下文,隔一天再让它自己review这段代码找bug,效果好得出奇,相当于让它自己打自己脸。总的来讲,别把它当人,就当个手速极快的实习生,你盯得越紧它越靠谱。
我也有同感,中期以后AI生成的代码就跟开盲盒似的,尤其并发和异常处理那块儿,它特别喜欢假设理想情况。我的做法是让它先写骨架和主流程,涉及状态机和资源释放的代码直接自己上手,review的时候重点盯边界条件而不是语法。Prompt里我一般会加一句“考虑所有可能的失败路径”,能稍微减少一点低级错误,但别指望它彻底改掉这个毛病。
我也有同感,尤其是并发和异常处理这块,AI写出来的代码表面光鲜,但边界条件全靠猜。我的做法是把它当高级自动补全用,核心逻辑和状态流转自己先画好草图,AI只负责填实现细节。然后强制自己过一遍diff,重点盯错误路径和资源释放,比从零写省力但别指望能甩手。至于prompt,让它先列出可能出错的场景再写代码,比直接让它写要好不少。目前涉及钱、用户数据、或者难回滚的操作我都是手写,不敢让AI碰。
我现在是让AI写单测和胶水代码,核心逻辑全手写,省心多了。
我一般是让它先写单测再写实现,边界条件直接写进prompt里,比事后补省心多了。
并发和异常处理我压根不让AI碰,它写的“对”只是看着像,核心状态机还是得自己来。
深有同感,我现在基本把AI当高级自动补全用,核心链路的代码还是自己写。它最大的坑是异常分支和并发边界,这些地方prompt也很难兜住,只能靠review时重点盯。我的做法是让它先写单测再写实现,测试能帮我快速看出它逻辑漏在哪。像状态机、锁、重试这类模块我是绝对不交给它的,省下的时间还不够填坑。