Cursor小试牛刀

刚听了Lex Fridman对Cursor开发团队的采访,顺便分享一下自己使用Cursor的体验。

上个月,我注册并试用了Cursor。在为期半个月的Pro试用期结束之前,我成功为minivtun-android添加了应用指定/过滤的功能——这是一个我一直想实现,但没有信心去完成的功能。我还顺利完成了代码的升级工作,现在支持Android 11,并且可以编译release版本了,甚至还添加了app图标。可以说,Android的Java代码几乎都是通过Cursor的自动生成功能完成的,因为我已经多年没有编写Android代码了。如果没有Cursor的帮助,即便通过查阅文档自己也能完成这项任务,但耗费的精力和时间将非常巨大,况且我也没有深入开发Android的打算。minivtun-android本身就是基于例子工程toyvpn稍作修改而来的,底层主要依赖minivtun的Rust模块,对于界面的部分只能凑合着用。

再来说说Cursor的Tab功能,实在是太方便了。在开发过程中,涉及到JNI接口时,正当我为如何将Rust对象转换为Java对象而犯愁时,只需要按一下Tab键,Cursor就自动生成了对应的代码,让我感到非常惊艳。如果是以往,我可能需要查半天的文档。不得不说,Cursor确实大大提升了开发效率。

不过,也不要神话Cursor。如果完全没有编程基础,想通过它开发出完整的App还是有些不现实的(虽然可以一步生成代码,但后续修改绝非易事)。对我来说,Cursor的主要作用是节省大量的编码和查阅文档的时间。你知道下一步该做什么,但记不住具体细节,特别是对不常用的语言和框架。这时Cursor能够自动帮你想到,并生成对应代码,实在是再好不过了。如果生成的代码不太合适,你还可以指出问题,让它进行修改。就像是有了一个助手,动动嘴巴就有人帮你搞定工作,原来当“领导”竟然这么爽。

需要注意的是,Cursor生成的代码并非最优,更多时候只是“能用”而已。有时它的思路可能与你的想法不一致,这时候还得靠经验进行甄别。目前Cursor还没有像Aider那样的自动迭代功能,因此你需要反复手动提示它。为了完成项目代码升级,尤其是消除各种警告信息,我花了不少时间,耗费了大半的高级模型调用额度。由于对Android的新SDK框架完全不了解,我只能让AI不断尝试,自己则像个机器人一样不断将结果反馈给它(这种时候人反倒成了机器的助手)。如果日常编码都是这样,那也太枯燥乏味了。友情提示:不要指望一次性让AI做太多事,一旦某个步骤出错,还得从头再来。所以,当“领导”也不是那么好当的,下属不给力时,你可能会觉得还不如自己动手来得快。

最后,好不容易把代码升级到了支持Android 11的版本,不禁感慨:这SDK的变化也太大了吧!维护Android代码真是麻烦。要不是有AI辅助,我肯定没勇气去升级这段代码。

通过试用Cursor,我意识到,AI辅助编程的最大价值在于它能给予人挑战陌生领域的勇气。因为你知道有一个“伙伴”可以一路给你建议,虽然有时也不太靠谱,但它始终不厌其烦,永不放弃。