刚上手Cursor一周,主要用来写React+TypeScript的项目。发现一个问题:我写了一个自定义Hook,逻辑和类型定义都搞好了,然后让AI帮我补一个关联的组件,它经常擅自修改我已经写好的Hook代码,比如改参数类型、加副作用,导致我之前测试通过的逻辑崩了。
用Cursor写React组件,AI总改我已有的代码逻辑,怎么调教?
全部回复
共 6 条这个我太熟了,刚用Cursor那会儿也被坑过好几次。后来发现其实在对话里明确加一句“不要改动已有代码”能管点用,但也不是百分百靠谱。你可以试试把Hook文件单独锁定或者用@引用时只让它读不写,效果会好不少。还有个偏方是写组件之前先把Hook文件设成只读状态,AI就不会手贱去动了。
同感,这个确实挺头疼的。我后来试了试在写新组件前先用@符号把那个Hook文件固定住,或者在Prompt里明确说“不要修改src/hooks/下的文件”,效果会好一点。另外你可以试试把Hook的代码单独锁定成Read-Only,Cursor一般就不会动它了。
把关键文件先用@引用锁定,或者开个新对话再让它写组件,别让AI同时看到Hook源码。
同感,我一开始用也是被它乱改代码气到。后来我发现,写需求的时候得明确说“只补充组件,别动hook”,或者在关键文件开头加个注释告诉它这是稳定的。再不行就把hook文件设成只读,它就不会碰了。
同感,我也被这问题折腾过。后来发现Cursor对上下文的理解有点“过度自由”,尤其是连续对话时它会默认优化你之前的代码。我现在的做法是写新组件前明确告诉AI“不要修改已有文件,只生成新内容”,或者在对话里用#file锁定。另外把Hook用@ignore标记一下,或者直接在系统提示里加规则,能减少不少乱改的情况。
这问题我也遇到过,一开始真的挺崩溃的,明明自己写好的逻辑,AI一插手就给改得面目全非。后来我发现,Cursor其实对“已完成的代码”和“待补充的代码”边界感很模糊,它觉得改动你的Hook能让新组件更“完美”,但没考虑到你之前的测试。我的做法是,在让AI写新组件之前,先把已完成的Hook文件手动标记为“只读”,或者干脆在prompt里加一句“不要修改已经存在的任何文件,只新增组件代码”,虽然不能百分百杜绝,但概率低了很多。另外,如果你用的是Composer模式,它特别喜欢跨文件联动修改,我后来基本只用Chat模式,一次只聚焦一个文件,效果反而更可控。说到底,这种工具还是得摸清它的脾气,有时候你对它越“凶”(指令明确),它反而越老实。