
人工智能工程 / 软件开发 / 软件测试 从氛围编码到氛围工程:是时候停止用人工智能进行即兴演奏了 团队需要清理那些看上去不错但在压力下失败的代码。 2025 年 7 月 3 日上午 10:00 作者: Tammuz Dubnov 精选图片:从氛围编码到氛围工程:是时候停止使用人工智能进行即兴演奏了 照片由 Kit (以前称为 ConvertKit) 在 Unsplash 上拍摄。 “氛围编码”的时代已经到来,它已经在生产环境中带来颠覆性的变化。最初只是利用人工智能辅助开发的趣味实验,如今已悄然渗透到关键工作流程中。在黑客马拉松中,用氛围编码进行功能开发是可以的。然而,一旦投入生产,在冲刺阶段用原型设计的方式进行开发可能会带来回归、逻辑不通以及安全漏洞。
人们很容易被速度所诱惑:输入一个提示,获取可运行的代码,然后发布。然而,当正确性、可维护性和可扩展性受到威胁时,这种方法就失效了。团队不得不清理那些看起来没问题但在压力下失败的代码。原本看似势头迅猛的代码很快就变成了昂贵的技术债务。
我们需要划清界限:编写可运行的代码与设计持久的软件是两码事。任何人都可以随时输出可编译的代码。构建持久的东西需要架构、测试和意图,而不仅仅是随波逐流。
Vibe 编码感觉很好 — — 直到它不再好 Vibe 编码在任何项目的早期阶段都能蓬勃发展。无需集成现有代码,无需破坏测试套件,也无需担心任何边缘情况。只需您自己、一些提示以及看起来足够演示的输出即可。
它一直有效 — — 直到它失效。
一位开发人员开发了一项新功能。它编译通过,运行正常,最终交付了。然而,一周后,收到了一个错误报告:用户正在访问仅限管理员使用的功能。生成的逻辑未能包含授权检查。没有编写任何测试来解决这个问题。由于代码看起来没有问题,所以没有人仔细审查。
随着团队的调查,越来越多的问题浮现。命名不一致。业务逻辑与 UI 粘合代码纠缠不清。可复用组件被从头重写。一个补丁会破坏另一个补丁。人们对该功能的信心下降,对 AI 工作流程的信任也逐渐减弱。
这并不罕见——这是优先考虑速度而没有结构化的可预见结果。
向氛围工程左移 解决方案不是拒绝人工智能,而是改进我们使用人工智能的方式。
氛围工程保留了人工智能的生成能力,但将其嵌入到结构、意图和约束之中。开发人员承担了新的角色:他们定义行为、指定约束并协调专用代理——不仅生成代码,还负责设计软件。
开发人员不再提示“编写计费函数”,而是引导AI:“扩展现有的 processInvoice() 逻辑,以支持基于使用情况的计费层级。使用 utils 中的 formatCurrency()。应用 subscriptions.ts 中使用的相同访问检查。”
现在,人工智能不再是自由职业者了。它在有界限、有背景、有责任的情况下运作。
Vibe工程意味着代理能够解析您的代码库、理解您的架构并智能地复用组件。代码不仅能运行,还能完美适配。测试从一开始就包含在内。采用安全默认值。遵循模式。
结果如何?代码可以提交到 PR,进行推理和扩展。软件演进清晰。开发流程可扩展且不会中断。
这就是氛围工程的核心:从即兴演奏到管弦乐的编排。你并非要亲自编写每一句歌词——而是要设计一个系统来编写、检查,并使其经得起时间的考验。
开发人员角色的转变:从作者到策划者 为了成功扮演这一新的协调角色,您应该采用以下四个关键做法:
超越任务本身——思考系统 。不要只解决一个工单。问问系统需要改进哪些部分才能清晰持久地支持这一变更。你应该创建一个新的抽象、升级一个共享实用程序,还是重构一个核心服务?要系统地思考,而不是只局限于局部。 在开始之前,请问:缺少什么概念或层才能使此功能自然地得到支持? 添加技术债务清理或抽象升级作为功能交付的一部分。 制定您希望 AI 遵循的规则 在生成代码之前,请定义您的 AI 助手必须遵循的架构标准、样式约定和工作流程期望。这些可能包括命名规则、首选目录结构、抽象边界或代码库的受保护区域。有些工具会自动推断这些规则,而有些则依赖于明确的指导。但是,在任何情况下,您都应该明确这些期望,以便 AI 能够像团队成员一样编写代码。 记录代码库遵循的规则,并将其转化为 AI 可以使用的约束,可以作为规则,也可以作为您在每个任务中不断引用的文档。 引导 AI 重用——并主动改进。 引导 AI 专注于代码库中现有且干净的部分,排除遗留或弃用的代码。明确引用可重用的组件、实用函数和可扩展的服务。目标是从最强大的基础开始扩展代码库,并遵循 DRY 原则。有些平台可以自动检测这些重用机会,而有些平台则需要开发人员精心策划的上下文。无论如何,您的方向决定了智能体是增强还是削弱系统。 不要止步于复用——鼓励代理评估并改进其接触到的内容。如果它在复用组件中发现重复、紧密耦合或过时的逻辑,就应该进行相应的标记和升级。由于生成式人工智能能够快速实施,您可以将小型基础设施升级纳入日常任务中。这种思维模式将人工智能从单纯的任务执行者转变为持续的系统改进者。
确定代码库的哪些部分是共享逻辑的“真相来源”——并在提示中积极引用它们,而不仅仅是让人工智能去猜测。 要求人工智能在重用代码时提出改进建议:“如果这个实用程序看起来过时或有缺陷,请重构它以与 X 保持一致。” 采用实践,揭示未说出口的问题,实现真正的协同 精益 测试驱动开发 (TDD)。既然人工智能能够以最小的摩擦生成测试,您就应该将测试优先的工作流程作为您的默认设置。这不仅仅是为了在事后发现错误,而是为了在实施开始之前就识别出不一致之处。通过要求人工智能首先根据您的意图编写测试,您可以在流程早期发现任何假设、矛盾或模糊的逻辑。TDD 强制清晰度。它将不确定性转化为可执行的期望,并确保每个实施都基于共同的理解。最终结果是软件不仅可以运行,而且可以长期保持可维护性和测试覆盖率。 在编写任何实现代码之前,提示 AI 生成描述该功能预期行为的测试。 仔细检查生成的测试——它们反映了 AI 如何解读你的意图。在开始编码之前,根据需要澄清或重新构建,以解决任何不匹配之处。 让这成为你的默认习惯:先测试,再构建。它从一开始就使人与机器保持一致。 与不断发展的代码库保持同步。 使用 AI 工具来汇总 PR 并跟踪代码的演变。积极阅读这些摘要。虽然代理能够完美地掌握每一次变更,但人类却无法做到。您需要投入精力来保持架构意识,尤其是在 AI 加速开发速度的今天。了解整个系统的变化对于做出明智的决策和避免偏差至关重要。
订阅合并的 PR 摘要并每天花少量时间
浏览它们,这是值得的。 这些技术定义了现代软件协调器:在系统中思考、定义意图、使用人工智能作为协作者(而不仅仅是代码生产者)并在构建时考虑未来需求的人。
少一些即兴演奏,多一些管弦乐的编排。这才是我们真正能够维护的未来。

评论