通往智能体浏览器之路:Kitesurf 更新

八月,我们推出了 Kitesurf,一款完全运行在 Cloudflare Workers 上的智能体时代浏览器。我们围绕智能体对网络的需求来构建它,而不是照搬为人类设计的浏览器的全部功能和臃肿之处。如果你是第一次听说它,我们强烈建议你阅读我们介绍 Kitesurf 的博客文章,了解我们实现它的所有精彩技术细节。
自那以后,我们让 Kitesurf 经历了越来越贴近真实的任务,并利用来自客户的内部和外部反馈,让它更强大、更高效。以下是发生了哪些变化、你今天如何试用它,以及我们下一步的方向。
WebMCP 支持
网站并不是为智能体使用而构建的。如今的浏览是一个混乱的过程:点击像素,然后祈祷正确的元素加载出来。在程序化的世界里,这既缓慢又脆弱。WebMCP 通过允许开发者将网站功能直接暴露给智能体来提供帮助,智能体可以调用诸如
searchFlights() 之类的函数,而不是模拟点击。
Cloudflare 从早期就一直支持 WebMCP;就在几周前,我们宣布网站所有者现在可以通过一个开关开启 WebMCP,这样浏览器智能体无需更改网站代码就能发现并使用其网站上的工具,而 Browser Run 已经
支持 WebMCP已有一段时间了。
__beta__今天我们宣布 Kitesurf 现已支持 WebMCP。
你可以通过访问我们的公开 Kitesurf 演练场、打开 Cloudflare Radar,并在 DevTools 面板的 Application 标签页中导航到 WebMCP 来测试这一点。如你所见,Radar
exposesnavigate-to 或
set-location,它们允许客户端与页面交互并以程序化方式探索 Radar。

如果你将 AI Agent 指向 Kitesurf:
{
"mcp": {
"kitesurf": {
"type": "local",
"command": [
"npx",
"-y",
"chrome-devtools-mcp@latest",
"--wsEndpoint=wss://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/browser-run/devtools/browser?browser=kitesurf",
"--wsHeaders={\"Authorization\":\"Bearer <BEARER_TOKEN>\"}",
"--category-experimental-webmcp"
],
"enabled": true
}
}
}
你可以看到,AI 模型能够与暴露出来的 WebMCP 工具交互,你可以借助这些工具更可靠地完成任务。

你可以阅读更多关于如何将 WebMCP 与 Kitesurf 和 Browser Run 配合使用的内容这里。
新 API,更好的 WPT 覆盖率
自最初发布以来,我们一直在添加更多浏览器标准,以便智能体能够渲染更复杂的页面。Kitesurf 支持的 API 列表已经增长,现在包括:
我们添加了基于 URL 的模块解析、,以及
JSON 模块处理——这对于分块加载 JavaScript 的网站很重要。此外,我们正在使用新的
导入映射来支持从 URL 导入。
__Cloudflare Workers 的模块注册表__Iframe 行为也有所改善;现在它们会在正确的时间加载,保持更好的隔离,并在更多语言和编码下正确显示文本。
正如我们在发布时所说,运行测试是我们在改进 Kitesurf 的同时,在不损失速度的情况下控制代码和结果质量的方法。Web 平台测试(WPT) 是一个共享的开源测试套件,用于检查浏览器是否一致地实现 Web 标准。
我们现在通过了 730,000 多个 WPT 子测试,并且还在增长。这比我们发布时多了 500,000 个子测试。在这里你可以看到从项目开始到最新版本的随时间演变:

为智能体优化的效率
对于 AI 智能体来说,效率与其说是快速加载页面,不如说是智能体循环的延迟。为了让 Kitesurf 真正具备智能体能力,我们积极优化了浏览器引擎的内部结构,使每次 DOM 遍历、定时器和字体获取都尽可能轻量,确保智能体将计算周期花在推理上,而不是等待浏览器跟上。
这些优化包括:
- 改进 JavaScript 执行,减少在 和 DOM 之间跨越的工作,使边界与真实 Web 框架更兼容。常见读取如__Boa__getAttribute、id 和 parentNode 现在可以在 Wasm DOM 内部回答,而不必反复进行 Boa → JavaScript shim → Wasm 的往返。- Kitesurf 在运行定时器和加载脚本时减少了重复工作,并释放不再需要的对象内存。当代码在其两个 JavaScript 引擎之间移动时,它还能更一致地处理对象和类,从而更高效地运行繁忙页面。
- Kitesurf 现在在需要时加载字体,减少获取页面不会使用的字体,在获取特定语言字体文件之前检查页面上出现哪些字符,并更忠实地渲染合成斜体。
这些优化共同帮助 Kitesurf 对智能体保持高效。尽管增加了对更多 Web 标准的支持——并使 Kitesurf 更接近 Chrome 等全功能浏览器的能力——其挂钟时间和 CPU 使用率仍大致与我们的发布基准持平,在某些情况下甚至有所改善。

与 Browser Run 更好地配合
Browser Run 是我们的开发者平台产品,让你能够以编程方式控制和运行无头浏览器实例。使用此 API 时,你可以从我们支持的浏览器类型列表中进行选择,其中包括 Kitesurf。
这意味着我们必须确保所有浏览器都在整个 API 表面上得到支持。从今天起,Kitesurf 已具备完整的 Browser Run API 覆盖。你可以将 Kitesurf 与 CDP、,
Playwright, 或
Puppeteer.
MCP 作为 Browser Run 最受欢迎的功能之一,Quick Actions 为截图、提取 HTML 内容、生成 PDF 等常见浏览器任务提供了简单的接口。当我们发布 Kitesurf 时,你可以从我们的 REST API 使用 Quick Actions。现在,你还可以在 Worker 脚本内部通过
env.BROWSER.quickAction() 绑定来使用它们:
interface Env {
BROWSER: BrowserRun;
}
export default {
async fetch(request, env): Promise<Response> {
return await env.BROWSER.quickAction("screenshot", {
url: "https://example.com",
browser: "kitesurf"
});
},
} satisfies ExportedHandler<Env>;
Kitesurf 现在可以在终端中运行
正如我们在公告博客文章的我们如何构建它部分所详述的,Kitesurf 将
PageScript, 负责从计算出的页面对象生成实际像素。
PageRenderer
这不仅提供了出色的隔离性和灵活性,还允许我们将渲染逻辑解耦并移到 Kitesurf 之外(例如,移到客户端或另一个 Worker),同时将安全关键部分保留在服务器端,在我们的网络中运行。
如果这个模型听起来很熟悉,可能是因为 Cloudflare 有另一个名为 Cloudflare Browser Isolation 的 SASE 产品,它在我们全球网络的边缘运行所有不受信任的 Web 代码,同时将渲染数据“流式传输”回客户端。
我们可以用 Kitesurf 做类似的事情。为了证明这一点,我们将 PageRenderer 移到了我们的 Playground Worker,并修补了这个版本,使其不再将场景数据转换为图像,而是输出到
Kitty,
本身,
Ghostty, 等现代终端支持。我们甚至更进一步,为 Kitty 不可用的环境添加了纯 ANSI 文本模式。
__WezTerm__结果是,你现在可以在不离开舒适的终端应用程序的情况下,使用 Kitesurf 快速打开并渲染页面。这非常有用,不仅因为你现在可以一目了然地浏览现代 Web 而无需切换上下文,还因为你可以使用这个工具查看使用 Kitesurf 的代理如何“看到”页面。
要安装 Kitesurf 的终端版本,请执行以下操作:
$ brew install cloudflare/cloudflare/kitesurf
从现在开始,只需在终端中输入:
$ kitesurf https://blog.cloudflare.com
$ kitesurf --help
这是一个它运行时的演示。

终端还会回传滚动和点击事件,因此你可以像在专用的浏览器应用程序窗口中一样,正常使用键盘、方向键或鼠标。
下面是我们 Silent Space Marine 的 Doom 演示,正在终端内的 Kitesurf 中运行:

我们接下来的方向
我们会继续快速迭代,为我们的客户和开发者打造最好的智能体浏览器。请期待越来越好的性能基准,以及受支持的 Web 标准列表和 WPT 测试覆盖率继续快速上升。事实上,我们已决定将结果发布在这里以及
__这里__我们将继续探索各种场景,在这些场景中,将 Kitesurf 解耦、让 PageRenderer 脱离 PageScript 对智能体有利,或者更高的帧率很重要。在我们撰写本文时,我们可能有一个也可能没有一个以 30fps 在 Kitesurf 中运行的 Doom 版本。
我们还想直面那个显而易见的问题:虽然我们目前优先考虑快速开发,但我们仍致力于将 Kitesurf 开源。这很快就会到来,但我们希望把这件事做对,因此我们已做好准备长期支持它。
Kitesurf 忠于其最初的设计目标:它完全运行在 Workers 之上,就像任何其他客户应用程序一样;这意味着我们只使用我们公开可用的功能和 API,无法访问任何特殊权限。这不仅是自我检验并证明我们自己平台的好方法,也是让 Kitesurf 非常廉价并在 Cloudflare 全球网络上自动扩展的唯一方法。
在焕然一新的 kitesurf.dev 演练场中试用 Kitesurf,并通过
Browser Run在测试期间免费提供,受每账户
限制并来与团队在
Discord
