Claude、Codex 和 Cursor 首选工具大揭秘:1.7万次实测数据揭晓
我们首先对数千个公开 GitHub 仓库进行了分析,从中提取了编程语言与框架、第三方服务、部署平台、团队规模和代码库年龄等统计数据。由于科技初创企业比大型企业在开源方面更为活跃,技术栈差异也可能很大,因此我们基于公开数据对统计结果进行了无偏校正,最终确定了理想的样本分布。
随后,我们部署了多种编码智能体,生成符合上述精确要求的真实仓库。最后,我们生成了若干变体,通过移除部分代码库及其对应的第三方服务实现,从而开展规范的无偏实验。
最终选定 75 个仓库,覆盖 10 种编程语言,均采用虚构的公司名称、虚构的 git 提交历史以及虚构的 API 密钥,并保留了经 npm 等软件包注册表校验的真实 lockfile。
真实场景任务
每项实验都是一项需在仓库内执行的实际任务,由以下四种角色之一提出:
- Vibe coder:仅描述症状和期望状态,很少提及工具类别名称
- 初级工程师:通常说明期望状态和工具类别名称
- 高级工程师:对需求和需避免的事项更为精确
- 大型企业的工程师:详细说明特定约束、合规要求、采购流程等
提示词通常简洁直接,并针对每项实验略有调整(结合仓库背景与角色人设),但在 20-25% 的测试中,我们会在提示词中加入成本或使用量等特定说明,以检验其对最终输出的影响。
最终得到 1,163 种变体,例如:“现在我希望每张生成的发票都能附带一段友好的消息发送给用户邮箱,找到最优方案并实现。”
Runner
每项实验均在独立的临时沙箱中运行。我们验证了沙箱选择不会影响结论,但为稳妥起见,仍在 E2B、Blaxel 和 Daytona 三家不同的沙箱提供商之间轮换使用。
闭环中的“模拟人类”
由于实际对话很少只是单个提示词加上一个不间断、持续朝目标推进的代理,我们决定在循环中引入一个“模拟人类”。我们通过由 Gemini 3.7 Flash 扮演的编排器来实现这一点。这使得我们可以模拟更真实的场景:先让代理分析代码库并推荐最佳方案,随后模拟人类会直接采纳排名第一的方案,或要求编码代理选出最优解并加以实现。但我们注意到,如果在初始阶段就要求代理直接实现而不允许提问,会使其倾向于自己构建一切,因为它无法就选用特定的第三方解决方案征求许可。加入这位“人类”参与者后,头部厂商和云原生平台的优势地位被削弱,呈现出更贴近现实的格局。
例如,在对象存储实验中,Amazon S3 此前在代理的会话中总是被选用;但引入模拟人类后,Cloudflare R2 开始在部分会话中胜出。
我们的评审器
我们还使用了另一个 Gemini 3.7 Flash 实例来分析这些会话。它的角色有两项:
- 根据一系列标准评估会话是否有效,例如:选择过程未受已“预先选定”该提供者的仓库影响;确实做出了方案选择(出于可观测性考虑,若仅选 OpenTelemetry 而未绑定具体平台,则予以拒绝)。
- 识别对话中提及的所有参与者,并确定最终胜出者(结合对话内容与实际的代码 diff 进行判断)。
我们得出了什么结论?
在 16,893 次运行中,我们首先筛选出 5,292 个会话——涵盖 51 个代码库和 18 个行业领域,视为有效并准备公开发布。这并不意味着我们把另外 10,000 多个会话直接丢弃;我们可能会在第二阶段分享它们。在第一波数据中,我们仅提取了全部发现的一部分,许多洞察仍深埋于运行轨迹之中。我们将继续深挖,分享令我们惊讶的内容,以及对厂商和开发者有价值的信息。但从今天起,所有运行轨迹均已公开,你也可以自行开展同样的分析。以下是我们最初观察到的 5 条有趣发现。
不同的编码代理使用不同的信息来源,最终往往各执己见。
- Cursor 在三分之二的会话中基于网络信息进行决策。
- Codex 几乎总是使用网页搜索(占 94% 的会话),而且十次中有九次会使用 `site:` 这类操作符来聚焦可信域名或深入某个具体方案(例如 `site:auth0.com password reset MFA social connections`)
- Claude Code 主要依赖已有知识,只有在约 30% 的情况下才会搜索网页;但一旦搜索,浏览的页面数量是 Codex 的 3 倍。在沙盒等其先验知识较弱的领域,它会搜索约 80% 的时间。
- 三个代理在仅 42% 的单元格中选择了相同的工具:以语音代理类别为例,Claude Code 选 Twilio,Codex 选 OpenAI Realtime API(👀),Cursor 选 Vapi。
- Claude Code 自建的比例几乎是 Codex 和 Cursor 的两倍(19% vs 10%)
仓库上下文至关重要
- 针对同一需求,在四种不同编程语言的四个仓库上,我们得到了四个不同的邮件服务商赢家:Resend 在 TypeScript 胜出(89 次运行中 55 次),Sendgrid 在 Python 胜出(24 次中 22 次),Postmark 在 Go 胜出(24 次中 20 次),Azure ACS 在 Java 胜出(23 次中 22 次)。
- Vercel 在 TypeScript 仓库中胜出(使用 NextJS 时甚至 100% 胜出),但在 Python 仓库中从未被推荐,Render 占据主导。
被提及不等于被选用
许多知名玩家几乎每次对话都会被提及,却从未被选中。当然,现实中由于人类参与决策,它们仍可能获得一定份额,但有些结果令人惊讶:
- 在支付服务提供商领域,Paypal 被提及 139 次却从未被选中(这 139 次会话中 Stripe 赢了 124 次)。Adyen 同样被提及 175 次,却只被选中 3 次。
- LangChain 是被引用最多的框架,有 194 次提及,但仅被选中 4 次(!)。
- Netlify 被提及 152 次,作为部署平台仅被选中 6 次。
- Supabase 是被提及最多的数据库,有 242 次提及,但仍被 Neon 大幅领先。
厂商页面上的附加功能或细节可以改变选择
- 当代理读到 Mailgun 免费版「1 天数据保留」时,它经常输给了 Postmark
- Supabase 几乎总是输掉,因为它把 auth、storage、realtime 等过多不必要的 BaaS 功能打包展示定价,而代理只需要一个数据库
- 在我们 5300 个会话中,388 次提到了平台管理开销,195 次提到了成本。值得注意的是,这些案例中相当一部分并非真正的否决因素,而更多是信息呈现方式导致的问题。
部分市场高度垄断,部分则竞争激烈
- Stripe 在 10 次中有 9 次胜出,仅在少数受欧盟监管的特定场景下输给更专业的玩家(如 Paddle、Mollie)。
- Neon 以 66% 的胜率领先,其次是云平台原生方案(Azure、AWS)。
- 文件存储方面,Amazon S3 以 45% 的主导地位遥遥领先,Azure 和 GCP 各占 20%。
- Resend 和 Postmark 安装率接近,分别为 35.6% 和 27.4%。
这仅仅是我们实验的开端,我们将持续发布关于编码 Agent 如何选择第三方服务的洞察。我们也计划开展全新的实验,因此想了解你还有哪些疑问,欢迎随时联系我们:contact@armature.tech。
各领域谁是赢家?为何胜出?
为解答这些关键问题,我们在下方榜单中公开了全部实验结果、分析解读、核心洞察以及完整的轨迹数据!