本周工作思考
- Prompt技术在Cursor中的应用探索
- 最近在思考和探索Prompt相关技术在日常编程中的使用,因为最近的工作更多的是基于各种假设条件,验证,分析推导可能的bug原因,代码量不是很大,但是在排查问题时有时候会利用的Deepseek多一些,主要是利用它的推理过程找到一些启发,但是也有意识的利用Cursor提供的大模型解决编程问题,特别是用意识的使用不同的Prompt技术,体会它们在不同问题域上的不同效果。
- 最常用的是Zero-shot Prompting,在Cursor中,编写逻辑过程,利用好注释,利用好全局rules和项目rules,直接描述清楚问题,或者明确指示任务, 部分加个上下文或者@下相关文件或代码,或者cmd + K就能比较好的完成编程任务
- Few-shot Prompting,这种比较少用,但是在一些场景比较有效,比如在特别的参数检测时,组件使用是,可以Prompt中加入:和@文件中的xx方法的组件使用一致,或者使用更为常规的用法:@a文件弹窗关闭时的处理逻辑是xxx,@b文件的弹窗关闭时的逻辑是xxx,@c文件的弹窗在此基础上添加了xxx,请实现该功能。
- CoT,这种在排查问题或者寻求解决方案时比较有效,比如,这个文件是视频播放器的实现,主要功能是不同格式视频的播放,暂停及进度管理,现在在Sentry中收到了play方法的报错,请分析代码,一步一步思考这个报错的原因,并提供原因说明,允许使用浏览器查询github上信息。
- Meta Prompting,这种提示技术我现在用到不多,不过很适合在Cursor中使用,我一般使用多次Prompt,比如在实现一个页面功能时,需要拆分几个组件或者主要步骤,在Cursor使用论坛里,有人把这种技术的变形用法作为全局Rules使用,或者作为推理框架使用。大家在写页面组件或写一个模块时,可以考虑使用这个技术,类似这种:我要设计一个实现xxx功能的模块,功能是1xxx,2xxx,3xxx,请按照如下步骤设计模块和编写代码
1:请一步一步思考需要实现功能的概要设计
2:按照概要设计,一步一步思考编码方案,设计函数式组件和方法,使用自定义hook解耦逻辑和UI,逻辑细节不明确的地方用 // Todo 标识
3:确保所有的组件和方法按照编码方案完成,Review代码的逻辑和组件
4 对所有方法检测使用有参数检查,try-catch保护
这个提示作为全局性的提示,后面针对具体的细节在用zero-shot去完善 - Self-consistency,这种我一般用在法技术选型时,当然也可以用在其他地方,比如我要实现PDF文档在线编辑,需要兼容Safari,目前有哪些方案可以用,各自的优缺点有哪些,可以使用xxx(MCP的playwright或者其他的)查询最新的技术,请选择一个你认为最适合我的方案,并说出你的理由
- 还有一些用到比较少的Prompt技术,比如Prompt-chain,ToT等等,目前用到次数很少,还有没有特别的体会,后续会陆续分享在编码上分享体会
- 这些Prompt技术是可以组合使用的,在一些特别问题场景上,特定的Prompt技术会编写更符合需求的代码。目前被验证过的Prompt技术有很多种,需要编码实践中不断探索总结,才能更好的发挥Cursor的能力。