Bun 加入 Anthropic:AI 编程时代基础设施变革的深度解析(2026)
2025 年 12 月,Jarred Sumner 在一篇博客中宣布 Bun 被 Anthropic 收购。这个消息在技术社区激起的涟漪远超一个普通并购——它标志着 AI 编程工具的基础设施层正在发生根本性重组。本文从技术视角出发,深入解析这起收购背后的逻辑、对 JavaScript/TypeScript 生态的影响,以及它对每一个一线开发者意味着什么。
一、故事的起点:45 秒的等待
要理解这起收购,先要理解 Bun 是怎么来的。
2020 年,Jarred Sumner 正在用 Next.js 做一个小游戏。代码库变大之后,每次修改代码,等待热重载的时间是——45 秒。他被这个速度折磨得实在受不了,于是开始研究解决方案。
他发现 esbuild 在 JSX 和 TypeScript 转译上已经很快了,但 Next.js 的开发服务器依然慢得令人发指。他决定从 esbuild 的 Go 代码入手,把 JSX/TypeScript 转译器移植到 Zig。三个星期后,一个实验性质的转译器诞生了。
第一条推文发出去的时候,性能对比是这样的:
- 比 esbuild 快 3 倍
- 比 swc 快 94 倍
- 比 Babel 快 197 倍
这组数字让整个前端社区炸开了锅。那时候,Babel 是转译 TypeScript 的事实标准,swc 已经是最快的方案了,而 Bun 的性能直接把竞争格局重新洗牌。
Jarred 在旧金山奥克兰一间很小的公寓里,开始了 Bun 的正式开发。没有融资,没有团队,只有一行行 Zig 代码和推特上每天的更新。
二、Bun 是什么:一个 ALL-IN-ONE 工具链
2.1 从 bundler 到 runtime
Bun 最初定位是一个 JavaScript bundler,目标是用 Zig 写的转译器替代 Babel。真正的转折点是:既然要做 bundler,干脆把 Node.js 的服务器端运行时也做了。
这就是 Bun 最核心的思路:不做加法,做减法。把原来需要 npm install 一堆包才能跑起来的东西,变成开箱即用。
现在的 Bun 包含四个核心组件:
┌─────────────────────────────────────────────────────────┐
│ BUN │
├─────────────┬─────────────┬─────────────┬───────────────┤
│ Runtime │ Bundler │ Package │ Test Runner │
│ (JavaScript │ (TypeScript │ Manager │ (Jest兼容) │
│ 运行时) │ 打包器) │ (npm替代) │ │
└─────────────┴─────────────┴─────────────┴───────────────┘
2.2 Node.js 兼容层:不是兼容,是替换
Bun 对 Node.js API 的兼容不是简单包装,而是一整套重新实现。
// 这段代码在 Node.js 和 Bun 里都能跑,但底层实现完全不同
// Bun 的内置 SQL 支持(不需要安装额外包)
import { Database } from "bun:sqlite";
const db = new Database(":memory:");
db.run("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)");
const stmt = db.prepare("INSERT INTO users (name) VALUES (?)");
stmt.run("Alice");
stmt.run("Bob");
const result = db.query("SELECT * FROM users").all();
console.log(result);
// [{ id: 1, name: "Alice" }, { id: 2, name: "Bob" }]
// Bun 的内置 HTTP 服务器(无需 Express)
const server = Bun.serve({
port: 3000,
fetch(req) {
return new Response("Hello from Bun!");
},
});
console.log(`Server running at http://localhost:${server.port}`);
// Bun 的内置 WebSocket
const server = Bun.serve({
port: 3001,
fetch(req, server) {
// 升级到 WebSocket
const success = server.upgrade(req);
if (success) return undefined;
return new Response("WebSocket only", { status: 426 });
},
websocket: {
message(ws, message) {
ws.send(`Echo: ${message}`);
},
},
});
一个不依赖任何 npm 包的 HTTP 服务器就这样跑起来了。这不是 demo,这是生产可用的实现——Bun 的 HTTP 服务器在 TechEmpower benchmarks 上的表现直接和 Go 的 fasthttp 掰手腕。
2.3 Bun install:比 npm 快 30 倍的秘密
npm install 慢的原因是:npm 的依赖解析算法是递归的,每个包都要单独请求 registry。Bun 的方案是:
# Bun install
bun install
# 背后的机制:
# 1. 并行下载所有顶层依赖
# 2. 共享全局缓存(~/.bun/install/cache)
# 3. 扁平化 node_modules(消除 phantom dependency 问题)
# 4. 使用裸模块导入(import "lodash" 而不是 import "./node_modules/lodash")
isolated linker 是 Bun v1.3.14 引入的新技术,它使用全局 store 来存储模块信息,同一依赖只需要解析一次。在冷安装场景下,性能提升还不明显;在 warm install 场景下(依赖已经存在于缓存),速度提升达到了 7 倍。
三、AI 编程工具的爆发:基础设施终于跟上了
3.1 从"酷炫演示"到"真的有用"
2024 年底,AI 编程工具完成了从 demo 到实用工具的跨越。Cursor、Claude Code、GitHub Copilot、FactoryAI、OpenCode……这些工具有一个共同特点:它们需要高频调用代码补全和生成 API,每次调用的启动开销直接决定了用户体验。
而 Claude Code 选择了 Bun。
# Claude Code 的安装
curl -fsSL https:// claude.ai/download | sh
# 实际上背后跑的就是一个 Bun 打包的单文件可执行文件
3.2 为什么 AI 编程工具钟爱 Bun
AI 编程工具对运行环境的要求,和传统 Web 开发完全不同:
| 维度 | 传统 Web 开发 | AI 编程工具 |
|---|---|---|
| 启动速度 | 秒级可接受 | 毫秒级(每次补全都要快) |
| 内存占用 | 越大越好(缓存) | 越小越好(并发运行多个 agent) |
| 分发方式 | npm 包 + CI/CD | 单文件可执行文件 |
| 启动频率 | 每天几次 | 每分钟几十次 |
Bun 的单文件打包能力(bun build --target=bun ./cli.ts --outfile=mytool)完美契合 AI 工具的分发需求。一条命令,把 TypeScript 代码打包成 Linux/macOS/Windows 全平台的原生可执行文件——不需要用户先安装 Node.js,不需要 npm install,开箱即用。
Jarred Sumner 在博客里提到过一个细节:在收购谈判期间,他已经在用 Claude Code 帮自己修 Bun 的 bug 了。GitHub 上 Bun 仓库合并 PR 数量最多的用户名,是一个 Claude Code bot。它在 Discord 里接受任务,开 PR、修 bug、回复 review comment——完整地走完了 code review 流程。
"这不是几年后才会发生的事,这是几个月后就会发生的事。"
四、被收购意味着什么
4.1 什么不变
这是最重要的问题——开发者最担心的就是:一个开源项目被大厂收购后,慢慢变成不维护的僵尸项目。
Bun 官方的承诺:
- 保持 MIT 开源许可:任何人可以 fork、修改、分发
- 继续在 GitHub 公开开发:代码提交历史不会消失
- 团队不变:Oven 团队原班人马继续开发
- 路线图不变:依然聚焦高性能 JS 工具链、Node.js 兼容、替代 Node.js 成为默认服务端运行时
Bun 每月下载量已经突破 720 万次。被收购不是因为活不下去了,而是因为在 AI 编程这个大方向上,找到了一个能加速的路径。
4.2 什么会变
// Bun 在收购后透露的路线图重点:
// 1. Claude Code 团队优先事项会被优先处理
// (已经有数月的"优先处理"历史了)
// 2. Claude Code 使用 Bun 作为 runtime →
// Bun 断裂 = Claude Code 断裂
// Anthropic 有直接的经济动机保证 Bun 的质量
// 3. Claude Agent SDK 的基础设施层也将由 Bun 提供
// 这意味着未来更多的 Agent 工具会基于 Bun 构建
4.3 AI 编程时代的基础设施军备竞赛
从更大的视角看,Bun 加入 Anthropic 其实是 AI 基础设施军备竞赛的一个缩影:
传统模式:
Claude Code ──需要──> Bun/Node.js ──需要──> OS
AI Agent 模式:
Claude ──需要──> Agent SDK ──需要──> Bun ──需要──> OS
Anthropic 的逻辑:
┌──────────────────────────────────────────┐
│ 控制 Claude Code 的底层 runtime │
│ → 优化每次 AI 调用的端到端延迟 │
│ → 用户体验提升 → 市场份额提升 │
└──────────────────────────────────────────┘
Bun 的逻辑:
┌──────────────────────────────────────────┐
│ Anthropic 的资源注入 → 更快的版本发布 │
│ Claude Code 的需求 → 更稳定的运行时 │
│ 720万月下载量 → 更广泛的生态影响力 │
└──────────────────────────────────────────┘
这不是简单的"大厂收购创业公司",而是 AI 公司在垂直整合基础设施层的早期尝试。可以类比的是:OpenAI 投资基础设施公司、Anthropic 收购 Bun,未来可能还会有更多类似的动作。
五、Bun v1.3.x 核心技术解析
5.1 HTTP/2 和 HTTP/3 实验性支持
Bun v1.3.14 引入了实验性的 HTTP/2 和 HTTP/3 支持,这是 Bun 向生产级服务端运行时迈进的重要一步。
// Bun HTTP/3 服务器
const server = Bun.serve({
port: 8443,
tls: {
key: await Deno.readTextFile("./key.pem"),
cert: await Deno.readTextFile("./cert.pem"),
},
http: {
// 启用 HTTP/3 (QUIC)
version: "h3",
},
fetch(req) {
return new Response("Hello over HTTP/3!");
},
});
HTTP/3 基于 QUIC 协议(UDP),在丢包环境下比 TCP 快得多。对于 AI 工具来说,频繁的小请求+响应场景(typing → 补全 → typing → 补全)非常适合 QUIC 的流控机制。
5.2 Bun.cron:内置任务调度器
// Bun v1.3.11+ 内置的 cron 调度器
Bun.cron({
schedule: "0 * * * *", // 每小时执行一次
timezone: "Asia/Shanghai",
async task() {
// 定时任务逻辑
console.log("每小时定时任务执行中...");
await sendHeartbeat();
},
});
不再需要 node-cron、bull 或其他调度库了。Bun 从操作系统层面直接解析 cron 表达式,精度和性能都比 JavaScript 实现好得多。
5.3 Bun.Image:内置图像处理 API
// Bun v1.3.14 引入的内置图像处理
import { Image } from "bun";
// 图像处理不需要安装 sharp 或 jimp
const img = await Image.load("./photo.jpg");
const resized = await img.resize({
width: 800,
height: 600,
fit: "cover",
});
await Bun.write("./photo-resized.jpg", resized);
7 倍于 ImageMagick 的性能,背后是 Bun 用 Zig 实现的原生图像处理管线。
5.4 Bun.WebView:无头浏览器自动化
// Bun v1.3.12 引入的 WebView 自动化
import { WebView } from "bun";
const webview = new WebView("https://example.com", {
width: 1280,
height: 720,
});
// 等待页面加载
await webview.waitForLoad();
// 执行 JavaScript
const title = await webview.evaluate(() => document.title);
// 截图
await webview.screenshot({ path: "./screenshot.png" });
webview.close();
不再需要 Puppeteer 或 Playwright。Bun 原生支持 WebView,可以做简单的网页自动化和爬虫。
5.5 Bun.serve 的内部架构
Bun 的 HTTP 服务器之所以快,是因为它从零开始重新设计了网络栈:
Bun.serve() 内部架构
├── JavaScript 引擎:JavaScriptCore (WebKit)
│ └── 比 V8 启动快 4 倍(对 CLI 工具特别重要)
├── 网络 I/O:LibUV 异步 I/O(复用 Node.js 的成熟方案)
├── HTTP 解析:Zig 原生实现(比 Node.js 的 C++ http-parser 快)
├── TLS:Rustls(内存安全、高性能的 TLS 实现)
└── WebSocket:Zig 原生实现(handshake + 帧解析一体化)
JavaScriptCore 的选择是 Bun 和 Node.js、Deno 最大的架构差异。JSC 的启动时间远快于 V8,这是因为 WebKit 对 Safari 的 CLI 工具有大量优化——而 Bun 继承了这部分优势。对于 AI 编程工具来说,这个选择是正确的:每次补全都涉及到 runtime 的冷启动,毫秒级的差异累积起来就是用户体验的天壤之别。
六、AI 时代开发者应该如何看待这起收购
6.1 从"学什么工具"到"理解什么系统"
这起收购背后有一个更重要的趋势:AI 编程工具正在从"帮你写代码"进化到"帮你维护系统"。
当 Claude Code bot 可以在 Bun 仓库里开 PR、修 bug、回复 review 的时候,传统的"程序员写代码 → 提交 PR → 人类 review"的工作流正在发生位移。人类 review 的作用从"检查代码正确性"变成了"把控技术方向"。
这对开发者意味着:
- 工具链的学习优先级变了:花一周学一个新框架,不如花一周理解分布式系统或编译原理
- 基础设施的价值在重估:runtime、bundler、编译器这些底层组件的价值被重新发现
- AI 原生开发模式正在形成:从"写代码"到"描述系统行为",开发者的核心能力正在迁移
6.2 Bun 的路线图预测
基于 Anthropic 的战略方向和 Bun 团队的历史执行力,我对未来 12-18 个月的 Bun 路线图做以下预测:
| 方向 | 预测 | 依据 |
|---|---|---|
| AI 推理集成 | Bun 内置 AI 模型调用能力(类似 AWS Bedrock 接口) | Anthropic 的核心业务 |
| CLI 工具优化 | 更小的可执行文件体积(compression + tree-shaking) | Claude Code 分发需求 |
| WASM 支持 | 第一方 WebAssembly 运行时支持 | 补全 Bun 的多端部署能力 |
| 数据库连接池 | 更智能的内置连接池管理 | 高并发 AI 工具场景 |
| 热更新 | 更细粒度的运行时热更新 | AI 工具的持续运行场景 |
6.3 给开发者的行动建议
短期(现在):
- 如果你在构建 CLI 工具或 AI 辅助工具,立即试用
bun build --compile - 把
bun install作为项目依赖安装的默认工具,npm 作为 fallback - 关注 Bun 的 Changelog,了解它和 Node.js API 兼容性的边界
中期(6-12 个月):
- 如果你在评估新的服务端技术栈,把 Bun 列入候选(特别是轻量级微服务和边缘计算场景)
- 关注 Claude Agent SDK 的进展,它会反映 Anthropic + Bun 的协同方向
- 考虑在 monorepo 中引入 Bun Workspace,减少 npm/yarn 的维护负担
长期(1-2 年):
- 理解 AI 编程工具的"最后一公里"问题:AI 生成代码的运行时行为验证
- Bun + AI Agent SDK 的组合可能会催生新一代的开发工具链
- 持续关注 Bytecode Alliance(WASM 组件模型)的进展——这是 WebAssembly 在 AI 时代的关键战场
七、结语:基础设施的重新发现
五年前,一个叫 Jarred 的开发者在旧金山的小公寓里,因为受不了 45 秒的热重载,开始写一个 TypeScript 转译器。他大概没想到,这个"分心的副产品"会在五年后成为 AI 编程时代最关键的基础设施组件之一。
Bun 加入 Anthropic 的故事,本质上是一个技术产品找到了最适合它的生态位:不是通过优化 Node.js,而是通过重新定义 JavaScript 工具链的边界,在 AI 编程这个新场景里找到了不可替代的价值。
对于开发者来说,这个故事有一个清晰的寓意:在工具爆炸的时代,理解底层原理比学会具体工具更重要。 Bun 能做 bundler、runtime、package manager,不是因为它什么都想做,而是因为它在每一层都找到了更优雅的实现方式。这种从底层重新思考问题的能力,是 AI 无法替代的。
未来已来,只是分布不均。基础设施层的军备竞赛才刚刚开始。
本文基于 Bun v1.3.14 及 Bun 官方博客 "Bun is joining Anthropic" 撰写。