发布于 2026-01-06 0 阅读
0

氛围编码:因为谁不喜欢意料之外的技术债务呢!?

氛围编码:因为谁不喜欢意料之外的技术债务呢!?

像 Claude Code、ChatGPT 和 GitHub Copilot 这样的 AI 辅助编码工具简直是天赐之物。我每天都用它们——编写样板代码、修复 bug、快速探索,甚至撰写文档。我完全相信 AI 能显著提升生产力并加速创造力。

但它们正在改变我们编写软件的方式——而且并非全是好事。这是因为人工智能的应用已经发展到一定阶段,以至于我们中的一些人开始在工作中凭感觉编写代码。而这可能预示着一种新的开发文化即将到来,在这种文化中,精心设计被抛弃,取而代之的是便捷和速度。

什么是氛围编码?

图像

Vibe Code 最初是为了快速搭建原型或业余项目而开发的。你只需给模型一些提示,它就能在无需太多输入的情况下为你快速构建出一个完整的应用程序或功能——瞧!你可以在几分钟内测试你的概念。它非常适合初级开发者、独立创业者以及需要快速创建演示的经验丰富的开发者。正如他们所说,快速失败。

虽然这些都是 vibe 编码的绝佳用例,但 vibe 编码已经发展成为一种与 AI 代理合作,为各种用例(包括生产系统)生成代码的方法。

它指的是在几乎没有人工干预或对所生成代码缺乏理解的情况下,引导人工智能编写代码。这通常涉及模糊的指令、极少的验证以及对输出结果的盲目信任。

它吸引的是那些凭感觉编程的人,因为它速度快、操作轻松,而且不需要你理解底层语言或系统架构。但是,如果你在没有清晰的认知框架的情况下让AI生成代码,那就意味着“感觉优先,架构可有可无,测试则稍后再做(甚至可能根本不做)”。

思考:

“请帮我构建一个集成 Stripe 和 PostgreSQL 后端的 REST API。”

它速度快、界面美观,而且通常“开箱即用”。但你觉得好用的应用程序,其背后往往隐藏着脆弱的假设、不清晰的逻辑和杂乱无章的代码。

氛围程序员的困境:氛围无法规模化。

软件工程的核心远不止编写可运行的代码。它还包括解决问题、设计可维护的架构、编写简洁明了的逻辑、精确调试以及确保长期可靠性。

没错,你的微服务架构运行起来了——但是错误处理机制如何?它是否遵循你们组织的规范?人工智能是否创建了一个命名不一致的奇怪数据模型?同一个内容在不同文件中是否存在十种不同的写法?你的生产数据库是否仍然可用?

当你凭感觉写代码时,你会忽略那些能让代码长期可维护、可扩展的精心设计步骤,例如有目的地命名变量、选择清晰的结构以及设计周全的流程。当凭感觉写代码成为常态时,我们就有可能忽视那些能让工程师高效工作、系统稳健运行的深层思考。

你正以极快的速度冲向科技债务的泥潭,却没有地图也没有刹车。

人工智能是新的抽象概念(而且它具有很强的非确定性)。

图像

现代编程语言已经抽象化了硬件和内存管理。人工智能又增加了一个概率性的、非确定性的层面,进一步模糊了逻辑。借助人工智能,我们实际上是在抽象意图。

但问题在于:人工智能的输出结果是概率性的。这意味着:

  • 同样的提示符在不同的运行中可能会产生截然不同的结果。
  • 措辞上的细微差别就可能导致截然不同的架构选择。你通常并不清楚模型为何会做出那样的选择。

这种模糊不清的氛围或许适合原型设计,但对于生产系统来说呢?这种不可预测性会削弱信任、控制和可靠性——而这些正是可扩展软件开发的关键要素。

这就像让一个混乱中立的巫师重构你的代码库一样。

技术债务以(vibey)提示的速度

图像

说实话,基于直觉的编码方式一开始感觉很棒。你只需要一个小时就能得到一个可用的原型,而不是像以前那样需要一周时间。

但如果没有适当的防护措施,这种速度可能会导致:

  • 沉默的虫子
  • 重复逻辑
  • 不连贯的建筑
  • 不一致的模式
  • 未审核的 PR
  • 零测试覆盖率
  • 隐藏的复杂性

如果不了解代码结构,未来的维护将会变得异常艰难。代码审查所需时间会呈指数级增长,而且更容易遗漏问题。调试会变成侦探工作,扩展也会变成猜测。前期节省的时间,后期可能会付出更大的代价。这还没算上你正在创建的大量 PR 积压问题。

突然间,你发现自己身处一个代码库中,虽然它能运行,但如果不进行六小时的调试、打开一个包含一百万个令牌的上下文窗口以及接受三次心理治疗,就无法对其进行任何修改。

氛围编码:脆弱性倍增器

Vibe编码系统往往具有以下特点:

  • 突破极端情况的限制。
  • 让下一位开发者(甚至是未来的自己)感到困惑。
  • 在生产环境中悄无声息地失败。

结果呢?你花在审查、修改、解释和重写上的时间,比当初提出要求节省下来的时间还要多。你创建的系统不仅脆弱,而且令人费解。

测试、安全以及人工智能默认情况下不会做的所有事情

图像

如果人工智能不小心用虚拟编码方式写入了敏感数据、硬编码了API密钥或跳过了输入验证,它不会发出警告。除非你明确要求,否则它不会强制执行领域驱动设计或测试覆盖率。

缺乏扎实的工程直觉,仅凭感觉编写代码可能会导致现实世界中的安全漏洞和脆弱的系统,尤其是在安全被当作事后考虑而非默认设置的情况下。我们已经目睹了Tea Dating应用泄露超过7万名用户的隐私信息,以及人工智能删除SaaStr生产数据库的案例。

人工智能不会:

  • 除非另有明确要求,否则请编写单元测试。
  • 了解你的威胁模型。
  • 遵循OWASP指南。
  • 除非提示完全正确,否则必须验证用户输入。
  • 负责任地记录日志(注意:硬编码的密钥和个人身份信息泄露)。

如果你还没有养成良好的工程习惯,或者即使在这个充满活力的时代,你也不愿意坚持你目前的习惯,那么直到这些习惯在生产环境中狠狠地打击你,你才会意识到它们的缺失。

当感觉取代了奋斗,你就会失去直觉。

与 bug 搏斗、追踪堆栈跟踪、从错误中学习,这些过程能够培养技术直觉。这种挫败感是学习过程的一部分,跳过这一步会导致自信心不足和依赖性增强。

不经历磨练,开发者就无法培养独立解决陌生问题的能力,而这才是真正专业技能的体现。没错,调试很痛苦。但是,追踪一个棘手的 bug 穿过 12 层抽象层,能让你学到法学硕士永远学不到的东西。

斗争愈演愈烈:

  • 系统的心理模型
  • 模式识别
  • 在代码崩溃之前就能嗅出代码腐败的迹象

如果你忽略这一点,你就会在浅薄的理解之上建立起浅薄的自信。而当事情出现差错时,你将没有能力解决问题。

氛围编码的优势所在

实事求是。Vibe 编码非常适合:

  • 快速原型制作
  • 生成样板或重复性任务
  • 以互动方式教授编程概念
  • 通过粗略的模型来传达产品理念
  • 利用框架或模式进行头脑风暴

如果运用得当,它能成为代码编写者的得力助手;如果盲目使用,则会成为累赘。作为开发者和团队,我们需要明白何时应该划清界限,何时应该引入更严格的代码审查和单元测试等支持措施,在技术债务固化于代码库之前将其解决。

我们并非在失去这门技艺——而是在债务的泥潭中将其淹没。

图像

最大的风险不在于人工智能会扼杀开发者的精湛技艺,而在于技术债务会变得隐形。

随着人工智能编码成为默认的构建方式,系统表面上看起来会很完整,但实际上却混乱、脆弱且缺乏文档。只有当用户尝试扩展系统时,才会发现这些问题。

这在以下领域非常重要:

  • 卫生保健
  • 金融
  • 基础设施
  • 安全关键系统

然而,Vibe 编码也有可能发展成为一个新的开发层面,与工匠精神并存,人工智能处理繁琐的事情,例如样板代码和第一遍代码审查,而人类则专注于系统背后的架构、伦理和设计。

这就是我们希望达到的目标,也是我们在CodeRabbit开发人工智能的方式。我们专注于开发能够辅助编码人员的AI工具,帮助您发现并防止技术债务和bug进入生产环境——而不是反过来。

要不要用Vipe代码?

图像

这篇文章并非反对人工智能编程。我每天都在工作流程中使用人工智能编程助手。但工具应该增强我们的技能,而不是取代它们。它们应该承担那些繁琐重复的工作,而不是思考和制定策略。

Vibe编码本身并非邪恶,只是容易被滥用。真正的危险在于,在团队开发人员尚未理解他们正在构建的内容之前,就让它成为项目的默认思维模式。

让我们拥抱人工智能,但也要让编程这门技艺传承下去,因为好的软件不仅仅在于它能运行,更在于它能长久存在,即便最初的开发者早已离去,即便最初的热情早已消退。

需要帮助避免生产环境中出现技术债务吗?立即免费试用我们的AI代码审查工具

文章来源:https://dev.to/coderabbitai/vibe-coding-because-who-doesnt-love-surprise-technical-debt-3c3b