核心发现
量化揭示约束衰减现象:L0→L3 平均 30pp 性能损失,数据层缺陷驱动 45% 逻辑失败,框架选择导致 25-32pp 性能极差
研究围绕三个研究问题组织分析,每个问题通过系统性实证数据回答。
RQ1: 约束累积对性能的影响
主结果表格的解读
表 2 总结主要结果。每个单元格报告断言通过率 A% 和 pass@1 (%),按任务计算后平均。三个高成本模型(MiniMax-M2.5, Kimi-K2.5, GPT-5.2)因成本限制在 16 任务子集评估。
子集代表性验证: 在 6 个全集配置上重新评估子集任务,A% 分数与全集任务呈现 Pearson r=0.98 和 Spearman ρ=0.95 的相关性(p<10^-12, N=24)——这确认子集数据可靠反映全集表现。
基线表现:无约束下的 Agent 能力
无结构约束(L0)时,Agent 表现优异:
| 配置 | L0 A% | 评价 |
|---|---|---|
| Qwen3-Coder-Next + Mini-SWE | 86.4% | 紧凑代码专家的强能力 |
| MiniMax-M2.5 + Mini-SWE | 88.6% | SOTA 开源的高性能 |
| Kimi-K2.5 + Mini-SWE | 85.4% | 前沿开源的可靠表现 |
这确认紧凑代码专家如 Qwen3-Coder-Next 在给予完整架构自由时,能够处理端到端后端生成。较小 agentic 模型和非专家模型即使在 L0 也挣扎(如 Devstral-Small 近零 Assert%)。
约束衰减的核心发现
结构约束导致陡峭、普遍的性能退化。
量化发现: 限制于表 2 中 8 个能力配置(L0 A% > 50%),A% 从 L0 到 L3 平均下降 30 个百分点——基线性能的 40% 相对损失。
xychart-beta
title "约束级别与性能衰减(能力配置平均)"
x-axis ["L0", "L1", "L2", "L3"]
y-axis "A%" 0 --> 90
bar [70, 55, 38, 40]
衰减幅度解读: 平均下降 30pp,但跨级别方差显著,精确效应大小应谨慎解读。然而,中心定性发现稳健:添加结构约束持续降低性能。
最大衰减案例的深度分析
最差案例: OpenHands + Qwen3-Coder-Next 损失 45pp(62% 的 L0 分数)。
这一极端衰减的原因分析:
- Qwen3-Coder-Next 作为代码专家,其训练数据可能偏向无约束的自由生成
- OpenHands 的丰富工具集在约束场景可能引入更多决策分支,增加错误概率
- 两者的组合在无约束时协同良好,但约束密度破坏协同效应
最强韧性配置: OpenHands + MiniMax-M2.5 仅下降 17pp。
韧性原因分析:
- MiniMax-M2.5 的训练可能包含更多约定密集代码库
- OpenHands 的终止准则调整可能更适合约束场景
- 配置间协同在约束场景仍保持有效
A% 与 pass@1 的差距分析
A% 和 pass@1 间差距持续大:即使最强 L3 配置(OpenHands + MiniMax-M2.5)达 78.6% A% 但仅 8.3% pass@1。
原因: 单一断言失败使整个运行归零。这反映 LLM Agent 仍缺乏跨文件一致性和约束遵循所需的部署成熟度——无人工干预时,“90% 正确”仍等于”不可用”。
指标选择意义: pass@1 在生成任务评估中噪声较大,A% 更稳定地捕获部分进展,因此为主要指标。
Scaffold 效应的对比分析
Agent scaffold 选择有实质性影响:
| Scaffold | GPT-5-mini | MiniMax-M2.5 | Qwen3-Coder-Next |
|---|---|---|---|
| Mini-SWE | 下降 28pp | 下降 30pp | 下降 40pp |
| OpenHands | 下降 14pp | 下降 17pp | 下降 45pp |
发现: OpenHands 在 GPT-5-mini 和 MiniMax-M2.5 上优于 Mini-SWE-Agent,但在 Qwen3-Coder-Next 上劣于 Mini-SWE-Agent。然而,约束衰减趋势在两种 scaffold 上一致。
单约束边际效应的量化
表 3(a) 报告每个约束的边际效应,采用配对差分设计。
xychart-beta
title "单约束边际效应(配对差分)"
x-axis ["Clean Arch", "PostgreSQL", "SQLite", "SQLAlchemy", "Sequelize"]
y-axis "A% 变化" -25 --> 5
bar [-9.1, -19.3, -14.3, -1.5, -0.6]
核心发现: 指定数据库引擎(对生产就绪后端至关重要)是最具影响力的约束。PostgreSQL 造成 -19.3pp 平均损失,SQLite -14.3pp。
架构约束效应: Clean Architecture 添加 -9.1pp 显著惩罚,与分层分离的执行开销一致。
ORM 约束的意外结果: ORM 效应较小(SQLAlchemy -1.5pp,Sequelize -0.6pp)。对 GPT-5.2,ORM 约束甚至减少歧义,使数据访问模式更明确。
为何 ORM 边际效应小不矛盾于数据层困难: ORM 边际效应计算相对于已包含数据库的基线——它仅测量”强制 ORM vs 原始 SQL”的成本,而非”数据层交互本身的困难”。后者在两种场景都高;仅在不同场景以不同方式表现(ORM 场景为 ORM 运行时错误,非 ORM 场景为原始 SQL 错误)。
RQ2: 框架敏感性分析
框架作为固定基线约束
框架是每个级别都存在的约束,一个自然问题是:框架选择有多重要?
所有 8 框架实现相同 API 规约并共享相同测试套件,实现控制性比较。
框架性能排名的实证数据
表 4 报告跨约束级别聚合的框架 A% 数据。
| 框架 | 平均 A% | 性能层级 |
|---|---|---|
| Express | 51.4% | 第一梯队 |
| Koa | 50.7% | 第一梯队 |
| Flask | 49.3% | 第一梯队 |
| aiohttp | 38.4% | 第二梯队 |
| Fastify | 31.7% | 第二梯队 |
| Django | 25.4% | 第三梯队 |
| FastAPI | 24.2% | 第三梯队 |
| Hono | 18.5% | 第四梯队 |
xychart-beta
title "框架性能分布(平均 A%)"
x-axis ["Express", "Koa", "Flask", "aiohttp", "Fastify", "Django", "FastAPI", "Hono"]
y-axis "A%" 0 --> 60
bar [51.4, 50.7, 49.3, 38.4, 31.7, 25.4, 24.2, 18.5]
第一梯队的共同特征
Express、Koa 和 Flask 形成清晰第一梯队(平均 51.4%, 50.7%, 49.3% A%),共享极简、显式 API 表面,无隐式约定。
Express: Node.js 最小框架,中间件链显式声明,无隐式配置发现。
Koa: Express 团队的精简重构,中间件更清晰,无内置功能强制约定。
Flask: Python 极简框架,路由显式定义,无 Django 式自动发现。
第三梯队的约定障碍
Django 和 FastAPI 被隐式配置惩罚:
Django 的约定障碍: 约定驱动结构和自动发现(models.py 自动注册,settings.py 隐式配置)需要 Agent 理解框架特定约定而非仅代码逻辑。
FastAPI 的类型障碍: 类型提示驱动的验证(Pydantic 模型强制类型检查)增加约束密度——Agent 需同时处理路由定义和类型 schema 定义。
Hono 的意外表现
Hono 尽管有类似 Express 的 API 表面,却以 18.5% 平均 A% 落后。
原因分析: Hono 针对边缘运行时(Edge Runtime),在 Node.js 上需要兼容适配器。这一设置步骤可能在训练数据中低覆盖,导致 Agent 不熟悉边缘适配配置。
模型-框架交互的异质性
排名随配置变化:
- OpenHands + GPT-5-mini:Koa 和 Express 主导
- Qwen3-Coder-Next + Mini-SWE:Flask 主导
这表明不同模型可能在不同框架上有预训练偏差,但轻量级框架总体优于约定密集框架的定性发现稳健。
RQ3: 失败根因的系统分析
分析方法
研究对 Qwen3-Coder-Next(194/240 失败,全 80 任务集)和 MiniMax-M2.5(28/48 失败,16 任务子集)的失败运行执行分析,均使用 Mini-SWE-Agent。
分类方法: 使用 GPT-5.2(temperature 0)基于最后 20 个轨迹转数、行为测试结果、服务器日志和静态验证器输出分类每个失败。
分类验证: 在 Qwen3-Coder-Next 逻辑错误的 50 个分层样本上验证 judge vs 手动标签,获 Cohen’s κ=0.975——服务器日志和测试输出的明确信号辅助高一致性。
失败分类体系
表 5 展示两级分类体系:六个粗类别,逻辑错误仅进一步细分为六个根因。
粗类别的分布特征
两个模型共享近乎相同的分布:
| 类别 | Qwen3-Coder-Next | MiniMax-M2.5 |
|---|---|---|
| 逻辑错误 | 70.6% | 71.4% |
| 服务器启动失败 | 12.4% | 21.4% |
| 不完整实现 | 9.3% | 3.6% |
| Schema/格式错误 | 3.6% | 3.6% |
| 循环卡死 | 3.1% | 0% |
| 约束违规 | 1.0% | 0% |
核心发现: 逻辑错误占失败 ~71%——服务器启动并注册正确路由,但行为不正确。这与 §5.1 中 A% 和 pass@1 的持续差距一致。
逻辑错误的根因细分
研究将 157 个逻辑错误分类为六个根因类别:
pie title "逻辑错误根因分布(Qwen3-Coder-Next)"
"错误查询逻辑" : 25.5
"ORM运行时错误" : 21.2
"认证配置错误" : 22.6
"框架特性阻塞" : 9.5
"业务逻辑缺陷" : 11.7
"状态传播失败" : 9.5
错误查询逻辑(25.5%): SQL 查询执行但返回错误结果——错误连接、错误过滤、方言不兼容操作符。
ORM 运行时错误(21.2%): 查询逻辑概念正确但因 ORM API 误用崩溃。
认证配置错误(22.6%): 令牌处理或头解析错误导致 401 响应。Qwen3-Coder-Next 的显著弱点(vs MiniMax-M2.5 的 5%)。
数据层缺陷的主导地位
MiniMax-M2.5 的逻辑错误由单一框架特性阻塞主导(50%)——Fastify 拒绝空体 POST 请求,被较小子集放大。排除此异常,两个模型在共享失败谱系上趋同,数据层缺陷领先。
数据层缺陷占比: 错误查询逻辑 + ORM 运行时错误 = ~45% 逻辑失败。这确认数据库约束施加最陡峭惩罚。
认证配置的模型特异性
认证配置错误是 Qwen3-Coder-Next 的显著模型特异性弱点(22.6% vs 5%)——主要来自错误令牌前缀解析。
推测原因: Qwen3-Coder-Next 作为代码专家,可能在认证逻辑实现上训练覆盖不均衡——偏向数据查询而非认证协议处理。
框架特性阻塞的识别
正确应用代码被框架特定默认配置阻塞:
Fastify 的空体阻塞: POST 请求无 body 时 Fastify 拒绝处理。Agent 需添加特定配置绕过,但可能未在训练数据中高覆盖。
Django 的中间件顺序: 认证中间件顺序错误导致请求未正确处理。约定驱动框架的隐式顺序依赖。
RQ1-RQ3 的综合解读
三个研究问题的回答形成连贯图景:
- 约束衰减是普遍现象:平均 30pp 损失,最大达 45pp
- 数据库约束是主要驱动:边际效应最大,根因分析确认数据层缺陷主导
- 框架选择是敏感性轴:轻量级框架 25-32pp 优于约定密集框架
- 失败集中在数据层和认证:45% 逻辑失败来自数据交互错误
这些发现对实践者的直接启示:当前 Agent 在无约束原型开发可靠,但在受约束生产开发仍需大量人工干预。