V2EX 前天 14:47
[程序员] AI 评测指北: Vibe Coding 哪家强? Benchmark 搞一把
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文作者对近期火热的 AI 编码工具如 Aider、Cursor、Cline、Continue 等进行了深入评测。作者以“懂 AI 帝”的视角,选择了 SWE-bench 上的一个具体任务(pylint-dev__pylint-6528)进行横向对比。评测方法注重 PROMPT 的一致性和交互过程的控制,并从问题解决能力、UI/UX、性能稳定性及收费等多个维度进行分析。结果显示 Claude Code(原生版)在解决特定问题上表现突出,Aider 和 Gemini Cli 也展现了不错的实力,而其他工具则各有优劣,作者最后也给出了不同场景下的选择建议。

✨ **评测维度与方法**:评测聚焦于 AI 编码工具解决真实软件工程问题的能力,采用 SWE-bench 上的一个具体任务,并严格控制 PROMPT 和交互流程以保证公平性。关键评判标准包括问题是否最终解决、定位准确性、修复方案的有效性以及交互体验。作者拒绝了工具自动运行 lint、unit test 或添加测试的建议,以确保评测的纯粹性。

⭐ **Claude Code 表现亮眼**:在本次评测中,Claude Code 的原生版本在问题定位和一次性修复方面表现出色,交互体验良好,获得了最高的评分。尽管其模型版本(如 Qwen3-Coder-480B 和 DeepSeek-Chat-v3-0324)在同一任务上表现不佳,但原生 Claude Code 的强大能力得到了肯定。

👍 **Aider 与 Gemini Cli 表现稳健**:Aider 在问题定位和修复方面准确且能解决复杂问题,交互简洁,获得较高评价。Gemini Cli 问题定位准确,但修复过程需要多次交互,有时会出现卡顿,综合评分也属中上。两款工具在收费方面也表现出优势,Aider 支持多种模型且有免费额度,Gemini Cli 免费额度也基本够用。

💡 **模型选择至关重要,GUI 工具提供更好控制**:评测强调了不同 AI 模型对结果的巨大影响。同时,Trae 和 Cursor 等 GUI 工具虽然交互过程略显繁琐,但其可接受部分修改的特性提供了更好的可控性,方便用户精细调整。

💰 **收费与适用场景考量**:Claude Code 价格昂贵,适合预算充足或需要频繁处理复杂代码的用户。Aider 凭借模型灵活性和免费额度,成为预算有限或编码需求不那么极致用户的优选。Gemini Cli 和 Trae 目前竞争力稍显不足,但 Trae 的免费排队机制值得关注。

Claude Code 、Gemini Cli 等命令行工具相继发布,这两个月 AI 编码又火出了新高度。我对效率类工具一直都特感兴趣,喜欢折腾和把玩它们,加之这些工具是实实在在提升效率。我去年底接触 Aider 、Cursor 、Cline 、Continue ,就想写篇博客来记录一下我对它们的感受。最近又有些新感触!搞个博客来记录一下。

本来呀,我也只是想写一篇 “Aider 是怎么跑 benchmark 的” 的笔记。但看完了它的跑法之后呢,感觉没啥可聊的。这两天正好看懂车帝搞了个智驾测试,挺有意思(特斯拉是真有点东西?);加上最近几年工作也是搞测试;再加上有好几个朋友说 Claude Code 牛出天际,我就想看看是不是那么回事!

我就充当一回“懂 AI 帝”,来评测一把。

如何评测?

我也知道,要完善的评测一个工具,是很麻烦的。毕竟场景那么多,每个工具都有自己的擅长领域。你看懂车帝的评测,就有很多人喷,但也有很多人顶它。我下面先介绍一下我的评测方法。

我看到的“榜单”有两个,一个是 [Aider LLM Leaderboards][aider-bench],还有一个是 [SWE-bench][swe-bench]。前者可能比较小众,先简单介绍一下后者(让 AI 给我总结一把什么是 SWE-bench )

SWE-bench ( Software Engineering Benchmark )是一个专门用于评估大语言模型( LLM )在真实软件工程任务中表现的基准测试,最初由普林斯顿大学 NLP 团队于 2023 年发布。它的核心任务是:给定一个 GitHub 开源项目的代码仓库和一个对应的 issue (问题描述),模型需要像人类开发者一样,理解问题、定位代码、修改文件,并生成一个补丁( patch ),最终通过该项目原有的单元测试验证修复是否成功。SWE-bench 的关键特点:真实场景:所有任务都来源于 GitHub 上 12 个流行 Python 项目的真实 issue 和对应的 pull request ( PR ),共 2,294 个任务实例。执行验证:采用“Fail-to-Pass”测试机制,即修复前测试失败,修复后测试通过,才算成功。高难度:任务涉及多文件理解、跨模块调用、复杂依赖关系等,远超传统代码补全或算法题。

Aider LLM Leaderboards 虽然小众,但人家评测流程和数据都是开源透明的,我觉得它的数据还是挺有参考价值的。有兴趣的小伙伴可以去看看。

我从 SWE-bench 中选了一个题 [pylint-dev__pylint-6528][pylint-dev__pylint-6528] 来评测这些工具。我选它,是因为看中了这个题的几个特点:

    难度适中。它的难度评级是 15min - 1hour,简单的题是 15min 以内,比如算法题。难的题要好几个小时。这个题的答案要修改两个文件。我觉得这对 Coding 工具是有一些挑战的,只改一个文件在当下这个时间节点,对它们没啥挑战。这个题很好理解。我看了一遍题目的 problem statement ,我就看懂了,不需要很强的背景知识。pylint 这个项目,我自己也接触过,有把握能在本地搭好评测环境、判断 AI 答案的准确性等。

不仅题目,评测流程也很重要。比如说,不同的 PROMPT 就会带来完全不一样的结果。我的评测原则和流程如下

    PROMPT 要完全一致,或者基本一致。比如,我给每个工具说的第一句话都是一模一样的

    解决一下这个问题:{problem_statement}

    当工具问我要不要做某个操作时,我基本都会回答是,这样尽可能保证 apple-to-apple 。除非以下场景
      它要跑 lint 命令。我会拒绝。比如,Aider 的一个机制就是会跑 lint 命令来让代码质量更好。但我也用过很多次,它跑 lint 命令的时候,会 lint 并尝试修改老代码,这其实引入了很大的风险。它要跑 unit test 命令。我会拒绝。比如,很多工具都会尝试自动跑测试,但根据我的经验,它们的测试命令都非常粗糙。它可能直接建议我跑 pytest ,跑一遍可能都过年了。它要给我添加测试。我会拒绝。因为 SWE-bench 数据集里面已经有测试用例了,不需要它来。

我评测流程,如果用伪代码来描述,就是

def evaluate():   start_tool_with_default_parameters  send_to_chat: `解决一下这个问题:{problem_statement}`    enter yes until 它生成修复代码 # 初步检查答案,保证它的答案不会让回归测试失败    while 我主观觉得它还有戏:        run PASS-TO-PASS tests  # 如果这个测试都跑不过,这个工具评测结果不及格        if fail:            send_to_chat: 有 X 个测试失败了:{failure_summary}          enter yes until 它再一次生成修复代码      else:           # 认为它代码已经修改完毕,直接开始检查它的答案            break   # 检查最终答案    while 我主观觉得它还有戏:        run FAIL-TO-PASS tests      if fail:            send_to_chat: 有 X 个测试失败了:{failure_summary}          enter yes until 它再一次生成修复代码      else:           break

更新(07-27 22:36): 这里 while 的地方有个主观部分,你可能会觉得它会影响这个评测的结果。严格来说,确实会有影响。但这里所谓的“主观”其实也是有判断标准的:即如果两次改动的代码都不符合预期,就认为它没戏。这个主要是考虑测试效率。

TL;DR 评测结果

我写了评测过程,让 AI 帮我总结了一个评测结果的表格。打分是我根据这次任务,主观打的

工具模型测试结果小结打分
Aiderdeepseek-chat-v3-0324通过问题定位非常准确,一次性找到关键文件和函数;修复过程中遇到循环引用但最终解决⭐⭐⭐⭐
Gemini Cligemini-pro通过问题定位准确,修复过程需多次交互,最终解决;有时会卡主⭐⭐⭐
Claude Code原生版通过问题定位准确,一次性修复成功;交互体验良好,TODO 列表清晰⭐⭐⭐⭐⭐
Claude CodeQwen3-Coder-480B失败问题定位基本准确,修复方案不正确;交互过程展示过多细节⭐⭐
Claude Codedeepseek-chat-v3-0324失败流程走不完,无法评价
TraeBuilder(Auto)失败问题定位不够准确,修复方案不正确;交互过程展示过多细节⭐⭐
TraeBuilder(Claude Sonnet 4)失败排不上队,无法评价
TraeBuilder(DeepSeek)失败问题定位不够准确,修复方案不正确;交互过程展示过多细节⭐⭐
CursorAuto失败问题定位准确,修复方案有问题;搜索展示简洁,交互体验勉强还行⭐⭐

评测结果分析

在评测过程中,我发现了一些有意思的细节,下面也和读者分享一波。另外评测还有很多局限性,也给自己跌跌甲,轻喷。

我从评测过程中,提炼了几个维度来评价这些工具。这里最重要的指标是问题最终是否被解决了。如果问题解决了,过程坎坷一点也能接受。如果问题没解决,过程再惊艳,也没用。因此,我给 Claude Code, Aider, Gemini Cli 打的分数比较高。其它就低一些。

第二个维度是交互体验。这里又可以细分:UI/UX ;可观测性;性能;稳定性。我暂时就想到这几个维度。

维度问题解决能力UI/UX性能与稳定性收费综合打分
Aider+DS⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
Gemini Cli⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
Claude Code⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
Trae(DS)⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
Cursor⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐

值得一提的是,模型真的很重要。不同的模型,测出来结果差异可能会差很远。

还有个值得一提的是,这里评测的背景是解决一个实际问题。最后再附加一下个人的综合性观点

    假设我很有钱、或者工作里面需要经常堆 shi ,我应该会选择 cursor 。也会考虑 claude code 。在我钱不多、且编码不那么多的情况下,我会选择 Aider + VSCode(Copilot)Gemini Cli 和 Trae 感觉目前竞争力还差点。如果 Trae 让我免费用,我也乐意 🐶

评测过程记录

评测过程比较细节与繁琐,感兴趣的盆友,可以查看博客原文。

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

AI 编码工具 Claude Code Gemini Cli Aider SWE-bench 软件工程
相关文章