最近从Copilot切到Cursor,确实爽,但有个问题很头疼。我让它写个简单的列表页,它非得给你搞出自定义Hook + 泛型 + 备忘录优化,一个展示组件拆成四个文件。我寻思这项目就我一人维护,真没必要这么“优雅”。试过在rules里写“保持简单,不要过度抽象”,但感觉它还是按着GitHub上那些开源项目的风格来。想问下大家,有没有什么prompt技巧能让它“看人下菜碟”?比如根据我的代码库风格自动调整,或者有没有类似“代码复杂度上限”这种参数可以调的?另外它老爱自作主张给我加PropTypes,明明项目用的TS,怎么彻底禁用这个行为?
用Cursor写React组件老是被“过度设计”,怎么调教它别整花活?
全部回复
共 24 条试试在rules里加“禁止PropTypes,禁止新文件”,我这么干之后它老实多了,不过抽象那毛病还是得靠多敲几轮才改。
这个问题太真实了,我也是从Copilot切过来的,Cursor确实爱炫技。我的土办法是在rules开头直接加一句“所有代码按现有文件风格写,禁止引入新依赖或新文件”,然后每次让它改代码前把目标文件丢给它当参考,比写抽象规则管用多了。TypeScript项目里PropTypes禁用的话,你可以在settings里把检测关掉,或者干脆在rules里写“但凡出现PropTypes就视为错误”,它下次就不敢了。
这个“过度设计”的问题我也遇到过,感觉Cursor默认确实有一套自己的审美,像是从那些star过万的开源模板里学来的。我后来发现光在rules里写“保持简单”基本没用,它该拆还是拆,得配合项目根目录的.cursorrules文件,把具体反例写进去,比如“禁止创建单文件超过80行的组件”“禁止为一次性逻辑抽Hook”,越具体越管用。另外你可以在对话里直接引用现有代码,说“按这个文件的风格来”,它模仿能力其实挺强的,比抽象指令好使。PropTypes那个我也烦,明明tsconfig都开了strict,它还是给你加,后来我在rules里明确写了“项目使用TypeScript,禁止任何PropTypes和defaultProps”,目前没再犯过。还有个偏方是让它先别写代码,先口述方案,你确认了再动手,能挡掉一大半花活。复杂度上限这种参数确实没有,但你可以用“如果超过X行就停下来问我”这种话术来卡它。
这个问题我也踩过坑,Cursor确实有股“我要写出最优雅代码”的执念。我觉得根子在于它默认把每个任务都当成给开源项目贡献代码来对待,而不是给个人小项目写能跑的代码。后来我的做法是在rules里加一句“假设这个项目只有我一个开发者,三个月后我自己都懒得看复杂抽象”,效果比单纯说“保持简单”好不少,因为给了它一个具体的人设和场景。另外可以在项目根目录扔一个简短的style.md,把现有几个组件的代码贴进去当示例,让它模仿你已有的风格,这比抽象描述管用。PropTypes的问题我遇到过,你可以在rules里明确写“项目使用TypeScript,禁止生成PropTypes和defaultProps”,语气强硬一点它才听。不过它偶尔还是会在某些文件里犯病,我一般直接在chat里回一句“删掉PropTypes,用TS interface”,它下次在这个会话里就记住了。其实还有个歪招,在prompt里说“这段代码是给一个刚学React的实习生看的”,它立马就收敛了,你可以试试。