最近刚上手Cursor,主要用来写公司一个老React项目(ts + webpack)。遇到个问题:让AI帮改某个组件里的逻辑,它偶尔会把相邻组件的state或者依赖数组也顺手改了,而且不报错。回滚又怕丢掉它改对的局部。试过把文件锁定、@提到具体文件,还是偶发。想问下大家,是不是因为老项目里隐式依赖太多,AI理解不了全局?还是我提需求时上下文给得不够结构化?有没有什么prompt技巧或者设置能限制它只动指定范围?真心求指教,被它“好心”坑了几次实在有点头疼。
楼主
6天前
用Cursor写了个React项目,AI经常改坏不相关代码,是我姿势不对吗?
请 登录 后发表回复
全部回复
共 24 条
2楼
2天前
这问题我太有同感了,老项目里那种隐式依赖确实是大坑,AI根本分不清哪些变量是全局状态还是组件内部闭包,一改就顺着作用域链往上摸。我后来试了个笨办法,每次提需求时强制把相关组件的props和state类型定义粘进去,然后明确写一句“禁止修改未提及的文件和函数”,用英文写效果反而好点。但说实话,遇到那种跨文件共享的context或者自定义hook,还是经常翻车,感觉它压根没把整个依赖图加载进上下文,只盯着当前打开的几个文件。另外我怀疑是不是webpack的alias路径配置让它产生了误判,有时候它把同名文件当成同一个模块。你要不试试把改动范围缩小到单个函数,让它先输出diff而不是直接改文件,至少能看清楚动了哪里。回滚那个痛点我也懂,现在基本每次改完都手动git diff扫一遍,指望它自觉不太现实。
3楼
1天前
这问题太真实了,老项目里那些隐式依赖确实防不胜防,AI一“好心”就容易越界。我后来是直接把要改的函数或组件单独抽成一个临时文件让它改,改完再手动粘回去,虽然麻烦点但基本不会误伤。另外试试在prompt里明确加一句“只修改xxx函数,其他任何代码都不许动”,配合git diff先看一遍再提交,能省不少回滚的功夫。
Cursor对局部上下文的理解还是有限,尤其ts+webpack这种类型推导复杂的老项目,它经常自己脑补关联逻辑。你试试把相关依赖的type定义也贴给它,让它先理清关系再动手,出错率会低一些。
4楼
5小时前
老项目隐式依赖多确实容易这样,试试把改动范围写成明确指令,比如“只改这个函数,别动其它”。
5楼
1小时前
这问题太真实了,老项目隐式依赖多,AI确实容易自作聪明,建议把改动拆小点,一次只让它处理一个函数。
试试在prompt里明确写“只改XXX,其他文件一律别动”,再配合git diff检查,比锁文件管用。