关于"氛围编程"(vibe coding),目前存在两种截然对立的说法。一种认为,只需输入一句话,AI就能交付一款价值百万的应用;另一种则认为,既然代码全由AI来写,人类根本不知道里面是什么,迟早会酿成大规模的技术灾难。
![]()
这两种说法都是对现实的极端夸大。本文将深入探讨将编程控制权交给机器后,随之而来的维护性与可持续性问题,并逐一拆解围绕智能体编程的几大常见误区。
智能体编程就像去一家口碑不错的餐厅,你知道厨师水平过关,但端上来的究竟是什么,完全无从预料。当智能体负责编写你的代码时,本质上和管理一批外包团队或下属开发者没有太大区别——在你亲自测试和评估之前,无法确知产出的质量。一切的基础都在于你的提示词(prompt)。提示不清晰,缺乏足够的监督和跟进,AI交回的代码就很难让人满意。
工程管理者面对外包团队的挑战由来已久,分配任务、评估成果、把控质量,本就是软件工程管理的核心所在。下面,我们来逐一剖析智能体编程中流传的几大误区,以及能帮助你真正掌控AI输出的最佳实践。
误区一:详尽的需求文档等于高质量代码
许多AI编程倡导者建议为AI提供详尽丰富的需求文档。但实际经验告诉我,AI有时会误解文档中某一个细节,进而完全跑偏,而你根本无从追溯。
更有效的做法是:每次只给AI一个简单、明确的任务,完成后再交付下一个。这样既能减少AI跑偏的机会,也能帮助你始终掌握整体进展。
误区二:自动化测试能保证代码质量
我有一位朋友,每次一看我的软件项目,我就头疼。无论我设计和测试得多么仔细,代码一到他手里就会出问题。原因在于他没有我对项目的"内部认知"——他不知道程序应该怎么用,总会做出我从未预想到的操作,代码随即崩溃。
这正是自动化测试体系脆弱性的典型体现。自动化测试能帮你发现某次修复是否引入了新问题,但因为测试是预先设计的,必然会遗漏那些"局外人"才会触发的边界情况。AI在构建单元测试时,同样会继承人类开发者测试中的盲区。
测试环境也不等同于真实环境。我的安全软件在超过两万个网站上运行,用户反馈的问题五花八门,远超任何测试场景的覆盖范围。
解决方案是:像局外人一样去测试。在提示词中明确要求覆盖边界情况、故障模式和误用场景;安排人员或AI在没有任何内部背景的情况下对代码进行故意破坏性测试;在代码中内置异常行为监控机制,并将容错和错误修正设计进每一处逻辑。
误区三:AI生成的代码是可理解的黑盒
AI生成的代码,从本质上就是一个黑盒。这和接手通过IP收购获得的代码没什么两样,里面藏着各种秘密——就像买了一套房,入住后才发现墙里面有故障线路和破损管道。
AI并非人类,其设计决策和代码结构并不以人类的可读性为前提。一旦出现问题,调试往往需要对AI的工作进行逆向工程,再设法引导AI修复一个它当初可能就没完全理解的问题。
AI生成的代码往往缺乏一致的设计意图、结构和架构连贯性,命名规范和模式也可能因组件而异。这导致任何修改都可能在意想不到的地方引发连锁bug。
以我用Claude开发一款iPhone应用为例:几天后查看文件结构,发现完全混乱——文件随意放置、命名随意、毫无分组逻辑,所有内容堆在同一个主目录下。后来我指示AI整理文件结构,虽然反复调整了几次才找到合理的组织方式,但最终将其固化为启动指令。像管理者一样思考,才能真正驾驭这个"数字下属"。
此外,建议在智能体编程实践中同时使用基于不同大语言模型的多个AI,让一个模型编写代码,让另一个模型审查代码,交叉互检,能有效提升代码质量。
误区四:AI编程不会带来安全隐患
测试脆弱性与维护技术债叠加,几乎必然产生安全盲区。编写质量差、存在固有缺陷的代码,是滋生安全问题的温床。
AI编程模型基于公开互联网数据训练,其中包含大量有缺陷的代码和错误建议。模型因此可能复现从公开数据中学到的不安全编程模式,例如输入验证和过滤缺失,从而留下潜在的利用漏洞。
我曾发现,我使用的AI在为安全产品编写代码时,完全没有做任何输入验证,完全违背了最基本的安全实践。在我明确要求后,AI生成的验证逻辑反而比我自己写的更加完善——但前提是我必须主动、明确地提出这一要求。
AI还可能引入看似合适、实则存在供应链漏洞的第三方库。加之AI生成代码的速度远超人类审查速度,错误很容易在人工核验到达之前就已悄然混入。
好消息是,AI同样可以成为安全修复的有效工具。我曾让AI分析一个存在严重漏洞的开源模块,识别漏洞后重新生成了不含这些漏洞的代码模块;再用另一个AI对前者的输出进行验证,发现了更多需要修复的问题,如此循环,直到不再报错。安装至今已数月,服务器托管商未再标记任何安全异常。
误区五:调试和维护成本会彻底抵消AI编程的效率收益
许多对氛围编程持警惕态度的文章认为,虽然AI大幅压缩了编码阶段的时间,但调试和维护的时间成本也随之膨胀,往往是在代码交付用户后才暴露出乱象。
这种担忧并非空穴来风,但其实和接手收购来的代码、或管理外包团队产出的代码并无本质区别。工程管理者与这类问题打交道已有几十年,良好的软件工程规范、项目规划和管理实践,本就是为了克服外包透明度不足的问题,所需要的只是纪律、训练和经验。
这一切都指向同一个核心前提:AI不是万能的银弹。你不可能靠一行提示词创造出一款价值百万的产品。你必须投入真正的工作。你可以利用AI缩短上市时间,利用AI辅助维护,利用AI发现并修复安全漏洞,也可以享受与AI协作的乐趣。
但请始终记住:AI是工具,你才是专业人员。你需要主动管理、有意识地委派任务、并进行大量测试。只要做到这些,所谓的智能体编程"末日"完全可以避免,真正扎实的成果也完全可以实现。
Q&A
Q1:智能体编程(agentic coding)和普通AI辅助编程有什么区别?
A:智能体编程是指让AI智能体自主完成整段代码的编写,类似于将任务交给外包团队,开发者充当工程管理者的角色,负责分配任务、检查成果和把控质量。而普通AI辅助编程更多是开发者主导、AI提供建议或补全片段。智能体编程效率更高,但代码透明度更低,需要更严格的测试和管理机制。
Q2:AI生成的代码安全性如何保障?
A:AI编程模型基于公开互联网数据训练,可能复现不安全的编程模式,例如缺乏输入验证。保障安全的方法包括:明确在提示词中要求安全实践(如输入验证);使用第二个AI模型对生成代码进行交叉审查;关注引入的第三方库是否存在供应链漏洞;并在发现漏洞后让AI协助重新生成安全版本,循环验证直到无误。
Q3:如何有效管理AI生成代码的质量和可维护性?
A:核心方法是像管理外包团队一样管理AI:每次只分配一个简单明确的任务;在每个阶段设置检查点,逐步验证集成;要求AI在测试中覆盖边界情况和故障模式;要求AI保持一致的文件结构和命名规范,并将规范固化为启动指令;同时使用多个基于不同大语言模型的AI互相审查代码,提升整体质量。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.