开源基准 Parsimony 分析现有编程评测的补丁,以语句、调用、名称和字面量等语法单元衡量代码净增量,避免压缩行数造成误导。新模型的自测仅覆盖 3—10 个任务,未纳入排名。
现有 benchmark 衡量的是任务解决率和成本,却不会对冗余代码扣分,而这些代码会让代码库在长期维护中变得更难处理。Parsimony 衡量的是 AI 模型增加了多少代码。
它利用 benchmark 已经公开的 patch,统计代码单元:也就是语句、调用、比较、名称和字面量等语法元素。它不统计行数,因此把代码挤在一起不会获得奖励;删除的代码也会扣除:净单元数 = 新增 − 删除。
图表 散点图:比较两个指标 柱状图:展示一个指标 显示我的运行结果
模型按其已解决任务中新增净单元数的平均值排名,数值越低越靠前。“新增净单元数(平均值)”这一指标也包含失败的尝试。“已解决”数据来自 SWE-bench Verified,不会重新运行测试。“已测量”表示有多少次成功解决任务的尝试能够完成代码量测量。
Artificial Analysis Intelligence Index 是一项外部评分,按模型和 reasoning effort 匹配。它不会影响排名。
以淡色显示的模型,是我在前 3–10 个 DeepSWE Python 任务上运行的:OpenAI 模型使用 pi,Anthropic 模型使用 Claude Code,并用各个任务自带的测试评判结果。这些结果未经验证,也不参与排名。GPT-5.6 Sol 用两种方式都运行过:我运行时新增的代码量,是其公开运行结果的 0.88 倍。
每个 patch 都会应用到对应任务的代码上,然后对每个发生变更的文件,分别解析修改前后的版本。整个过程不会执行任何代码。
测试、文档和生成文件不纳入统计。只测量 Python。
通过或失败的判定来自 SWE-bench 已公开的结果,不会重新运行测试。
更少并不总是更好:代码单元衡量的是大小,而不是可读性或设计质量。
编写更多代码的模型,也往往能解决更多任务(在包含至少 26 个模型的榜单上,Spearman 相关系数为 0.33–0.60)。
每个模型都使用同一个 Agent(mini-SWE-agent),但 Agent 仍然会影响最终编写的代码量。
你有其他 benchmark 的代码量数据吗?下载示例文件,填入你的结果,再打开它,就能得到同样的图表和表格。文件始终保留在你的浏览器中。格式说明及分享方法。
下载示例 JSON 清除
这两段代码返回相同的结果。
def has_negative(values):
found = False
for value in values:
if value < 0:
found = True
return found
def has_negative(values):
return any(value < 0 for value in values)