跳到主要内容

AI 系统设计顾问:它能做对什么、会自信地做错什么,以及如何分辨

· 阅读需 10 分钟
Tian Pan
Software Engineer

一个三人团队花了整整一个季度,为一个日活跃用户仅 200 人的应用实现了事件溯源架构。这套架构技术上无懈可击,运维上却是一场噩梦。设计方案来自 AI 的推荐,团队之所以接受,是因为推理听起来流畅、权衡分析看似严谨,而最终构建出来的系统也完全符合高级工程师架构图上的样子。

这个故事如今已成为一种警示性范式,而非孤例。AI 在特定的、可识别的场景下能够提供真正有价值的架构输入——而在从外部看起来几乎相同的情况下,它也会给出自信满满却大错特错的建议。这两者之间的差距,如果你把 AI 当成答案机器,就几乎无从察觉;但如果你把它当成思维伙伴,则完全可以驾驭。

AI 究竟对架构了解多少

大型语言模型在海量软件工程内容上接受过训练:系统设计面试、技术大会演讲、设计文档、工程博客、学术论文以及 Stack Overflow 讨论串。这种训练使模型内化了有据可查的模式中经典的权衡取舍。

问 AI 比较 Kafka 和 RabbitMQ 作为消息队列的差异,你会得到关于吞吐量特性、持久化语义、运维复杂度和消费者组模型的扎实总结。问它在分布式缓存场景下最终一致性与强一致性的区别,你会得到准确的说明。问它列举朴素 Saga 实现中的故障模式,它会给出真实的答案。

这是真正的价值。模式层面的知识广泛适用、在不同问题场景中相对稳定,而且往往利用不足——因为工程师们要么没读过经典资料,要么身边没有可以共同梳理权衡的同事。AI 很好地填补了这一空白。

问题在于,当问题从"这个模式有哪些权衡?"转变为"哪个选项适合我的情况?"时,麻烦就开始了。

约束盲点问题

架构的本质是选择约束,而非选择模式。两个团队可以采用完全相同的微服务拆分方式,却得到截然不同的结果——一个如鱼得水,另一个举步维艰。差异在于运维成熟度、团队规模、部署流水线就绪程度、SLA 容忍度,而非模式本身。

AI 了解模式,但不了解你的约束。

当你问"通知服务应该怎么设计架构?"时,你的意思是:在我们的团队构成、现有基础设施、时间压力和故障预算下,什么才是最合适的选择?模型回答的却是另一个问题:鉴于通知服务的存在,以及文档和博客中出现最多的模式,以下是几种选项。

答案听起来很有针对性,因为框架是对的,但内容在实施时才会以隐蔽的方式暴露错误——你会发现推荐方案假设了一个你没有的专职 DevOps 团队、一个你没有运行的消息代理,或者一个与你 SLA 不符的延迟预算。

研究数据触目惊心:47% 的企业工程师表示曾基于 AI 输出做出至少一个后来被证明错误的重大架构决策。微服务采用率下降了约 24%,原因是那些跟随 AI 建议走向复杂分布式架构的组织,发现自己构建了无法运维的复杂性。

幻觉在哪里看起来像架构建议

最危险的失败模式不是明显错误的答案,而是听起来合理、却包含一个对你的场景来说错误的关键假设的答案——而这个假设被周围准确的观察所掩盖,降低了你的警惕性。

一个团队正在构建一个读密集型分析仪表盘,向 AI 寻求缓存策略建议。AI 正确地指出边缘缓存可以降低数据库负载,正确地解释了缓存失效策略,也正确地说明了基于 TTL 和事件驱动失效之间的权衡。然后它推荐了一种事件驱动的失效方案——这需要从每个写入路径发布事件,而这恰好需要对现有持久化层进行代价高昂的重构。

这个推荐在抽象层面架构上是自洽的,但对这个团队来说运维代价极高。AI 无法知道这一点,而周围建议的自信语气淹没了真正的信号。

这种模式是一贯的:AI 默认推荐更复杂的选项。训练语料过度代表了那些选择雄心勃勃的架构并写出来的团队,因为选择无聊务实方案的团队很少会发博客。事件溯源、CQRS、微服务和高级分布式模式在语料库中频繁出现;简单的关系型数据库 CRUD 出现较少,几乎从不作为可见权衡分析的结论出现。模型的先验系统性地偏向复杂性。

另一个记录在案的失败:当被要求评审已有设计时,AI 会可靠地报告其"没问题"。语言模型中的自我评估没有经过校准——模型无法区分"这个设计是稳健的"和"这个设计模式与我认为是经典的模式相匹配"。那些问"这个架构看起来对吗?"并得到确认的团队,得到的不是架构评审,而是模式匹配确认。

能产出更好结果的结构性做法

加载中…
References:Let's stay in touch and Follow me for more thoughts and updates