摘要:在我用Cursor构建完一个应用后,能否让现在的Cursor教会未来的Cursor如何更快速地重建这个应用?这个想法或许能让我们洞察Cursor需要哪些优化,从而让所有人的开发效率都得到提升。如果能通过更高效的提示词节省时间,我们就能减少后续调试和返工的时间成
“数字共生”
本文使用 ClinePRO 自动翻译。
原文作者:Chris Dunlop
原文链接:
我在Twitter上看到Cursor的开发团队竟然用Cursor来开发Cursor :) 于是我突然灵光一现。
在我用Cursor构建完一个应用后,能否让现在的Cursor教会未来的Cursor如何更快速地重建这个应用?这个想法或许能让我们洞察Cursor需要哪些优化,从而让所有人的开发效率都得到提升。如果能通过更高效的提示词节省时间,我们就能减少后续调试和返工的时间成本。而且,调用Cursor的次数越少,开发成本就越低。
实验对照组设定
在之前的测试中,我用6次请求让Cursor在16分钟内构建了一个看板应用(Kanban App)。这将作为本次实验的基准对照组。
让 Cursor 创建操作指南
我让 Cursor 使用 Gemini 2.5 回顾了自己的代码仓库,然后假设重新构建整个项目,为自己编写了详细的操作指南。它生成了两个详细计划,其中一个包含非常具体的步骤说明。
这份文档立刻让我收获颇丰,首先,它明确列出了需要使用的 pnpm 命令,且排版清晰。
项目规范结构化:
项目目标
MVP核心功能清单
目标用户范围界定
它还在提示中提到,为了尽可能快速构建,需将范围设定得越小越明确越好。
清晰的数据模型和 API 布局
我注意到这份文档的一个特点是所有内容都极其清晰明确。阅读时,你能完全清楚它要构建什么,而且很容易发现小错误-这算是额外的好处。
用户界面规格很有趣
我觉得用户界面部分很有意思,因为它明确列出了所需的组件,而且措辞再次极其清晰精准。
它生成的第二份文档更偏技术层面,包含了所有需要运行的命令。
第二份文档-清晰罗列的 PNPM 命令与安装步骤
一个示例数据库表和 API
有趣的是,它为自己生成了关于期望结构的示例。
它为自己制定了非常清晰的指引,告诉我在对话中应该如何提问。知道应该以这种方式进行提示是很有帮助的。
给构建者大语言模型的指令:严格执行以下步骤,切勿偏离。在每个主要步骤完成后(例如,模式设计完成后、API 实现完成后、前端开发完成后)报告完成情况或遇到的任何错误。请仅专注于实现所描述的看板功能。
构建时间
所以我只需要一次提示,它就构建了整个应用程序。虽然这是预期之中,但速度之快和零错误还是让我印象深刻。
实际构建效果
它完全按预期运行,甚至实现了比旧文章中原始需求更多的功能。在这个版本中,我可以添加泳道(lanes),而原始版本中是无法做到的。
添加功能和模态窗口简洁利落,拖放操作也很流畅。
时间与结果
以下是对比表格(简而言之,耗时从 16 分钟缩短至 11 分钟,请求次数从 6 次减少到 3 次)
节省成本分析
0.12 美元的节省听起来可能不多,但这只是 11 分钟内的优化成果。若按每周 40 小时的工作时间计算,每周可节省 18 美元。从规模化应用来看,这些节省累积起来将非常可观!
关键结论
当然,这里需要说明的是,模型之所以能更快完成任务,是因为它确切知道要构建什么 -这个观点没错。但即便如此,仍有一些重要要点值得关注。
利用成本更低的模型进行更全面的规划,我的下一个实验是在一个全新的项目中创建一个从未接触过的代码仓库,然后让模型生成同等详细的规划内容,观察其完成速度。
以下是你可以复制的模板
为了让你获得实用的参考,我让模型生成了一份操作指南模板。
使用方法:简要描述你的项目,然后要求模型填充此模板并生成输出文档。别忘了让大语言模型(LLM)提出需要澄清的问题。
模版(用于快速生成 LLM 构建计划)
1.项目定义
项目名称:[例如:个人财务追踪器、健身房锻炼记录器、简易待办事项应用]
项目目标:[用一句简洁的话描述核心用途。例如:“追踪收入 / 支出并查看消费类别。”、“记录健身房锻炼内容,包括运动、组数、次数和重量。”、“管理带完成状态的任务列表。”]
目标 MVP 功能:[首个版本必须包含的最小功能列表,务必精简。例如:
添加 / 查看支出
对支出进行分类(初始为固定类别)
按类别查看总支出
添加新锻炼记录
向锻炼记录中添加运动(名称、组数、次数、重量)
查看历史锻炼记录
添加新任务
标记任务为已完成 / 未完成
查看所有任务 ]
目标用户范围:[例如:单用户(无需身份验证)、多用户(如需验证请说明,如 “初期无需验证”)]-为最大化速度,优先选择 “单用户”。
2.技术栈选择
框架:[例如:T3 栈(Next.js/ 应用路由、tRPC、Tailwind)、Vue+Express、React+Flask]-不确定时默认选 T3 栈。
数据库:[例如:MySQL、PostgreSQL、SQLite]-不确定时为简便起见默认选 PostgreSQL 或 SQLite。
对象关系映射(ORM):[例如:Drizzle、Prisma]-使用 T3 栈时默认选 Drizzle。
UI 库:[例如:shadcn/ui、Material UI、无(纯 Tailwind)]-为快速生成组件请指定 shadcn/UI。
包管理器:[例如:pnpm、npm、yarn]-请指定 pnpm。
3.核心数据模型(仅限 MVP 范围)
针对 MVP 功能所需的每个核心数据实体:
模型名称:[例如:Expense(支出)、Category(类别)、Workout(锻炼)、Exercise(运动)、Task(任务)]
字段:[带类型提示的字段列表,需具体(例如:id: 自增序列,description: 字符串 (255),amount: 小数 (10,2),date: 时间戳,categoryId: 外键 (Category),name: 字符串,sets: 整数,reps: 整数,weight: 小数 (6,2),isComplete: 布尔值,createdAt: 时间戳)]
关系:[描述 MVP 所需的关联关系。例如:Category 有多个 Expense,Workout 有多个 Exercise,Task 独立存在。]
4.核心 API 端点(仅限 MVP 范围)
基于 MVP 功能和数据模型:
端点动作:[简要描述。例如:“创建支出”、“获取所有类别”、“获取锻炼记录”、“向锻炼添加运动”、“切换任务完成状态”、“获取所有任务”]
框架特定实现(如适用):
# tRPC 示例- 端点动作:创建支出 tRPC: - 类型:mutation - 输入:{ description: string, amount: number, categoryId: number, date?: string } - 输出:ExpenseObject - 端点动作:获取所有类别 tRPC: - 类型:query - 输入:无 - 输出:Array # REST 示例- 端点动作:添加新任务 REST: - 方法:POST - 路径:/api/tasks - 请求体:{ title: string, description?: string } - 响应体:{ id: number, title: string, isComplete: boolean } - 端点动作:切换任务完成状态 REST: - 方法:PUT - 路径:/api/tasks/{id}/toggle - 请求体:无 - 响应体:{ id: number, isComplete: boolean }5.主界面视图(MVP)
视图描述:[描述 MVP 的主要屏幕。例如:“一个显示支出列表 / 表格的页面,带有添加新支出的按钮 / 表单。”、“一个显示历史锻炼记录的页面,点击可查看其包含的运动。有开始新锻炼的按钮。”、“一个显示任务列表的页面,带有复选框和添加新任务的输入框。”]
所需 UI 组件:[列出必需的组件,引用所选 UI 库。例如:shadcn Button、shadcn Input、shadcn Table、shadcn Card、shadcn Checkbox、shadcn Dialog(用于添加支出)]
6.核心依赖库(超出技术栈默认配置)
[列出 MVP 功能绝对必需的任何关键库。例如:date-fns(如果日期处理是核心功能)、@dnd-kit(如果拖放是 MVP 需求)、无]
来源:opendotnet