
深入对比Plan模式:Cursor与Qoder的碰撞
今天咱们聊聊Plan模式。Qoder在1.7版本中推出了这个功能,之前还提到过一个叫Quest的模式。实际上,二者在核心功能上都是围绕Plan模式展开的。
那么Plan模式是什么呢?简单来说,就是根据你的需求自动生成一份专业的规范文档。这份文档涵盖需求分析、功能分析、技术设计以及接口、页面等各个方面。Plan模式的核心就是从你的想法出发,帮助你完善文档,最终实现需求。
这两款AI编程工具其实并不以Plan模式为主打功能,主要还是通过对话来进行交互。Plan模式更像是它们的附属功能。
在这次对比中,我们先声明一下:Qoder不参与这场比赛。因为Qoder的核心功能就是围绕Plan模式展开的文档驱动工具。文档生成是它的重头戏,所以把它的主要功能与其他工具的次要功能比较,显然不太公平。
我们将使用Cursor和Qoder这两款编程工具来比较一下,看看谁的Plan模式更好用、生成效果更佳。接下来,我们先了解一下Cursor中的Plan模式。
在Agent部分可以看到Plan的规划介绍,文章的重点主要集中在这五个方面:
- Plan模式的功能特点:它能澄清问题并了解你的需求,这点非常棒。在演示中,当你提出需求后,它会分析这些需求,并通过代码库提出问题,希望你给出答案,进而让生成的Plan更加详尽准确。这是一个互动的过程,而不是简单地给你个结果。Plan模式在过程中可能会碰到理解上的困难或者需要优化的地方,通过你的反馈来完善计划,这一点相当重要。
- 研究代码库与上下文收集:Plan模式特别适合功能迭代的场景。比如,TradeSolo模式更适合从零到一的项目,比如开发一个类似ChatGPT的问答网站,它会生成设计文档、技术文档,并完成所有的开发、测试和部署。但在实际开发中,我们经常遇到需要功能迭代的情况,尤其是面对复杂的功能需求。此时,Plan模式能够帮助你分析需求,提供更全面的参考方案。
TradeSolo模式适合快速推出MVP项目,而Plan模式则更像是一个内置的对话升级版,通过生成文档来帮助你快速实现功能。它更适合迭代开发,因此需要了解之前的对话记录、代码库和上下文,作为生成Plan的基础。否则,生成的Plan可能会不够完整。
所以,这一点非常重要。接下来说到第三个点,制定全面的实施计划同样关键。有了文档之后,如何实施变得至关重要。没有实施计划的话,文档和生成的代码可能会天差地别,因此实施计划是必不可少的。
第四个特点是你可以编辑生成的文档。如果某些地方不太满意,可以进行调整,最终确认后再执行任务。
最后一个特点是制定一个构建计划,也就是我们常说的TodoList。只有具备了这五个要素,才能算得上一个完整的Plan文档。Cursor的Plan模式真的是相当有特色,每个功能都贴合我们平时开发的需求。如果你对某个需求感到困惑,或者不知道该如何着手,这种方式无疑是个不错的选择。
接下来我们来看看Quest,看看Qoder里面的Quest是怎么样的。整体来看,它没有像Ask那样进行询问和澄清,而是直接根据你提供的需求文档生成设计文档。
设计文档中包含了很多内容,比如技术设计、工作流程、数据库设计等,内容相对完整。但缺乏一个澄清过程,也就是说没有交互环节。它的特点在于依赖于自身的记忆功能,因为代码里有很强的记忆能力,或者说它有良好的上下文理解,尽量完善你的需求。生成的文档也是可以修改的——如果有不同意见,可以更改或取消。确认无误后再进行下一步,这也是一个过程。
总结一下:
生成Plan模式的主要特点。前面提到的四个特点我们已经讲过,最后一个是通过一次对话完成任务。这是什么意思呢?就是生成Plan文档后,执行任务时其实无需再进行额外的交流,不需要再进行额外的对话。我们期望的结果是:Plan文档生成完毕后,接下来的事情都交给AI编程工具来完成。希望是这样的,所以这才是真正的Plan模式,否则就不算了。
它具备的能力包括:执行Plan模式时,需要理解和搜索代码库、整合上下文、澄清问题等。当然代码里没有代码的内容。我们来看一下最终的效果。
这次演示中,我想实现一个销售报表功能。
这个项目实际上由多个模块组成,包括前端和后端项目。我的变更主要涉及两个项目:gyl-manager(前端)和gyl-service(后端)。
目前我对这个项目最终要实现的样子并不清楚,也不知道具体需要哪些报表。在这种需求模糊的情况下,我希望通过Plan模式来补全这些需求空白。比如,从老板和销售的角度来看,应该关注哪些报表?AI能生成什么样的文档或页面?这正是我需要它制定计划的原因——我对报表模块完全不熟悉,只知道销售和老板需要看结果。
AI生成内容后,会进入问题沉淀阶段。这里列出了四个关键问题让我选择:
1. 报表功能范围(包含哪些报表,会直接影响页面设计)——我选择了“以上全部”。
2. 时间维度(日、周、月、同比、环比等常见统计方式)——我选择了“日维度统计”。
3. 数据显示方式(如折线图、柱状图、饼图)。
4. 其他定制需求(如自定义日期区间查询)。
通过这些问题,我对需求的理解变得更加清晰,AI也能更准确地生成文档,确保方向不会偏离。
现在它已经执行完毕,我们来看一下生成的这个Plan计划文档。
在刚才的操作中,我们看到生成文档时,我可以点击Plan来执行开发计划。这一过程非常清晰,后端要做些什么,一目了然。然后创建DTO、创建API,这些都是我在三层架构中定义好的内容。这个Controller,然后生成文档。前端开发要做什么?接口组件、页面、路由,还有前端的文档。技术要点就是需求实现开发的顺序。生成的思路就是这样。
整个文档虽然看起来简单,但关键信息非常丰富。接下来我们用Qoder实现一下,看看生成的效果。
打开Qoder后,左侧有个Qoder Quest的选项,我们进入后同样把对话内容复制到这里。
这边让我添加上下文并选择仓库,这个操作有点奇怪,但我随意选了一个继续。进入文档生成后,会看到三个设计操作轨迹:任务总结,其实就是它的执行步骤。
接下来我们看看这段代码生成的Plan文档。它的格式规范,包含概述、价值描述——特别像AI工具生成的文档。技术栈部分其实有点多余。接着是分层设计、功能说明、数据表结构、接口设计,还有流程描述,这些内容都涵盖了。
文档中还提到索引优化、前端性能优化,以及页面布局和排行规则等细节,非常详细。对比来看,它比Sal的文档更细致,像是一个从零开始的项目文档。
最后我们演示一下Ser和Code生成的页面效果,看看最终呈现如何。
在之前生成代码时,是通过不同的分支来控制的。ser和code两个有不同的分支,因此我们可以很清晰地展示这个系统。我们先切换到sal这个分支,看看最终效果。可以看到,这就是它的样子。
生成的页面一共五个,展示的是销售汇总,可以点击查看。这边能正常拉取数据,都是后台真实的数据。可以切换周、月、年,尽管第零周、第一周的显示效果不太理想,但功能已经实现。导出功能也能正常使用。
再看看其他功能,比如客户销售列表,显示了对应的数据列表。商品销售数据也能查看,柱状图和饼图正常显示,区域销售数据也没问题。虽然有些细节需要调整,但基本功能都实现了。
这个项目虽然在业务逻辑上可能还需调整,但质量完成得相当高,几乎没什么问题。刚刚修复了一些导入类的小问题,很快就能正常运行。前端没有任何问题。
接下来我们看看Qoder生成的代码,切换到Qoder这个分支。
看看Qoder这边生成了这样的五个页面。我们来逐一查看,实际上这几个页面的结构和样式有点相似,但基本上所有接口都不通,无法正常调用。所有接口都不同,全部调用失败。
这其实我已经修复了好一段时间。最初Plan模式推出时,前端界面是缺失的。而且这个JS是无法运行的,后端编译也不通过。你可以看到,我在这里做了很多代码的修复。
最终其实还是存在许多问题。因为我这边的积分已经用完,无法再进行修复。所以说这个Plan的完成度其实相当差。虽然文档写得很好,但最终效果却是最差的。回顾一下整个过程,我们可以看到:
sal生成时,代码变更包含了新增的内容,也包括修改的部分。
前端也是如此。这里的消耗成本大概是这样的:因为我现在还是按次数收费,所以具体扣费不太清楚。根据目前的账单,大约在两三美金左右。
不过这个成本并不是你实际要付的,而是它自己估算的成本。你最终需要支付的成本可能会更少。这是我用的Plan模式,以及它调用的次数。
至于代码部分,大部分文件都会新增,所有文件都被添加。
这其实也告诉我们,Qoder在代码搜索和学习能力上并没有做好,和Cursor相比差了一些。
聊聊Plan模式的那些事儿
其实啊,如果你不去找一些现成的代码学习,然后再写出符合业务逻辑的代码,最后生成的东西可能就会很糟糕。我发现它生成了不少代码,但其实问题也不少。
当然,它执行某些任务时基本上没啥问题。
不过,你想要的字段,比如销售额、利润等等,它的理解就有点偏差。它按照自己的理解来做这个Oracle查询,所以这里面有很多地方需要修改,基本上都是新增的代码文件。
在我使用这个Plan模式之前,我的积分还剩81%。
用完后,积分剩下87%。不过后来使用了大约6%左右,现在还有20%的问题没解决,但我的积分几乎用光了。它一直提醒我得续费,不然就不能用了,所以后续的问题我也没再去修复。
等我把问题解决后,可能积分就全用完了,那就真是尴尬了,这种定价方式给我带来了这样的结果。
然而这个结果其实是有误的,你需要花费更多的积分去修复它,这样一来你的成本就增加了。
所以说,这样的情况真是不划算,对我来说并没有达到预期。结果也不太理想。接下来,我们来做个对比吧。
这几个维度我觉得是我自己认为的Plan的考量标准。比如说,Plan生成的文档完整性,SL这边的代码生成相对更丰富。SL不仅生成了流程图和技术文档,还特别完善。而SL那边生成的只有一个标准的接口需求和描述。
说到可读性,我觉得Cos做得更好,它会告诉你生成了哪些页面,然后需要做哪些修改。而Code则显得有些杂乱。问题澄清方面,Cos有这个功能,但Code就没有了。
至于文档是否可编辑?两个工具都可以。而生成TodoList的功能?这两个也都能做到。代码搜索和上下文结合,这其实直接影响到最终生成代码的质量。
不过,Cos会忽略一些规则,比如我对SQL写法的限制,但它最终生成的内容却没有遵循这些规则。为了简化上下文,它省略了一些规定,但它的学习能力很强,可以根据业务找到相关内容。比如我指出去查哪个表,它能理解表中的关键字段,而Code就做不到这一点。
至于代码生成的错误数量,Cos大概生成了3个后端错误,前端则没有,前端一次性通过。而Code的表现就不太好说了。
在符合业务完成度方面,SL的表现相对较高,而Code则一般。最重要的一个问题是,你是否实现了Plan设定的文档,对吧?Plan写得再好,如果没能实现那也没意义。SL实现得很完整,而Code只实现了一部分,许多功能并没有完成,还缺了不少页面,所以使用体验其实不佳。
总体来说,我认为Cos的Plan模式非常优秀,而Code则一般。这很可能和它的模型使用有关,因为我用的是4.5的模型,而Code的模型却是隐藏的,不清楚它用的是什么。
所以,整体结果就是这样。经过观察,我觉得Plan模式在解决一些复杂问题时效果很好。
当你不知道如何处理某些需求时,其实可以让它根据上下文结合你的代码库和业务,进行进一步的丰富和迭代。我觉得Plan模式特别适合处理复杂需求,也能有效解决那些你觉得不太好处理的问题,值得一试。










Plan模式的实施计划部分听起来很重要,没计划真是做不好项目啊。
在使用Plan模式时,保证上下文信息的完整性是关键,避免生成文档不完整。
文档和实施计划的对应关系很关键,若实施不当,文档就成了摆设。
这个Plan模式适合快速迭代吗?我对功能更新的需求很关注。
这种功能迭代的支持,究竟能帮我们节省多少时间呢?
文档生成的互动过程很有趣,能否详细分享一下具体的使用体验?
听起来Cursor的Plan模式适合复杂需求,实际效果到底怎么样?
我在使用Cursor的过程中,发现反馈机制确实能提升文档质量,体验很不错。