Parsimony 项目提出了一种观察 AI 编程模型的方式:利用基准已经公开的代码补丁,统计模型为完成任务新增了多少代码。项目方指出,现有基准衡量解题率和成本,却没有对多余代码设置惩罚,而多余代码会增加代码库长期维护的难度。Parsimony 将关注点放在代码增量上,同时明确提醒:代码更少,并不一定意味着更好。
Parsimony 统计的是「编码单元」,包括语句、调用、比较、名称和字面量等语法元素。它不按代码行数计量,因此把多段代码挤在同一行不会获得统计上的优势。删除的代码也会被扣减,计算方式为「净增单元 = 新增单元 − 删除单元」。
具体做法是,将每个补丁应用到对应任务的代码上,再解析每个被修改文件的前后两个版本,整个过程不运行代码。统计范围目前仅限 Python,测试、文档和生成文件均被排除。任务是否通过,直接采用 SWE-bench 已公布的结果,不重新运行测试。
按照项目页面的说明,模型排名依据其在已解决任务上的平均净增单元,数值越小,位置越靠前。页面另有「Net units added (mean)」指标,其统计范围也包括失败尝试;「Measured」则表示能够完成代码量测量的已解决尝试数量。这些指标的统计口径并不完全相同。
所有模型均使用 mini-SWE-agent。项目方同时指出,即使采用同一个 agent,agent 本身仍然会影响最终写入多少代码,因此页面也将这一点列入方法局限。
Parsimony 明确表示,编码单元衡量的是代码体量,不衡量可读性或设计。项目方报告,在模型数量达到 26 个及以上的榜单中,写出更多代码的模型往往也能解决更多任务,两者的 Spearman 相关系数为 0.33 至 0.60。
页面还用「检查是否存在负数」举例:一种写法先设置标记变量,再遍历数值、判断并更新标记;另一种直接使用 any 和生成器表达式。两段代码返回相同结果。这个示例展示了相同功能的不同代码表达方式,而项目对指标的界定仍是体量,并未把更短的实现直接等同于更好的设计。