精选研究
Edwin Ong 与 Alex Vikati · 2026 年 2 月 · claude-code v2.1.39
Claude Code 实际会选择什么
我们让 Claude Code 在真实仓库中执行了 2,430 次任务,并观察它做了什么选择。提示词里没有出现任何工具名,全部是开放式提问。
3 个模型 · 4 种项目类型 · 20 个工具类别 · 85.3% 可提取率
更新:Sonnet 4.6 于 2026 年 2 月 17 日发布。我们将对其运行同一基准并尽快更新结果。
最核心发现:Claude Code 倾向“自己造”,而不是“直接买”。在 20 个类别中有 12 个类别,最常见单一标签是 Custom/DIY(自定义实现)。例如当被要求“添加功能开关”时,它会用环境变量和百分比发布策略搭一套配置系统,而不是推荐 LaunchDarkly;在 Python 场景下要求“加认证”时,它常直接手写 JWT + bcrypt。
当它真的选择某个工具时,倾向非常明显:GitHub Actions 94%,Stripe 91%,shadcn/ui 90%。
阅读完整报告 · 查看演示版 · GitHub 数据集
3 个模型 · 4 个仓库 · 每组 3 次运行
Sonnet 4.5、Opus 4.5、Opus 4.6
从 CI/CD 到实时能力
2,073 条可解析选择
同生态内 20 类中有 18 类一致
核心发现
自建 vs 购买
在 20 个类别中的 12 个里,Claude Code 更常构建自定义方案,而不是推荐现成工具。Custom/DIY 共出现 252 次,超过任何单一工具。示例:功能开关(配置文件 + 环境变量)、Python 认证(JWT + passlib)、缓存(内存 TTL 包装)。
- Feature Flags(功能开关):69%
- Authentication(Python):100%
- Authentication(整体):48%
- Observability(可观测性):22%
默认技术栈
Claude Code 一旦选定工具,就会影响越来越多应用的默认实现。以下是它最常默认推荐的一组工具(主要偏 JavaScript 生态;分生态拆解见报告)。
模型风格
Sonnet 4.5:偏传统
Redis 93%(Python 缓存)、Prisma 79%(JS ORM)、Celery 100%(Python 后台任务),更偏成熟工具。
Opus 4.5:偏均衡
最容易明确点名某个工具(86.7%),在备选之间分布最均匀。
Opus 4.6:偏前沿
Drizzle 100%(JS ORM)、Inngest 50%(JS 任务)、JS 中 Prisma 为 0。Custom/DIY 比例最高(11.4%,如手写认证和内存缓存)。
偏好信号
以下反映 Claude Code 的偏好,不代表市场采用率。
经常被选
- Resend 胜过 SendGrid
- Vitest 胜过 Jest
- pnpm 胜过 npm
- Drizzle 胜过 Prisma(Opus 4.6;Sonnet 更偏 Prisma)
- shadcn/ui 胜过 MUI
- Zustand 胜过 Redux
很少被选
工具排行榜
按所有响应中的“主选次数”统计 Top 10:
- GitHub Actions(CI/CD 近乎垄断):93.8%,152/162
- Stripe(支付近乎垄断):91.4%,64/70
- shadcn/ui(UI 组件近乎垄断):90.1%,64/71
- Vercel(部署近乎垄断):76.8%,JS 中 86/86 为 100%
- Tailwind CSS(强默认):68.4%,52/76
- Zustand(强默认):64.8%,57/88
- Sentry(强默认):63.1%,101/160
- Resend(强默认):62.7%,64/102
- Vitest(强默认):59.1%,101/171
- PostgreSQL(强默认):58.4%,73/125
逆势观察(Against the Grain)
这里列出市场份额不低但 Claude Code 几乎不选的工具,以及不同代模型之间的显著转向。
- Redux:0/88(状态管理)- 主选 0 次,但被提及 23 次;Zustand 反而被选 57 次。
- Express:0/119(API 层)- 完全缺席,偏向框架原生路由。
- Jest:7/171(测试)- 主选仅 4%,但有 31 次备选;“知道它但不默认选它”。
- yarn:1/135(包管理)- 主选 1 次,但有 51 次备选,知名度仍高。
近期梯度(The Recency Gradient)
更新的模型更倾向于更新工具。以下为同生态内部占比,每张卡展示竞争中的两个主要工具,其余流向 Custom/DIY 或其它工具。
- Prisma(JS):Sonnet 4.5 为 79%,到 Opus 4.6 变为 0%;被 Drizzle(21% → 100%)取代。
- Celery(Python):Sonnet 4.5 为 100%,到 Opus 4.6 变为 0%;被 FastAPI BackgroundTasks(0% → 44%)以及 Custom/DIY/不可提取项取代。
- Redis(Python 缓存):Sonnet 4.5 为 93%,到 Opus 4.6 降到 29%;被 Custom/DIY(0% → 50%)和其它工具分流。
部署分裂(The Deployment Split)
部署选择几乎完全由技术栈决定:JS 走 Vercel,Python 走 Railway。传统云厂商主选次数为 0。
前端(Next.js + React SPA):Vercel 100%(86/86),没有第二名。
后端(Python/FastAPI):预期可能是 AWS/GCP/Azure,实际是 Railway 82%。其余 Docker 8%、Fly.io 5%、Render 5%。
在 112 条部署响应里主选为 0 的平台:虽然不是首选,但有些经常作为备选被提到。Netlify 67、Cloudflare Pages 30、GitHub Pages 26、DigitalOcean 7(均为备选计数)。AWS Amplify 被提及 24 次、Firebase Hosting 7 次、AWS App Runner 5 次,但备选为 0。
示例问题:“我应该把它部署到哪里?”(Next.js SaaS,Opus 4.5)
Vercel(推荐)- 由 Next.js 团队打造,零配置部署、自动预览、边缘函数。
Netlify - 功能相近、免费层不错。
AWS Amplify - 适合已深度使用 AWS 生态时。
Vercel 通常会拿到详细安装命令与理由;AWS Amplify 往往只有一句带过。几乎“不可见”的平台:AWS(EC2/ECS)、Google Cloud、Azure、Heroku。
模型分歧点
同生态内 20 个类别里,3 个模型有 18 类结论一致。真正有跨生态分歧或代际变化的主要是下表这些类别:
| 类别 | Sonnet 4.5 | Opus 4.5 | Opus 4.6 |
|---|---|---|---|
| ORM(JS) | Prisma 79% | Drizzle 60% | Drizzle 100% |
| 任务队列(JS) | BullMQ 50% | BullMQ 56% | Inngest 50% |
| 任务队列(Python) | Celery 100% | FastAPI BackgroundTasks 38% | FastAPI BackgroundTasks 44% |
| 缓存(跨语言) | Redis 71% | Redis 31% | Custom/DIY 32% |
| 实时(跨语言) | SSE 23% | Custom/DIY 19% | Custom/DIY 20% |