HeadlinesBriefing favicon HeadlinesBriefing.com

编码已解决,下一步?衡量代码草率度

Hacker News •
×

LLM在生成代码方面几乎已经达到完美,但这并不是故事的终点。代码在形式上正确,并不意味着它没有引入不必要的抽象、制造重复,或者整体上做出糟糕的决策。这并不是什么开创性的观察,大多数曾经用“氛围编程”做过项目的人都意识到,每增加一个功能有时会导致代码行数(LOC)爆炸式增长。这导致人类能动性的丧失,因为在每月增加数百万行代码的项目中,人类很难跟上节奏。有些人可能会说这根本不是问题,因为他们信任自己的代理来处理。我有个坏消息要告诉你,代理实际上也无法处理这些草率代码。

由于我的物理学背景,我一直采用实验/定量的方法来解决问题。当我开始在Earendil工作时,任务是弄清楚如何衡量代码的草率程度,我的本能反应是先深入研究文献,然后看看其他公司在做什么。坦率地说,除了一些有洞见的研究论文外,我对目前行业似乎如此“凭感觉”感到失望。在我的研究和X上,我不断被诸如“端到端编码代理”、“不只是建议代码——而是直接交付代码的AI”或“无需人类级别成本的人类级别评估”等信息轰炸。这些就像所有好故事一样,都包含一丝真理。LLM能够写出几乎完全正确的代码。这是因为代码的可扩展性和可验证性。让LLM生成代码,然后让隐藏测试检查这些代码,是相当直接的,这会产生清晰的奖励信号。与此形成鲜明对比的是,检查代码的“草率程度”通常需要人类的直觉和品味,这总体上是一项极其困难的任务。

我认为说明原因的最好方式是逐一探讨衡量草率程度的可能方法。AI作为评判者:这可能是行业中评估代码质量最常见的方式,但根据我的观察,它很少奏效。最天真的做法,即询问模型代码从1到10分有多好,基本上等同于随机数生成器。更复杂的方法,即尝试给评判模型两个解决方案A和B,然后让它决定更喜欢哪个,缺点是当你重命名解决方案时,模型会改变其偏好。我在这里有点开玩笑,对于更大的模型,这种效应没有那么明显,但主要观点仍然成立。让LLM评判它们写的代码并不能替代适当的评估。尽管有一些有趣的方法,如使用评分标准或让LLM编写测试,但它们距离真正消除草率代码还有很长的路要走。

人类评判AI:如果我们忽略软件工程师质量存在巨大差异这一事实,这将是确保代码保持人类可读性的最佳解决方案。缺点是这对于训练AI或拥有多个模型提供商和框架的大型基准测试来说不可扩展。最简单的方法:在我的研究和测试中,仅仅采用代码行数的变化作为草率程度的指标,出人意料地有效,但具有讽刺意味的警告是,如果我们开始针对它进行优化,它就不再是一个有意义的衡量标准。接下来的两个衡量标准是由论文Slop Code Bench介绍给我的,它们看起来很有前景,因为它们能够很好地将遗留代码库与LLM草率代码区分开来。冗余度:试图衡量重复和不必要的冗长行的数量。侵蚀度:试图衡量代码库的质量有多少集中在少数几个大型复杂函数中。

关键实体:公司:Earendil

FAQ:衡量代码草率程度的主要挑战是什么?

主要挑战是草率程度通常需要人类的...

FAQ Q:衡量代码草率程度的主要挑战是什么?

FAQ A:主要挑战是草率程度通常需要人类的直觉和品味,这使得自动评估变得困难。AI评判者不可靠,而人工评估不可扩展。