关于氛围编程实践的一些分享
Filed under هندسة البرمجيات, الذكاء الاصطناعي, LLM on 25 مارس 2025. Last updated on 25 مارس 2025.
toc
什么是氛围编程?
氛围编程(Vibe Coding)这个词最初由OpenAI联合创始人、前特斯拉AI负责人Andrej Karpathy于今年2月初在社交平台上提出。
不可否认,通过使用AI工具,氛围编程确实可以让我们的编程工作变得更加轻松。但是,氛围编程真的有这么简单吗?
我对氛围编程的看法
当我听到“氛围编程”这个词的时候,我第一反应是:“氛围编程”这个词听起来有点过于轻松简单了。这可能会让一些行业外的人士认为,编程是一件非常轻松的事情。并且,这也可能会加深行业内年轻工程师的焦虑:是否程序员将会被AI取代?是否人人都可以轻松完成一个项目?
而我的观点是:
- 编程不是一件简单的事。想要写好代码,需要有清晰的逻辑、扎实的编程功底、丰富的编程经验。所以,程序员的门槛会越来越高,但这个行业本身对人才的需求也会越来越大。关于这点,可以参考Uncle Bob的新书We, Programmers: A Chronicle of Coders from ADA to AI。
- 你可以使用AI来加速你的学习过程。如果你只需要初步了解一个领域,使用AI工具可以让你快速上手。
- 通过使用AI工具,降低繁琐编码工作,让你有更多时间去思考和设计。使用Cursor的大多数时间,我都只需要按下Tab键。
如何在日常的工作中使用AI工具,以提高工作效率,是我一直在实践并尝试回答的问题。
请记住这个存在主义的结论:没有人能帮你做决策,AI也不行。你需要为自己的决策负责,你需要为自己的代码负责。利用AI,快速试错,持续学习。
氛围编程 vs. AI辅助编程
相较于“氛围编程”,我更喜欢“AI辅助编程”这个词,以强调AI工具在编程过程中的作用。
对比项 | 氛围编程 | AI辅助编程 |
---|---|---|
受众 | 所有人 | 专业人士 |
项目规模 | 小规模,试验性 | 中大规模,正式项目 |
技能要求 | 编程基础 | 架构,抽象,设计 |
可维护性 | 低 | 高 |
从氛围编程到AI辅助编程
以下是我个人使用AI辅助编程的流程。可以看到,AI参与的部分是有限的。所有涉及决策的部分,都离不开程序员自身。
接下来我会通过我自己使用AI工具辅助编程的例子,来详细介绍这个流程。我会用🤖和👨💻来分别表示AI和程序员主导的部分。
准备工作 👨💻
目前我使用得最多的是Cursor和ChatGPT。Cursor用来处理任何跟代码相关的事情(编辑、修改、调试),ChatGPT则用来进行分析、学习。
提出想法 👨💻
首先,要善于思考、提问、质疑。没有这些创造性的原创想法,AI再强大,也帮不了你。
其次,要敢于提问、尝试。没有人能做到完美,不要害怕犯错。按照自己的节奏,不断学习。
AI辅助编程与需求分析 🤖
在当前的环境下,需求分析变得非常简单。使用ChatGPT等工具,我们只需要描述清楚需求,就可以得到一个初步的解决方案。
比如,我可以直接问ChatGPT“我想使用RL训练一个模型玩Hollow Knight,应该怎么做?”。当然,我也可以直接在Cursor的聊天窗口中,输入我的需求。
生成代码 🤖
就我的经验而言,在使用AI生成代码的时候,有以下几点需要注意:
强调确定的部分 👨💻
不管是需求,还是函数签名,类型设计,任何你确定的部分,你需要在提示词中明确指出,以确保AI能够正确地生成代码。或者,你也可以自己编写这部分代码,然后让AI来补充完整。
学习并理解生成的代码 👨💻
在AI生成的代码中,你可能会遇到一些你不太理解的部分。这时候,你需要停下来,理解这部分代码,然后根据你的理解,让AI修改这部分代码。
迭代试验代码 🤖
通常经过几个迭代,一个阶段的工作就完成了。这时候,你需要停下来,反思一下,这个阶段的工作是否达到了你的预期。如果达到了,那么就继续下一个阶段;如果还没有达到,那么就继续迭代。
重构,重构,还是重构 👨💻
如果你完全不清楚是否应该重构,可以使用SonarQube等工具来辅助你,发现代码中的Bad Smells。我的经验是,经过几轮的迭代,AI生成的代码会越来越复杂,越来越难以维护。这时候,重构就显得尤为重要。
测试(TDD) 👨💻
AI并不会自己测试它生成的代码,所以,麻烦你来测试它。当然,你可以继续用AI来生成测试代码,但是你需要主导这个过程。
生成测试代码 🤖
对于开发人员来说,在函数签名、类型设计上投入时间,可以让你在测试代码时更加得心应手。大多数语言,即便是动态类型语言,至少都提供某种程度上的注解(Annotation)能力,比如Python的类型注解。
这些类型注解,可以帮助AI生成更准确的测试代码。
运行测试代码 🤖
目前,Cursor已经能够很好的生成测试命令。特别是一些测试工具本身命令参数比较多,并且你累积了越来越多的测试用例时,使用Cursor直接在命令行生成测试命令就非常方便。
在最新版本中,Cursor甚至可以在聊天框生成命令,你可以直接在聊天框中点击运行。
修复并改进代码 👨💻
不管是现有的实现有问题,还是测试用例本身有问题,你都需要评估并修复这些问题。或许AI可以帮助你,但是,最终的决策权在你手里。
发布上线 👨💻
如果是小型项目,AI生成的代码基本上可以直接发布上线。但是,对于大型项目,需要考虑的问题更多,比如前后端分离、容器化、可观测性、多云部署等等。所有这些需要再深入讨论的问题,AI都没有办法直接给你答案,而是需要你来做出决策。
总结
AI作为辅助工具,可以让你在编程过程中更加得心应手。但是,个人才是项目成功的关键。如果你有任何想法,请大胆尝试吧!哪怕失败了,你也会收获宝贵的经验。