AI 辅助软件工程的巴别塔隐喻
AI 辅助软件工程的巴别塔隐喻
AI Agent 存在导致共享架构理解崩溃的风险
AI 辅助编程极大地提高了单个开发者修改代码库的速度,但它威胁到了共享的概念理解——即允许团队在大规模软件项目中进行协作的“共享语言”。虽然 Agent 可以生成功能性代码并使测试通过,但它们消除了必要的摩擦(例如代码审查和技术讨论),而这些摩擦在历史上曾是同步团队对系统心理模型(mental model)的手段。
软件项目的“共享语言”
在大规模工程中,主要约束力并非代码生产的速度,而是人们协调其对系统理解的能力。这种共享语言并非像 Python 或英语这样的编程语言或口语;相反,它是一种对以下内容的集体理解:
- 概念含义: 特定术语和抽象在领域内实际代表什么。
- 系统边界: 一个模块在哪里结束,另一个模块在哪里开始。
- 不变性(Invariants): 为了使系统保持稳定,哪些规则必须始终成立。
- 所有权与意图: 谁负责特定的组件,以及为什么系统被设计成目前的形状。
这种理解通常是通过“生产性摩擦”锻造的:阅读他人的代码、提出澄清性问题,以及在代码审查期间为一项变更进行辩护的过程。这种摩擦确保了开发者的心理模型与团队其他成员的保持一致。
“Vibecoding” 与 Agentic Friction 的悖论
AI Agent 消除了迫使人类进行同步的摩擦。开发者现在可以要求 Agent 实现一个功能(例如,添加 OAuth 或 caching),而无需与受影响模块的所有者进行任何讨论。由于 Agent 可以生成看似合理的解释,且代码可能可以编译并能通过测试,因此变更被合并,而人类开发者从未获得该系统部分的共享心理模型。
这导致了一种状态:即使共享的架构语言正在崩溃,建设仍在继续——“塔仍在不断升高”——系统变成了一集合的局部合理但全局不连贯的变更集合。
关于“不连贯的塔”的观点
社区讨论强调了与这种软件生产模式转变相关的若干风险和潜在缓解措施:
智慧的丧失: 有人认为 AI 拥有“零智慧的智能”,这意味着它可以解决一个局部技术问题,而不理解该解决方案是否适合项目的长期健康。
“Lisp Curse” 的类比: 有一种与“Lisp Curse”的类比,即一种语言使得构建个性化工具变得如此容易,以至于开发者失去了在通用、标准化的产物上进行协作的动力。
未审查代码的恐怖: 开发者们注意到,“vibecoding”(通过感觉/提示词进行编程而不进行深度审查)往往会导致“恐怖...