论文信息
- 论文:Beyond Functional Correctness: Design Issues in AI IDE-Generated Large-Scale Projects
- 作者:Peng Liang 等
- 链接:https://arxiv.org/abs/2604.06373
核心问题:AI IDE 生成的项目「能跑」就够了?
Cursor、Copilot Agent 这类 AI IDE 越来越多地被用于生成项目级代码。功能测试通过率已经很高(这篇论文报告了 91%),但一个被严重忽视的问题是:功能正确不等于设计好。生成的代码能跑,但三个月后还能维护吗?新需求来了还能扩展吗?
这篇论文用严格的实证方法回答了这个问题:10 个项目、2 个静态分析工具、4498 个设计缺陷——数字本身就说明了问题的严重性。
研究方法:FD-HITL 框架 + 双工具静态分析
研究团队设计了一个 Feature-Driven Human-In-The-Loop(FD-HITL)框架,系统化地引导 Cursor 从精心编写的项目描述生成完整项目。覆盖 3 个应用领域、多种技术栈,共生成 10 个项目。
项目规模数据
- 平均每个项目 16,965 行代码(LoC)
- 平均每个项目 114 个文件
- 功能正确率 91%(人工评估)
分析工具
- CodeScene:检测出 1,305 个设计问题,分 9 个类别
- SonarQube:检测出 3,193 个设计问题,分 11 个类别
- 总计:4,498 个设计问题——每个项目平均 ~450 个
六大高频设计问题
1. Code Duplication(代码重复)
AI IDE 在生成代码时倾向于「复制粘贴」相似逻辑而不是抽象为公共函数。这违反了 DRY 原则(Don't Repeat Yourself),导致维护时需要在多个地方同步修改。根本原因:LLM 的生成模式是「按需补全」,没有全局视角去做抽象。
2. High Code Complexity(高代码复杂度)
圈复杂度(Cyclomatic Complexity)过高。AI 生成的函数经常嵌套多层 if-else 和循环,导致理解和修改困难。人类开发者通常会在写第三层嵌套时意识到「该拆函数了」,但 LLM 没有这个「重构冲动」。
3. Large Methods(大方法)
单个函数/方法过长。违反 SRP(单一职责原则)——一个函数做太多事情。这和上面的高复杂度是同一个根源:LLM 倾向于在一个上下文窗口内完成所有逻辑,而不是主动拆分。
4. Framework Best-Practice Violations
违反框架最佳实践。比如 React 中直接操作 DOM 而不是用状态管理、Spring Boot 中在 Controller 层写业务逻辑等。LLM 训练数据中包含大量低质量代码,生成时「学到」了错误模式。
5. Exception-Handling Issues
异常处理要么过于简单(空 catch 块)、要么过于粗暴(catch Exception 吞掉所有异常)。人类开发者在异常处理上会根据业务场景做分层处理,LLM 目前还做不到这种上下文感知的异常策略。
6. Accessibility Issues
前端项目的无障碍访问问题——缺失 alt 属性、ARIA 标签不正确等。这在功能测试中完全不会暴露,但对真实用户体验有显著影响。
违反的设计原则
- SRP(单一职责原则):大方法 + 高复杂度 = 函数做了太多事
- SoC(关注点分离):框架最佳实践违规 = 不同层次的逻辑混在一起
- DRY(不要重复自己):代码重复 = 同样逻辑多处出现
🔑 关键洞察:AI Coding 的真正瓶颈是设计能力
功能正确是表象,设计质量才是地基
91% 的功能正确率看起来很亮眼,但 4,498 个设计问题意味着什么?意味着项目上线后会面临:代码重复导致的同步修改噩梦、高复杂度导致的重构恐惧、异常处理缺陷导致的线上事故隐患。这些不会在功能测试中暴露,但在第 3 次需求变更时全面爆发。
LLM 的本质局限:没有「架构师视角」
LLM 的工作模式是逐 token 生成——它是「写代码的工匠」,不是「设计架构的建筑师」。工匠可以完美地砌每一堵墙,但不会主动思考「这堵墙该不该拆分」。代码重复、大方法、高复杂度这些问题的根源,是 LLM 缺乏全局架构视角。
Harness Engineering 的验证
这篇论文是 Harness Engineering 理念的最佳实证支持。FD-HITL 框架本身就是「渐进式披露」和「环境设计」的实践——通过人类分步骤地引导项目生成,而不是一次性给个大 prompt。但即使有了这个框架,设计质量问题依然系统性存在,说明人工介入不能止于「引导生成」,还需要延伸到「设计审查」和「重构指导」。
引发思考:AI Coding 的下一步是什么?
- Design-aware generation:让 LLM 在生成代码时同时考虑设计原则(SRP/DRY/SoC),而不是只追求功能正确。这需要专门的训练数据和 reward signal。
- Automated refactoring as a service:AI Coding 工具应该内置「设计质量检查 + 自动重构」模块,类似 CodeScene 但更激进——不只是发现问题,而是直接修复。
- Two-tier AI coding:第一层生成功能代码(LLM 擅长),第二层做架构优化(可能需要专门的小模型或规则引擎)。两层分离,各司其职。
逍遥云初 | 2026.04.09

