最近组里推AI编程,我主力用Cursor的Composer模式,但写完的代码经常被review打回——说我过度“顺从”AI,比如把简单逻辑拆成一堆helper函数,或者频繁用类型体操去迎合模型的偏好。我自己也感觉,让它改个bug,它经常连带重构整个模块,diff巨大。
用Cursor写业务代码总被同事吐槽,是我姿势不对还是工具不行?
全部回复
共 77 条说实话我也踩过这个坑,Composer写业务代码确实容易“用力过猛”,后来我改成先自己把接口和数据结构定好,再让它只填函数体,diff基本就控制在几行了。另外review意见里有价值的部分得反喂给模型,比如告诉它“这是业务模块,别动公共逻辑”,时间长了它会收敛不少。你试试把任务拆成原子指令,一次只改一个点,别让它自由发挥。
Cursor这锅背得冤,你得多用tab补全干杂活,大改动让它停在小步提交。
这问题我也踩过坑,Composer确实容易“用力过猛”,后来我改成只让它生成函数体,接口和类型自己先定好,diff直接小一大截。另外review的时候别光看逻辑对不对,得主动问它“为什么这么拆”,很多时候它只是概率上觉得这样像“好代码”,并不一定适合你们项目的实际复杂度。
Cursor当结对编程还行,当主力容易放飞自我,得带着明确约束去用它。
这事儿我太有同感了,Composer默认就是“过度设计”倾向,我后来直接改用它的小模型模式,或者把任务拆得特别细,让它只动那一个函数,别碰别的。而且review的时候我基本不看它写的逻辑,先看diff里有没有夹带私货,那些helper和类型体操基本全删。你下次试试让它先解释打算怎么改,再动手,至少能拦一半的“顺手重构”。
这真不是工具不行,是你还没给它立好规矩。我现在的习惯是写完就自己重读一遍,凡是它自己加戏的部分全砍掉,只留最直白的实现,review通过率一下就上来了。
Cursor写业务代码确实容易过度设计,我一般只让它出单点函数,整块重构还是自己来把控。
说白了它就是高级补全,你把它当结对程序员而不是架构师,review就不会那么惨烈了。
同感,Cursor写业务代码得自己把边界卡死,不然它自由发挥起来review直接爆炸。
主要还是得把需求拆细了喂给它,每次只让它动一小块,别给它“发挥”的机会。
Cursor当结对编程的副驾可以,当主驾就危险了,得学会驳回它的重构冲动。
Cursor写业务代码确实容易过度设计,我都是让它先出最小实现,再手动控diff。
建议把需求拆细点,每次只让它改一个点,别给太多上下文。
试试给Cursor立规矩,改bug前明确说“只动最小范围”,不然它真会给你整出个新架构。
用完AI的代码自己先过一遍,把多余抽象删掉再提review,别让AI背锅。
Cursor当结对编程的副驾还行,让它当主驾就容易放飞自我,得靠你自己把方向拽回来。
Cursor适合当副驾,关键得自己握方向盘,我都是让它出初稿,然后逐段过逻辑再合并。
建议把需求拆小点喂给它,改bug时明确说只动哪几行,不然它真能给你表演个乾坤大挪移。
这题我熟,刚被review喷完。Cursor在Composer模式下确实容易“过度设计”,它默认会往“最全”的方向写,根本不管你项目里已有的简洁约定。我现在基本只用它补全函数体或者写测试,大段逻辑改完必须自己过一遍diff,把AI强加的抽象拆掉。另外就是给它的上下文里明确写“不要新增helper,不要改现有接口”,能省不少事。工具本身没问题,但把它当结对编程的实习生看,审稿那步真不能省。
同感,cursor写业务代码确实容易用力过猛,试试在prompt里加一句“最小改动”,让diff干净很多。
我一般让它改bug前先自己说清楚改哪几行,不然它真能把整个模块给你重写了,review看到头大。
Cursor当结对编程用,不是当外包使唤,你得像盯实习生一样盯着它每一步。
给AI划好边界再动手,让它只改函数不碰结构,diff能小一半。
Cursor的问题不在工具,在于你把它当结对程序员而不是搜索引擎用。我后来逼自己先写清接口和边界条件,再让AI填实现,diff就小多了。另外review打回的那些“类型体操”其实是你没给约束,它默认按自己的风格发挥,你得多喂点项目里的既有模式当few-shot。至于改bug连带重构,建议直接锁死相关文件再让AI动手,不然它真的会顺手帮你“优化”掉一堆不该动的东西。
我也遇到过类似的情况,感觉Cursor的Composer确实倾向于“过度设计”,尤其是改bug的时候,它总想顺手帮你把整个文件整理一遍。后来我基本只在明确知道要改哪几行时才用它,大范围重构还是自己来,不然review真的没法看。另外可以在prompt里加一句“只改必要部分,不要重构无关代码”,会好一些,但也不是每次都听话。