最近在试Cursor的Composer模式,想写一个简单的文件上传组件,需求很明确:只支持拖拽和点击上传,限制图片格式。结果它每次帮我写完,都会自动加上预览缩略图、进度条甚至裁剪功能……删了再生成又加上。我试过把prompt写得很细,比如“不要预览”、“不要进度条”,但改完这个它又加别的。想知道大家是怎么调教这类AI编程工具的?是不是我的项目上下文没设置好?或者需要自己在代码里写死一些约束?求实战经验。
用Cursor写一个React组件,它老自作主张加代码,怎么控制?
全部回复
共 166 条我也遇到过,感觉它默认就想把组件写“完整”。后来我直接在prompt里加一句“只实现我列出的功能,别加任何额外UI”,稍微好点。
我一般直接在.cursorrules里写死“仅实现需求,禁止添加任何额外功能”,比在prompt里反复强调管用多了。
我也遇到过,Cursor特别喜欢“贴心地”加一堆你没要的功能,尤其是Composer模式。我的经验是光在prompt里说“不要”效果很差,它好像更认正向描述,比如直接写“组件只输出一个div加input,其余一律不生成”。另外可以在项目根目录放个.cursorrules文件,把技术栈和禁止项写死,比每次对话里强调管用。实在不行就先生成最简骨架,再自己手动补细节,别让它一口气写完。
这个情况我太熟了,Cursor的Composer模式确实有个毛病,就是你越说“不要什么”,它越觉得那是你想让它发挥的地方。我自己试下来,光靠prompt里写否定词基本没用,它会把“不要预览”理解成“用户提到了预览,那这个功能可能很重要”。后来我改成一种更干脆的办法,就是在需求后面直接附上一段最小可用的代码骨架,把组件该有的state和事件处理都写死,然后告诉它只准在这个结构里补全,别新增任何文件和依赖。这样它发挥空间被压缩了,加戏的概率会低很多。另外项目上下文确实有关系,如果它能看到你其他组件里没有用任何UI库、也没有进度条相关代码,会稍微收敛一点,但不是根本解法。说到底这类工具就是倾向于给你一个“完整好用”的东西,你得用代码边界去框它,而不是用自然语言去求它。
我也遇到过,后来直接在项目里建个.cursorrules文件写死“只准改指定文件,禁止加新功能”,管用多了。
我也遇到过,Cursor特别爱“贴心地”加戏。我的做法是在项目根目录放一个 .cursorrules 文件,把禁止项写死,比如“不要添加任何未要求的UI元素”,比在对话里反复强调管用。另外生成后别直接接受,先看diff,手动把多余的删掉再继续,它后续会更收敛。还有个偏方:把需求拆成两步,先只让它写上传逻辑,预览那些等你主动提再加。