Can AI Agents Generate Microservices? How Far are We?

该研究评估了 AI 代理生成微服务的能力,发现尽管其生成的代码质量较高且能较好遵守 API 契约,但在功能正确性上仍存在不一致性,表明完全自主的微服务生成尚未实现。

Bassam Adnan, Matteo Esposito, Davide Taibi, Karthik Vaidhyanathan

发布于 Wed, 11 Ma
📖 2 分钟阅读☕ 轻松阅读

Each language version is independently generated for its own context, not a direct translation.

这篇论文就像是在做一场**“超级实习生”的入职大考**。

想象一下,你是一家大型科技公司的架构师(老板),你手下有一群由人工智能(AI)驱动的“超级实习生”。你的任务是:让这些实习生去写微服务(Microservices)。

🏗️ 什么是“微服务”?(先打个比方)

如果把一个大型软件系统比作一家超级大餐厅

  • 传统单体应用就像是一个全能厨师,他一个人负责切菜、炒菜、摆盘、甚至收银。一旦他生病或忙不过来,整个餐厅就瘫痪了。
  • 微服务架构则像是把餐厅拆分成多个独立的小档口:有的专门负责“炒菜”,有的专门负责“收银”,有的专门负责“送外卖”。每个档口(微服务)都是独立的,它们之间通过**严格的菜单和订单规则(API 合同)**互相沟通。

这篇论文的核心问题就是: 现在的 AI 实习生,能不能独立把这些“小档口”建好,并且让它们能完美配合,不出乱子?


🧪 实验设计:两种“入职场景”

研究者找了 3 个不同的 AI 实习生(Claude Code, Codex, Code Qwen),让他们在两种不同的场景下工作:

场景一:【老员工带教模式】(增量生成)

  • 情况: 餐厅里已经有很多档口在运转了。现在要加一个新的“甜品档口”。
  • 任务: AI 需要看着现有的厨房(代码库),了解大家怎么配合,然后写出新的甜品档口,确保它能和现有的“收银台”、“送餐员”无缝对接。
  • 提示方式:
    • 极简提示(P1): 只给个名字和任务书:“去写个甜品档口,看着点规矩。”
    • 详细提示(P2): 给名字、任务书,还有一份**“老员工写的详细说明书”**(总结),告诉它以前是怎么做的。

场景二:【从零创业模式】(清洁状态生成)

  • 情况: 这是一个全新的商场,没有任何档口。
  • 任务: AI 只能看到一张**“需求清单”**(比如:我们要卖奶茶、要支持扫码支付),然后完全从零开始,自己设计并搭建整个“奶茶档口”,还要确保它以后能跟别的档口配合。
  • 挑战: 没有现成的代码可以参考,全靠 AI 自己猜和创造。

📊 考试结果:AI 表现如何?

研究者让 AI 们写了 144 个微服务,然后进行了严格的“压力测试”(运行单元测试和集成测试)。

1. 谁更聪明?(功能正确性)

  • 在“老员工带教”场景下:

    • 意外发现: 给 AI 看越详细的说明书(P2),它反而越容易犯错!
    • 原因: 就像实习生如果太依赖“老员工写的笔记”,可能会忽略现场的实际变化。相反,只给个简单任务(P1),让 AI 自己去探索现有的代码库,它反而能更好地适应环境,通过率在 50% - 76% 之间。
    • 表现最好的: Codex(GPT-5 的早期版本)和 Claude Code。
  • 在“从零创业”场景下:

    • 大反转: 这次 AI 们表现惊人地好!通过率高达 81% - 98%
    • 原因: 因为没有现成的代码“干扰”,AI 可以完全按照需求清单自由发挥。只要它生成的“奶茶档口”能跟“收银台”对上号(API 合同),就算成功。哪怕它内部结构跟人类写的有点不一样,只要功能对,就能通过。
    • 注意: 这里有个陷阱,AI 生成的代码结构可能跟人类习惯的不一样(比如包名变了),导致人类写的旧测试用例跑不通,但实际功能是对的。

2. 代码质量如何?

  • 更简洁: AI 写的代码通常比人类写的更短、更简单(复杂度更低)。
  • 比喻: 人类厨师可能会写 100 行代码来处理一个切菜动作,AI 可能只用 30 行就搞定了。虽然短,但有时候可能少了点“防御性”(比如没考虑到切到手怎么办),不过在这个实验中,它确实能跑通。

3. 谁更省钱、更快?(效率)

  • 速度:
    • Claude CodeCode Qwen 是“快手”,平均 7-8 分钟 搞定一个档口。
    • Codex 是个“慢性子”,平均要 16 分钟,甚至有一次花了 104 分钟(超时了!),就像有个实习生发呆了一个半小时。
  • 成本:
    • Code Qwen 最便宜,写一个档口只要 3 美元
    • Claude Code 最贵,要 13 美元
    • Codex 居中,但因为它写得啰嗦(输出 Token 多),成本也不低。
  • 结论: 贵的不一定快,快的不一定便宜,而且代码写得长(啰嗦)并不代表质量更好

💡 核心结论:我们离“全自动”还有多远?

  1. AI 能干活,但还没法“完全放手”:
    AI 确实能写出能运行的微服务,代码质量也不错。但是,它经常犯一些“结构性错误”(比如包名不对、配置文件漏了)。就像实习生把“甜品档口”建好了,但把“收银台”的接口搞错了,导致没法结账。
    所以,人类老板(架构师)必须还要在旁边盯着,做最后的检查和修正。

  2. 场景决定成败:

    • 如果是在旧系统里加新功能别给太多说明书,让 AI 自己去“读”代码,效果反而更好。
    • 如果是全新项目,AI 的表现非常惊艳,几乎能独立完成任务。
  3. 数据“污染”是个问题:
    AI 在那些著名的开源项目(比如 GitHub 上很火的)上表现特别好,但在私有的、没公开过的学生项目上表现就差很多。这说明 AI 可能只是“背下了”那些热门项目的代码,而不是真的学会了“怎么思考”。

🚀 总结

这篇论文告诉我们:AI 已经是软件开发的得力助手了,但它还不是那个能独当一面的“首席架构师”。

  • 它能做: 快速生成代码、简化逻辑、在明确需求下从零搭建。
  • 它不能做: 完全理解复杂的上下文、自动处理所有边界情况、不需要人类检查。

未来的方向: 我们需要更聪明的“人类-AI 协作模式”。人类负责定规矩、做最终审核,AI 负责快速执行和生成草稿。就像人类是总指挥,AI 是那个反应极快但偶尔会走神的超级副手