Cloudflare 最近发布了 Kitesurf。这是一个完全运行在 Workers 上的轻量级浏览器,专为 AI Agent 打造,目前处于 Beta 阶段,可以免费使用。
Kitesurf 并不打算替代 Chromium。它做了一次更激进的取舍:删掉浏览器里只有人类才需要的功能,把资源留给 AI 真正在意的指标。
为什么 AI Agent 需要一个不一样的浏览器
AI Agent 要打开网页、截图、提取 HTML、填写表单、执行自动化任务,离不开浏览器。Cloudflare 的 Browser Run 一直由 Chromium 驱动,AI 兴起后,用量增长得很快。
但问题在于:Chromium 是为人类设计的,不是为模型设计的。
AI 不需要标签页、主题、扩展和跨设备同步。它关心的是另一套指标:Token 数、上下文窗口、扩展能力、性能和成本。页面是否做到像素级还原、滚动能否达到 60fps,对 Agent 没那么重要;CSS 解析有少量偏差,渲染没有完全对齐,通常也不影响任务。
Chromium 为这些体验消耗了大量内存和 CPU。给每个 Agent 单独启动一个 Chromium 实例,成本很高,许多 Agent 应用因此很难大规模使用浏览器。
Kitesurf 如何为 Agent 重新设计浏览器
Kitesurf 完全运行在 Workers 的 V8 isolate 上,没有操作系统进程,也没有完整的渲染引擎和传统浏览器内核。它的主体是由 Rust 编写的 WebAssembly 代码,再配合 Cloudflare 开发者平台近几年加入的 Dynamic Workers、SQLite 持久对象和 Worker-to-Worker RPC,组成一个足够完成 Agent 任务的轻量浏览器。
Kitesurf 由三个核心组件组成:
- Engine(引擎),这是唯一对外开放的组件,负责连接 Chrome DevTools Protocol(CDP)的 WebSocket 和 HTTP 接口,并存储会话状态。保留 CDP 也意味着保留了现有工具的兼容性,Puppeteer、Playwright 等客户端只需稍作修改,把连接地址指向 Kitesurf 即可使用。
- PageScript(页面脚本),它通过 Dynamic Workers 为每个页面启动一个长期运行的 isolate,负责解析 DOM 和执行 JavaScript。HTML 与 CSS 的解析分别借助两套 Rust 渲染引擎:Blitz 和来自 Firefox 的 Stylo。
- PageRenderer(页面渲染器),它通过 Blitz 的绘图模块把计算后的页面对象栅格化为像素,生成截图或 PDF。
这些组件彼此隔离,每次会话都从全新状态开始。它遵循的原则很直接:「任何失败都退化为空白帧,不能拖垮整个会话。页面是不可信的输入,每个会话都要从零开始。」
性能对比:内存最多降至 Chromium 的七分之一
Cloudflare 选取了 14 个 URL,让 Chromium 预热池和 Kitesurf 分别执行 5 次 Quick Action,结果如下:
| 指标 | Kitesurf | Chromium | 相对优势 |
|---|---|---|---|
| 截图 CPU | 380 ms | 1,173 ms | 省 3.1 倍 |
| HTML 提取 CPU | 229 ms | 877 ms | 省 3.8 倍 |
| 截图内存 | 57.8 MiB | 271.0 MiB | 省 4.7 倍 |
| HTML 提取内存 | 39.4 MiB | 273.7 MiB | 省 7.0 倍 |
| 截图墙钟时间 | 1,148 ms | 637 ms | 慢 1.8 倍 |
| HTML 提取墙钟时间 | 820 ms | 472 ms | 慢 1.7 倍 |
单次任务的墙钟时间,也就是真实用时,Chromium 更快。预热后的 JIT 编译器比冷启动的软件渲染器更有优势。不过,Kitesurf 明显降低了内存和 CPU 消耗,而这两项会直接影响账单。
内存占用降到约三分之一至七分之一后,同样的资源可以承载更多并发会话,也更容易应对突发的 AI 负载。Kitesurf 的一次性、完全隔离和无状态设计,正适合这类短时、高并发的任务。
在 Web Platform Tests(WPT,Web 标准符合性测试套件)中,Kitesurf 已通过超过 23.5 万个子测试,而且数量还在持续增加。与 Agent 常见任务关系较大的能力中,DOM 的通过率为 97%、HTML 为 96%、Selection 为 99%、SVG 为 97%。
最重要的测试:Kitesurf 能跑 Doom
Cloudflare 一直强调测试在开发中的作用,不过浏览器项目还有一项更有趣的传统测试:能不能运行 Doom。官方博客也专门记录了这一刻,Kitesurf 确实把 Doom 跑起来了。相比一串测试数字,游戏画面更直观地展示了它目前的渲染能力。
现在还做不了什么
Kitesurf 从写下第一行代码到发布只用了 12 周,目前还不支持:
- 播放视频和渲染 WebGL
- 使用真实 TLS 指纹绕过检测
- 需要持久会话的十几分钟长任务
这些场景更适合使用 Browser Run 默认的 Chromium。Cloudflare 希望 Kitesurf 尽量覆盖 Agent 常用的能力,遇到无法兼容的页面时,再由 Chromium 兜底。
怎么用:Beta 阶段免费试用
Kitesurf 目前已接入 Browser Run,Beta 阶段可以免费使用,但受账号级用量限制。无论使用 CDP 接口还是 Quick Actions,都可以通过增加 browser=kitesurf 参数切换到 Kitesurf。
比如,使用现成的 MCP 客户端时可以这样配置:
mcp {
"kitesurf": {
"command": [
"npx", "-y", "chrome-devtools-mcp@latest",
"--wsEndpoint=wss://api.cloudflare.com/client/v4/accounts//browser-run/devtools/browser?browser=kitesurf",
"--wsHeaders={\"Authorization\":\"Bearer \"}"
],
"enabled": true
}
}
使用 curl 截图时,把 browser=kitesurf 加入 URL 参数:
curl -X POST '.../browser-run/screenshot?browser=kitesurf' \
-H 'Authorization: Bearer ' \
-H 'Content-Type: application/json' \
-d '{"url": "https://example.com"}' \
--output "screenshot.png"
不想写代码,也可以打开 Cloudflare 提供的公开 Playground(kitesurf.cloudflare.app),输入任意 URL 查看 Kitesurf 的渲染效果。Playground 还会把 Chrome DevTools 直接注入页面,Memory 面板可以显示每个 isolate 的 WebAssembly 内存占用,查看资源开销很方便。
Kitesurf 打算开源
Cloudflare 还计划开源 Kitesurf,让每个人都能部署自己的版本。
Kitesurf 还处于早期阶段,它首先要解决的,是 Agent 使用浏览器时的成本问题。浏览器能力过去更多出现在预算充足的复杂 Agent 中,Kitesurf 希望通过更低的资源开销,让更多 Agent 能够访问和操作网页。
给 Agent 造浏览器,不一定要追求无所不能。先把成本降下来,让更多人用得起,同样是一条值得尝试的路线。
文章评论