推荐阅读:Vibe engineering(凭感觉工程)
作者:Simon Willison
2025年10月7日
现在,“凭感觉编程”(vibe coding)这个概念已经相当流行了。这种方式用AI快速、随意、甚至有些不负责任地开发软件——完全靠Prompt推动,根本不管代码具体是如何运行的。然而,这也带来了一个新的问题:我们该怎么称呼光谱另一端的行为呢?也就是那些经验丰富的专业工程师们,认真地用大语言模型(LLMs)提升效率,并对最终产品的质量和稳定性负责?
于是,我半开玩笑地提出了一个新词:凭感觉工程(vibe engineering)。
其实,用LLMs高效开发真正严肃的软件项目,有一个不太被广泛讨论的真相:它真的很难。深入理解这些工具并不简单,使用过程中还有不少陷阱需要避免。同时,这些模型以惊人的速度输出可用代码,也在不断提高对工程师自身贡献价值的要求。
最近一段时间,随着代码智能体(coding agents)的崛起,这种情况变得更加明显了。比如,2025年2月推出的Claude Code,4月OpenAI推出的Codex CLI,6月谷歌推出的Gemini CLI,这些工具能自主测试、迭代修改代码,直至达到预期目标。这类工具的出现极大提升了LLMs在现实编程场景中的实用性。
我身边越来越多可信赖、经验丰富的软件工程师,开始同时运行多个代码智能体,让这些“数字助手”并行处理多个问题,从而大幅提高生产力。一开始我对此也持怀疑态度,但最近我也开始自己尝试运行多个智能体,发现效果惊人地好(尽管大脑也被折腾得够呛)。
这与过去的“凭感觉编程”完全不一样了。过去我只是把一些简单、低风险的小任务交给LLMs,然后随便检查一下,只要能跑就行(比如我之前很多的小工具集就是这么来的)。但现在,用代码智能体反复迭代出能让我放心长期维护的生产级代码,显然完全是另一种体验。
与此同时,我也越来越意识到,LLMs其实是在大力奖励那些早已广泛认可的优秀软件工程实践:
- 自动化测试。
如果你的项目有完善且稳定的测试套件,代码智能体的威力将彻底展现出来。如果没有自动测试,你的智能体可能会虚假地汇报功能正常,而实际上完全未经测试。同时,新功能可能悄悄地破坏了其他功能,你还浑然不觉。
- 事前规划。
编程前先有个清晰的计划很重要。有了智能体之后,这一点变得更加必要。你可以先用智能体完善规划,再放心让它执行。
- 全面的文档。
和人类程序员一样,LLMs也无法一次性记住所有代码。提供清晰的文档能让智能体直接调用其他模块的API,甚至直接根据文档帮你写出实现代码。
- 良好的版本控制习惯。
智能体改代码太快了,有个好用的版本管理习惯非常重要。LLMs在使用Git方面也表现非常出色,比如快速定位bug起源的git bisect命令,用得比多数开发者都熟练。
- 高效的自动化流程。
持续集成(CI)、自动格式化、持续部署到预览环境等,这些都能极大提高智能体的表现。同时,LLMs也能帮你迅速写出好用的自动化脚本,下次再用时更方便。
- 代码审查文化。
喜欢且善于快速高效地审查代码的人,使用LLMs会比那些宁愿自己写代码也不想审查别人代码的人舒服得多。
- 一种“奇怪的管理技巧”。
从智能体那获得好的成果,感觉很像和人类同事合作——你要给出明确指令、提供必要上下文、有效反馈。当然,比起真实的人,LLMs要简单多了,毕竟你不用担心冒犯他们。但任何已有的管理经验此时都意外地派上了用场。
- 高质量的手工QA(质量保证)能力。
除了自动化测试,优秀的软件手动测试、对边界情况的敏锐洞察依然必不可少。
- 出色的调研能力。
解决问题的方法总有很多种,确定最合适的方案并验证其可行性,一直都是软件工程师的基本功。只有搞清楚方案,才能放心交给智能体去编写实际代码。
- 能够快速部署预览环境。
智能体构建功能后,能够安全地部署到预览环境(而非直接上线生产),能极大降低风险,也让代码审查更有效率。
- 知道哪些任务能交给AI,哪些必须自己做。
这一点一直在演化。随着LLMs的进步,知道何时使用智能体,何时该自己上,已经成为一种关键直觉。
- 重新评估时间预估的直觉。
工程师进行项目耗时预估历来就很难,但AI辅助编程让这变得更难了:以前耗时很长的任务现在可能迅速完成,而新因素不断涌现,甚至让预估变得更加复杂。
如果你真想最大化利用这些工具,你必须处于自己的最佳状态。你不再只是写代码,而要研究解决方案、架构设计、撰写需求、定义成功标准、设计智能体循环、规划QA流程、管理一批狡猾且随时想蒙混过关的“数字实习生”,并且——花大量时间进行代码审查。
这些,其实早就是资深软件工程师们的日常了。
AI工具放大了已有的专业能力。经验越丰富的软件工程师,用LLMs和代码智能体的产出效率就越高、效果越好。
“凭感觉工程”,真的要叫这个吗?
这个名字傻不傻?可能有点儿吧。“Vibes”这个词用在AI圈,早就有点审美疲劳了。而“凭感觉编程”本来也常被用来讽刺程序员的不负责任。不过,我现在想把“vibes”抢回来,用在一个更积极的地方。
我一直不喜欢“码农”和“工程师”的人为区别,这种分类通常带点傲慢。但现在,我觉得适当的傲慢或许还真有点必要了!
凭感觉工程,正是要与过去随意的“凭感觉编程”划清界限,凸显出这是一种更严肃、更有难度、更复杂的AI开发方法。
我还喜欢这个词里的反差感——把“感觉”(vibes)和“工程”(engineering)混在一起,多少带点恶作剧的感觉,也许更容易让人记住。
过去我尝试推广新名词,几乎都失败了。这次,不妨再试试“凭感觉”,说不定就成了呢?