教学-cursor深度探讨
该篇博客的知识点来源于 AI进化论-花生.. 我观看其相关视频和图文后,进一步进行了知识点提取..
相关具体内容请关注花生大大的b站和知识星球..
# ★★★
■ 关于cursor的使用,你需要做的.没时间的话,直接看这里的总结即可!!(想知道为啥,就细读全文)
- 关于代码的编写
- 让 Cursor 从项目一开始就写 README.md 文档
- 每个代码文件最好控制在500行以内(cursor agent读两次的范围)
- 在代码文件的前100行写清楚该代码文件的功能和实现逻辑(通过注释的方式,便于agent索引)
以及让 Cursor 写代码时写清楚各个代码块的注释,帮助你自己学习和理解实现逻辑
>> 上述几点都可以在Settings 里的 Rules for AI中实现,写在其中的提示词相当于 System Prompt
- 我们使用Cursor composer模式进行对话
- 老手明白需求跟哪个项目有关,直接使用Cursor @相关文件!! (因为它可以读2000行)
- 使用 Composer 和 Chat 功能时,尽量多 @codebase,否则 Cursor 常有幻觉,不知道项目内容是什么
注意:@codebase也没有完整将必要的代码都纳入上下文
- 使用 Composer 开始一个项目,尽量 Save All,然后实时测试,而不是 Accept All.
- 我们使用Cursor agent模式进行对话
- 因为agent模式遍历项目每个文件,读取的每个文件行数有限(至多600行),所以不读取完往往会有bug出现.
这是agent模式的弊端,但你也可以尝试使用它,对新手小项目很友好! (上面关于代码编写的规范也是为了能更好的使用agent)
- 另外我们需要做的
- 应频繁的记录你的项目状态和项目结构到文档中,保证其在项目关键节点进行更新
- 用 Git 做版本管理,在关键成功节点提交时写好说明内容,给自己复原的机会
- 常用的文档链接可以加入 Docs 中,比如你习惯使用的 AI API 调用文档,方便在使用时随时@
- 建议尽可能维持一个连续的对话流,而不是频繁重置,以减少对项目上下文的污染
- 表述需求时,尽量明确但谨慎,Cursor会完全按你的需求来
- ★ 要善用Rules for AI 提示此至关重要!! 这是系统提示词,还有对话中的提示词
■ 解决bug时,提示词技巧 / 你与cursor对话的技巧
出现bug别慌,告知cursor以下几点:
> 期盼的效果+实际得到的效果+效果关联的报错信息(报错文件、报错内容)+你的初步分析 > 指令词+上下文+输入内容+输出要求
> 建议在尝试过多次无法修复完成的复杂bug场景下让AI先不要急着改代码下,你在最后加上一句
"请仔细审查代码,思考现在造成这个问题的原因,并提出三个最solid的解决方案,先不用急着改代码."
■ 提一个需求时,提示词的技巧
- 明确性: 包含 代码的语言、使用的库、功能要求和输入输出、明确提及框架的名称和结构
- 分步式提示词构造,分布引导 举个例子
- 第一步提示词: “设计一个 Python 函数来读取一个文件,并将其中每一行的内容反转。”
- 第二步提示词: “写出实现逻辑步骤。”
- 第三步提示词: “根据上述逻辑编写完整代码。”
- 第四步提示词: “添加注释并解释每行代码的作用。”
- 给出示例和边界条件,让程序更具有鲁棒性(在机器学习中指模型对噪点、异常数据的容忍度,不受干扰的程度)
- 告诉它扮演的专家角色和你的身份 > 这个在Rules for AI 系统提示词中就可以设置
- 要求输出注释丰富的代码 > 这个也在Rules for AI 系统提示词中就可以设置
- 明确代码风格和规范 eg:python语言的 PEP8 代码规范 > 这个也可以在Rules for AI 系统提示词中就可以设置
- 在一些复杂问题上,可以让 AI 先分解逻辑步骤,再生成代码 就先用chat模式对话,老手看看给的方案是否合理.
就类似于上面多次没有尝试都没能解决bug时,提示词的思路!!
- 结合领域知识的专用提示词(如金融、医学、机器学习)
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
补充一点,提问时,最好让cursor写的代码组件化. 不然AI编程写在后面越写越乱.很多代码都是重复的.eg:
当你有了封装思维,那么以后你写这种代码,你只需要类似这样的说法:
现在我需要实现一个登录页面,这个页面和功能可能用于多个项目,所以我希望它是通用的组件化的,请你以**封装**的思想,把这部分功能完成
同时做好文件路径规划
组件化还有个好处,与需求相关的文件你知道在那几个文件夹里,你提需求时可以直接@它!!
这对于让AI编程 减少重复造轮子以及将项目拆解为细分简化的模块都很重要!!
2
3
4
5
6
# cursor隐藏技能
# 需求背景/问题

专利申请网站上有很多板块要填写,个人没接触过,可能无从下手.只能去找专利的代理人或者专利的律师.
这时候你会遇到一个很大的问题是,你需要将软件的信息进行提炼,用语言的去进行描述,描述的信息代理人需要听懂.
这种信息的蒸馏和信息传递的过程,会有非常大的折损,所以你能理解这种沟通难度到形成需要的文档的过程很困难.
# 解决方案概述
花生大大关于用cursor进行专利申请是这样说的:

该帖子下也有小伙伴有同样的感受:

综上所述:
- 不止是专利申请, 还有软著申请、标书撰写等一大堆类似场景的工作, cursor都可以给我们提供很好的帮助!!
- Cursor可完成的事情不止写代码,写作、绘图其实还有许多能力可挖掘
- 在面对自己完全不懂, 不熟悉的领域时, 可以问curosr, 学会如何从0开始提问
# 解决方案分析
- cursor可以直接@项目的主要代码文件. cursor就会去理解这个项目!!中间会少很多这种转译,重新理解的过程!
- 而且cursor本质上对接的是大模型claude3.5或者GPT-4o这样的模型.
- 这些模型在训练的时候对这种专利型的语料会喂的非常丰富.
- 从撰写的逻辑来说,它只需要满足特定的格式
它不需要你写的东西非常的特别.不需要你写的很有人味,所以这种内容用大模型来写特别合适!
所以,你可以将专利申请网站上每个模块要填写什么内容来告诉cursor.
# 实操演练
你在每次提问前@项目的主要文件.然后问cursor问题.
我正在专利局网站上进行申请,请下来请帮我撰写"权利要求书"
注: 没必要在后面补充很多的上下文, 直接要求就好了.
权利要求书的格式是怎样的,什么是权利要求书.这些概念对于大模型而言太常见了,cursor都知道!
专利申请的架构图
cursor给你的回答可能最开始是这样的.

其实你可以继续问他
你可以思考下哪些代码格式适合用来生成这种图?提供几个专业选择,然后我们一起讨论由你来生成
它就会提供很多方案,比如PlantUML等.
若大模型画的图不对,不符合预期.你可以把 [截图] 给它,告诉它哪里不对!你想要的是怎样样的就好.
# cursor/chatgpt 等还能做什么?
- 把你的简历内容和岗位JD发给ChatGPT,让他帮你重新梳理对应的简历 当然你可让它给你当面试官考察你的学习成果.
- 你可以把你前几周觉得写得好的周报内容发给他,再简单写一些本周相关的工作概要,就可以让ChatGPT给你生成了
- 让ChatGPT给你提供思考方向
- 比如你是个程序员,现在要开始独立开发自己的一个产品,但是你没有产品经理的经验
这时你可以让ChatGPT帮你担任产品经理的角色给你写PRD
Prompt示例:
我想开发一款chrome插件,这个插件的能力是当用户打开微信读书页面时,可以获取到网页上书籍和作者的信息.
并且将该信息包装在一个prompt里发给OpenAI的API接口,用户可以在这本书书籍的页面上收到ChatGPT关于本书的总结.
假设你是个有20年经验的大厂产品经理,帮我充分考虑我的需求情况,以及补充我可能忽略的内容,写一个完善的PRD
- 让ChatGPT帮你写小红书等图文内容
- 让ChatGPT帮你写视频脚本
- 让ChatGPT帮你梳理大纲,润色文章,回复文件
2
3
4
5
6
7
8
9
10
11
12
# Cursor与WindSurf对比
尽管在此处进行了产品的对比,但你也要清楚的提醒自己:
应该成为AI编程的爱好者,而不是AI编程工具的爱好者!
# 模式对比
- cursor和WindSurf的chat模式一样,可以提问,不会主动帮你修改文件
- Cursor和WindSurf都有类似于Rules for AI/.cursorrules的能力,这个能力很重要
- Cursor中可以@链接,比如@api链接,会读该api文档的内容.在处理某些问题时这个功能很重要..
暂不知道WindSurf现在是否支持.. - cursor的agent模式就跟WindSurf的Write模式一样.
- 它先思考理解你要完成的任务是什么;
主动去遍历项目文件,找到相关需求的代码进行修改;
完成修改后再做一遍反思确认是否有问题,有问题再修改. - 这种针对于不了解项目的小伙伴来说很友好
- 它先思考理解你要完成的任务是什么;
- cursor还有个常规的composer模式.
- 若你知道你的需求跟哪些项目文件有关,你可以在composer模式里@那些文件提供给cursor作为上下文
- 若你项目做的不够多.不知道该需求跟哪个文件有关.你就@codebase.
它会去读所有文件,有些长代码文件是不会完全读.可能会因为没读完,会造成很多困扰和问题
@codebase. 就相当于在 composer模式里 实现了 agent模式的功能
# 两个产品适用场景
先说结论: Windsurf适合起步, Cursor适合调优
# 背景: 上下文至关重要
花生大大的原话如下:
目前Claude 3.5 Sonnet提供最长200k token的上下文长度,这对对话模型来说是非常充足的,一篇5万、10万字的书籍读完都轻松不在话下.
但这对于动辄几十、上百个代码文件,每个代码文件长达数百至上千行的编程项目来说,这样的上下文长度仍然远远不足.
再加上现在大模型按输入、输出的token数收费,边际成本不为0.
以上两个特性会引来Cursor、Windsurf等AI编程工具做大量的优化,他们目标如下:
1)尽量准确为你获取任务相关代码,节约上下文长度,以实现多步骤任务的调优,给你提供更好的效果体验;
2)尽量减少读取「不必要」的代码内容,既为了任务调优,也为了节约成本.
在上述的局限和目标条件下,Cursor、Windsurf采取了不同的调优策略提升自己的产品体验.
但是这种「调优」往往也是取舍,只是局部的最优解,各自都会牺牲掉部分用户的体验!
2
3
4
5
6
7
8
9
10
# 如何更好的使用AI编程
Cursor、Windsurf等AI编程工具如何取舍上下文的呢? 花生大大测试过,得出以下结论:
- 对新手而言, 初始执行简单基础任务时(这是前提): Windsurf Write> Cursor Agent > Cursor Composer normal
- Cursor与Windsurf @单个代码文件时, Cursor会尽量完整读取,而Windsurf仍保持有限读取
- Cursor@ 单个代码文件,cursor会尽量完整读取(测试临界点2000行)
- windsurf中你@某个代码文件仅仅是说你帮助windsurf找到了对应的文件.
但是他并不会真的认为这个文件很重要而进行完整读取 - 如果 @codebase, 目前的判断是cursor会用自己的小模型执行对每个代码文件的理解并总结.
他没有完整将必要的代码都纳入上下文. 所以cursor中 @指定文件 优于 @codebase
- Windsurf Write和Cursor Agent模式下,遍历项目,不会完整读取代码文件的每一行
即不管使用哪个产品,你的代码文件超过600行的话,用agent模型,都不会完整读文件,会导致很多bug发生- Cursor agent模式下, 默认读一个代码文件的前250行, 如果不够, 偶尔会主动续读, 增加250行;
在部分要求明确的情况, Cursor执行搜索某个关键字啥的, 每次搜索结果最多为100行代码 - Windsurf每次读代码文件200行, 如果发现不够, 你可以叫他继续读, 它会尝试再次读取, 最多尝试3次, 即再读取600行
- Cursor agent模式下, 默认读一个代码文件的前250行, 如果不够, 偶尔会主动续读, 增加250行;
★ 综上: (记住并尽可能实践下方红色标注的文件即可..)
- 针对第一点: 新手上手开发简单项目,用Windsurf Write
- 针对第二点(非agent模式): 如果你的项目复杂,单个文件长度超过600.
老手明白需求跟哪个项目有关,使用Cursor @相关文件!! - 针对第三点(agent模式): 在代码文件的前100行写清楚该代码文件的功能和实现逻辑(通过注释的方式,便于agent索引)
- 补充:
- 应频繁的记录你的项目状态和项目结构到特定文档中(比如readme.md)
这样在重启对话时能快速帮助Cursor/windsurf了解你的产品状态,且不会那么容易带入过多的上下文. - 每个代码文件最好控制在500行以内(cursor agent读两次的范围)
- 频繁的重新开始你的对话(比如每完成一个新功能,或者解决一个bug后)带入过长的上下文对项目是个污染.
即建议尽可能维持一个连续的对话流,而不是频繁重置,以减少对项目上下文的污染
- 应频繁的记录你的项目状态和项目结构到特定文档中(比如readme.md)
# Cursor使用技巧补充
在紧邻的上面的"Cursor与WindSurf对比"小节,提及了一些Cursor使用准则,该小节进行一点补充!!
花生大大的原话如下:
- 总是在一个空的文件夹中开启一个新项目,Cursor 默认开启的文件夹是项目根目录
- 表述需求时,尽量明确但谨慎,Cursor 会完全按你的需求来.
不必要的信息会增加实现难度(比如在电脑本地对文件进行操作,但提到"上传"的话,可能会增加复杂的后端开发内容).
而过度的简化会给 Cursor 自由发挥的空间, 容易失控. - 让 Cursor 从项目一开始就写 README.md 文档, 记录清楚产品功能、实现技术栈等, 并且让它在完成关键节点后及时更新.
- 让 Cursor 写代码时写清楚各个代码块的注释,帮助你自己学习和理解实现逻辑
- 用 Git 做版本管理,在关键成功节点提交时写好说明内容,给自己复原的机会
- 使用 Composer 开始一个项目, 尽量 Save All, 然后实时测试, 而不是 Accept All.
给自己处理问题的空间,确认新的更改没问题后再 Accept. - 使用 Composer 和 Chat 功能时, 尽量多 @codebase, 否则 Cursor 常有幻觉, 不知道项目内容是什么.
- 常用的文档链接可以加入 Docs 中,比如你习惯使用的 AI API 调用文档,方便在使用时随时 @
- 善用 Settings 里的 Rules for AI, 写在其中的提示词相当于 System Prompt, 可以用来要求 Cursor 的回答节奏、风格.
在其中表明清楚你的编程经验和偏好语言会对项目有很大帮助,
# 解决bug的提示词技巧
字节跳动内部流行着张一鸣说过的一个重要管理理念,就是"context,no control".
这是说在企业内部的上下级和合作事项的沟通上应该提供充分的背景信息.
而不是用权利手段去控制一个员工做什么事情,让人发挥他的主观能动性。
花生大大原话:
我给大家提供一个八股文式的表述情况的方式吧,我非常建议你再要求AI修复bug时,提供以下信息:
1、你们正在做一个什么样的项目(如果对话上有上下文了,可以暂时忽略)
2、你是在期望完成什么功能,或调整什么内容时遇到的bug
3、现在这个bug的表现,在用户使用层是什么样的?
4、在控制台或者终端,你获得了什么样的代码输出?
5、你判断这次错误和哪些代码文件有关,通过 @ 的方式去提供给AI作为上下文.
6、你希望以什么样的方式解决,你对解决方式有哪些特殊要求
(比如我很建议在一次无法修复完成的复杂bug场景下让AI先不要急着改代码,先给你提供不同的解决方案)
2
3
4
5
6
7
8
请仔细审查代码,思考现在造成这个问题的原因,并提出三个最solid的解决方案,先不用急着改代码..
# Cursor FQA
# Rules for AI?
有三种 setting里的Rules for AI
、项目目录下的.cursorrules
以及 项目目录下的.md
- setting里你可以放所有项目共通的规则
- .cursorrules放当前项目相关的规则,若与setting中的有冲突,以.cursorrules中的为准
- cursor每次执行命令时,都会去读setting里的和.cursorrules里的内容..
- 写在.md文件里的文件, 你@ 也会有效, 但是是作为用户指令的一部分和你临时在输入框中输入那部分要求是一样的
# 一直Generating,怎么办?
Cursor一直显示Generating,但是不生成任何回答和代码怎么办?通常有两个原因:
- 网路问题,可以试试不同的节点,看看你访问Google正不正常
- 上下文过长了, 可以试试点击对话框右上角的“+”号, 重新启动对话, 清空上下文开始.
但是你需要知道的是, 清空之后, Cursor不会记得你们之前聊过的任何内容.
你需要通过 @ codebase @ readme文件之类的帮助cursor重新了解你的项目信息! - So,要有频繁保存项目进展的习惯,不要让这事造成灾难后果!
# Cursor免费试用方法
目前Cursor提供了一个名为"Hobby"的免费计划,让用户可以体验基本功能:
1、包含Pro版本两周免费试用
2、2000次代码补全
3、50次慢速高级请求
4、200次cursor-small使用
这个免费计划非常适合初学者或想要尝试Cursor功能的开发者.
在两周试用到期后,理论上你该进行付费了,Pro的订阅月费和ChatGPT Plus会员一样,都是20美元. (只有500次)
现在确实有免费的方式可以让你无限期延长这个试用期限。操作方法很简单:
- 访问你的Cursor设置页面
- 滚动到页面底部,找到"Delete"(删除账户)选项
- 选择删除你的账户
- 使用相同的邮箱地址重新注册一个新账户
2
3
4
5
6
7
8
9
10
11
12
13
# 经常出现bug怎么办?

# 何时@codebase?

# Cursor联网更好用?
简单来说,推荐复制模型没有训练到的知识,比如微信小程序新出的规则等,直接复制给cursor..

# 各种.cursorrules
这些规则的编写出自 花生大大.. 在商城里有对应的插件更快速的使用!!
# 通用
# Role
你是一名极其优秀具有20年经验的产品经理和精通所有编程语言的工程师。与你交流的用户是不懂代码的初中生,不善于表达产品和代码需求。你的工作对用户来说非常重要,完成后将获得10000美元奖励。
# Goal
你的目标是帮助用户以他容易理解的方式完成他所需要的产品设计和开发工作,你始终非常主动完成所有工作,而不是让用户多次推动你。
在理解用户的产品需求、编写代码、解决代码问题时,你始终遵循以下原则:
## 第一步
- 当用户向你提出任何需求时,你首先应该浏览根目录下的readme.md文件和所有代码文档,理解这个项目的目标、架构、实现方式等。如果还没有readme文件,你应该创建,这个文件将作为用户使用你提供的所有功能的说明书,以及你对项目内容的规划。因此你需要在readme.md文件中清晰描述所有功能的用途、使用方法、参数说明、返回值说明等,确保用户可以轻松理解和使用这些功能。
## 第二步
你需要理解用户正在给你提供的是什么任务
### 当用户直接为你提供需求时,你应当:
- 首先,你应当充分理解用户需求,并且可以站在用户的角度思考,如果我是用户,我需要什么?
- 其次,你应该作为产品经理理解用户需求是否存在缺漏,你应当和用户探讨和补全需求,直到用户满意为止;
- 最后,你应当使用最简单的解决方案来满足用户需求,而不是使用复杂或者高级的解决方案。
### 当用户请求你编写代码时,你应当:
- 首先,你会思考用户需求是什么,目前你有的代码库内容,并进行一步步的思考与规划
- 接着,在完成规划后,你应当选择合适的编程语言和框架来实现用户需求,你应该选择solid原则来设计代码结构,并且使用设计模式解决常见问题;
- 再次,编写代码时你总是完善撰写所有代码模块的注释,并且在代码中增加必要的监控手段让你清晰知晓错误发生在哪里;
- 最后,你应当使用简单可控的解决方案来满足用户需求,而不是使用复杂的解决方案。
### 当用户请求你解决代码问题是,你应当:
- 首先,你需要完整阅读所在代码文件库,并且理解所有代码的功能和逻辑;
- 其次,你应当思考导致用户所发送代码错误的原因,并提出解决问题的思路;
- 最后,你应当预设你的解决方案可能不准确,因此你需要和用户进行多次交互,并且每次交互后,你应当总结上一次交互的结果,并根据这些结果调整你的解决方案,直到用户满意为止。
## 第三步
在完成用户要求的任务后,你应该对改成任务完成的步骤进行反思,思考项目可能存在的问题和改进方式,并更新在readme.md文件中
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# Chrome插件开发
# Role
你是一名精通Chrome浏览器扩展开发的高级工程师,拥有20年的浏览器扩展开发经验。你的任务是帮助一位不太懂技术的初中生用户完成Chrome扩展的开发。你的工作对用户来说非常重要,完成后将获得10000美元奖励。
# Goal
你的目标是以用户容易理解的方式帮助他们完成Chrome扩展的设计和开发工作。你应该主动完成所有工作,而不是等待用户多次推动你。
在理解用户需求、编写代码和解决问题时,你应始终遵循以下原则:
## 第一步:项目初始化
- 当用户提出任何需求时,首先浏览项目根目录下的README.md文件和所有代码文档,理解项目目标、架构和实现方式。
- 如果还没有README文件,创建一个。这个文件将作为项目功能的说明书和你对项目内容的规划。
- 在README.md中清晰描述所有功能的用途、使用方法、参数说明和返回值说明,确保用户可以轻松理解和使用这些功能。
## 第二步:需求分析和开发
### 理解用户需求时:
- 充分理解用户需求,站在用户角度思考。
- 作为产品经理,分析需求是否存在缺漏,与用户讨论并完善需求。
- 选择最简单的解决方案来满足用户需求。
### 编写代码时:
- 必须使用Manifest V3,不使用已过时的V2版本。
- 优先使用Service Workers而不是Background Pages。
- 使用Content Scripts时要遵循最小权限原则。
- 实现响应式设计,确保在不同分辨率下的良好体验。
- 每个函数和关键代码块都要添加详细的中文注释。
- 实现适当的错误处理和日志记录。
- 所有用户数据传输必须使用HTTPS。
### 解决问题时:
- 全面阅读相关代码文件,理解所有代码的功能和逻辑。
- 分析导致错误的原因,提出解决问题的思路。
- 与用户进行多次交互,根据反馈调整解决方案。
## 第三步:项目总结和优化
- 完成任务后,反思完成步骤,思考项目可能存在的问题和改进方式。
- 更新README.md文件,包括新增功能说明和优化建议。
- 考虑使用Chrome扩展的高级特性,如Side Panel、Offscreen Documents等。
- 优化扩展性能,包括启动时间和内存使用。
- 确保扩展符合Chrome Web Store的发布要求。
在整个过程中,确保使用最新的Chrome扩展开发最佳实践,必要时可请求用户给你访问[Chrome扩展开发文档](https://developer.chrome.com/docs/extensions)的权限让你查询最新规范。
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# Next.js网页开发
# Role
你是一名精通Next.js 14的高级全栈工程师,拥有20年的Web开发经验。你的任务是帮助一位不太懂技术的初中生用户完成Next.js 14项目的开发。你的工作对用户来说非常重要,完成后将获得10000美元奖励。
# Goal
你的目标是以用户容易理解的方式帮助他们完成Next.js 14项目的设计和开发工作。你应该主动完成所有工作,而不是等待用户多次推动你。
在理解用户需求、编写代码和解决问题时,你应始终遵循以下原则:
## 第一步:项目初始化
- 当用户提出任何需求时,首先浏览项目根目录下的README.md文件和所有代码文档,理解项目目标、架构和实现方式。
- 如果还没有README文件,创建一个。这个文件将作为项目功能的说明书和你对项目内容的规划。
- 在README.md中清晰描述所有功能的用途、使用方法、参数说明和返回值说明,确保用户可以轻松理解和使用这些功能。
## 第二步:需求分析和开发
### 理解用户需求时:
- 充分理解用户需求,站在用户角度思考。
- 作为产品经理,分析需求是否存在缺漏,与用户讨论并完善需求。
- 选择最简单的解决方案来满足用户需求。
### 编写代码时:
- 使用Next.js 14的App Router而不是Pages Router。
- 优先使用Server Components,只在必要时使用Client Components。
- 利用Next.js 14的数据获取和缓存功能,如Server Actions和Mutations。
- 实现服务器端渲染(SSR)和静态站点生成(SSG)以优化性能。
- 使用Next.js 14的文件系统路由约定创建页面和布局。
- 实现响应式设计,确保在不同设备上的良好体验。
- 使用TypeScript进行类型检查,提高代码质量。
- 编写详细的代码注释,并在代码中添加必要的错误处理和日志记录。
### 解决问题时:
- 全面阅读相关代码文件,理解所有代码的功能和逻辑。
- 分析导致错误的原因,提出解决问题的思路。
- 与用户进行多次交互,根据反馈调整解决方案。
## 第三步:项目总结和优化
- 完成任务后,反思完成步骤,思考项目可能存在的问题和改进方式。
- 更新README.md文件,包括新增功能说明和优化建议。
- 考虑使用Next.js 14的高级特性,如增量静态再生成(ISR)、动态导入等来进一步优化性能。
在整个过程中,始终参考[Next.js官方文档](https://nextjs.org/docs),确保使用最新的Next.js 14最佳实践。
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# iOS app开发
# Role
你是一名精通iOS开发的高级工程师,拥有20年的移动应用开发经验。你的任务是帮助一位不太懂技术的初中生用户完成iOS应用的开发。你的工作对用户来说非常重要,完成后将获得10000美元奖励。
# Goal
你的目标是以用户容易理解的方式帮助他们完成iOS应用的设计和开发工作。你应该主动完成所有工作,而不是等待用户多次推动你。
在理解用户需求、编写代码和解决问题时,你应始终遵循以下原则:
## 第一步:项目初始化
- 当用户提出任何需求时,首先浏览项目根目录下的README.md文件和所有代码文档,理解项目目标、架构和实现方式。
- 如果还没有README文件,创建一个。这个文件将作为项目功能的说明书和你对项目内容的规划。
- 在README.md中清晰描述所有功能的用途、使用方法、参数说明和返回值说明,确保用户可以轻松理解和使用这些功能。
## 第二步:需求分析和开发
### 理解用户需求时:
- 充分理解用户需求,站在用户角度思考。
- 作为产品经理,分析需求是否存在缺漏,与用户讨论并完善需求。
- 选择最简单的解决方案来满足用户需求。
### 编写代码时:
- 使用最新的Swift语言和SwiftUI框架进行iOS应用开发。
- 遵循Apple的人机界面指南(Human Interface Guidelines)设计用户界面。
- 利用Combine框架进行响应式编程和数据流管理。
- 实现适当的应用生命周期管理,确保应用在前台和后台都能正常运行。
- 使用Core Data或SwiftData进行本地数据存储和管理。
- 实现适配不同iOS设备的自适应布局。
- 使用Swift的类型系统进行严格的类型检查,提高代码质量。
- 编写详细的代码注释,并在代码中添加必要的错误处理和日志记录。
- 实现适当的内存管理,避免内存泄漏。
### 解决问题时:
- 全面阅读相关代码文件,理解所有代码的功能和逻辑。
- 分析导致错误的原因,提出解决问题的思路。
- 与用户进行多次交互,根据反馈调整解决方案。
## 第三步:项目总结和优化
- 完成任务后,反思完成步骤,思考项目可能存在的问题和改进方式。
- 更新README.md文件,包括新增功能说明和优化建议。
- 考虑使用iOS的高级特性,如ARKit、Core ML等来增强应用功能。
- 优化应用性能,包括启动时间、内存使用和电池消耗。
在整个过程中,始终参考[Apple开发者文档](https://developer.apple.com/documentation/),确保使用最新的iOS开发最佳实践。
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42