Kitesurf 更新:面向 AI Agent 的浏览器继续提速

Cloudflare AI Bl1 天前

背景

Kitesurf 是一款运行在 Cloudflare Workers 上、面向 AI Agent 设计的浏览器。它的目标不是复刻面向人类用户的完整浏览器,而是围绕 Agent 访问网页、理解页面和执行任务的需求来构建。

近期,Kitesurf 在更接近真实场景的任务中进行了测试,并结合内部与客户反馈进行了多项更新,包括 WebMCP 支持、更好的 Web 标准覆盖、DOM 性能优化、Browser Run API 覆盖,以及终端渲染能力。

支持 WebMCP:让 Agent 少“点像素”,多调用能力

传统网站并不是为 AI Agent 设计的。Agent 在网页上执行任务时,往往需要模拟点击、等待元素加载、读取页面状态,这个过程既慢又脆弱。

WebMCP 的思路是让网站把功能直接暴露给 Agent。这样,Agent 可以调用类似 searchFlights() 这样的函数,而不是通过模拟点击完成同样任务。

此次更新中,Kitesurf 已支持 WebMCP。以 Cloudflare Radar 为例,页面可暴露 navigate-to、set-location 等 WebMCP 工具,使客户端能够以编程方式与页面交互并探索数据。

这意味着,当 AI Agent 使用 Kitesurf 访问支持 WebMCP 的网站时,可以更可靠地调用网站能力,而不是完全依赖页面点击和 DOM 猜测。

Web 标准覆盖扩大:WPT 子测试通过超过 73 万项

Kitesurf 新增和增强了多项浏览器能力,以便 Agent 能够渲染更复杂的网页。目前支持范围包括:

  • WebMCP
  • CSS Layout
  • CSS Object Model(CSSOM)
  • CSS Typed OM
  • Custom Elements

此外,Kitesurf 还加入了以下能力:

  • 基于 URL 的模块解析
  • JSON Modules
  • Import Map 处理
  • 通过 Workers 模块注册表支持从 URL 导入模块

这些能力对于现代网站非常重要,因为许多页面会将 JavaScript 拆分为多个模块并按需加载。

Iframe 行为也有所改进:现在 iframe 能够在更合适的时机加载,隔离性更好,并且在更多语言和编码场景下正确显示文本。

在兼容性测试方面,Kitesurf 目前已通过超过 730,000 项 Web Platform Tests 子测试。相比发布初期,新增通过数量超过 500,000 项。

面向 Agent 的效率优化

对 AI Agent 来说,浏览器效率不只是“页面加载速度”,更关键的是 Agent 循环中的延迟:Agent 需要不断观察页面、推理、执行动作,再观察结果。

因此,Kitesurf 对浏览器引擎内部进行了优化,重点减少 DOM 遍历、计时器、字体获取等环节的开销,让 Agent 把更多计算资源用于推理,而不是等待浏览器状态更新。

主要优化包括:

  • 改进 JavaScript 执行路径,减少 Boa 与 DOM 之间的跨边界工作。常见读取操作如 getAttribute、id、parentNode,现在可以在 Wasm DOM 内部完成,减少重复的 Boa → JavaScript shim → Wasm 往返。
  • 减少计时器和脚本加载中的重复工作,并释放不再需要的对象内存。
  • 在两个 JavaScript 引擎之间传递代码时,更一致地处理对象和类,使复杂页面运行更高效。
  • 按需加载字体,减少不会被页面使用的字体请求。
  • 在获取特定语言字体文件前检查页面实际出现的字符。
  • 更准确地渲染合成斜体。

这些优化使 Kitesurf 在支持更多 Web 标准、逐步接近 Chrome 等完整浏览器能力的同时,整体耗时和 CPU 使用仍大致保持在发布时的基准水平,部分场景还有改善。

Browser Run 支持更完整

Browser Run 是一个用于以编程方式控制和运行无头浏览器实例的开发者平台。用户可以在不同浏览器类型中选择 Kitesurf。

此次更新后,Kitesurf 已覆盖完整的 Browser Run API,可与以下方式配合使用:

  • CDP
  • Playwright
  • Puppeteer
  • MCP

此外,Browser Run 的 Quick Actions 也扩展了可用方式。Quick Actions 提供常见浏览器任务的简化接口,例如:

  • 截图
  • 提取 HTML 内容
  • 生成 PDF
  • 执行其他常见浏览器操作

此前 Kitesurf 可通过 REST API 使用 Quick Actions;现在也可以在 Worker 脚本中通过 env.BROWSER.quickAction() 绑定调用。

Kitesurf 现在可以在终端中运行

Kitesurf 的架构将两个部分分离:

  • PageScript:处理页面会话并运行页面代码。
  • PageRenderer:根据计算后的页面对象生成实际像素。

这种设计带来隔离性和灵活性,也让渲染逻辑可以从 Kitesurf 内部拆出,放到客户端或另一个 Worker 中运行,同时保留安全敏感部分在服务端执行。

此次更新验证了这一能力:团队将 PageRenderer 移至 Playground Worker,并修改渲染输出方式,使其不再只生成图片,而是输出到 Kitty 终端图形协议。该协议被 Kitty、Ghostty、WezTerm 等现代终端支持。

对于不支持 Kitty 图形协议的环境,也新增了纯 ANSI 文本模式。

这意味着,用户现在可以直接在终端中用 Kitesurf 打开并渲染网页。这不仅减少了上下文切换,也能帮助开发者观察 Agent 使用 Kitesurf 时“看到”的页面形态。

小结

这次 Kitesurf 更新主要围绕 Agent 浏览网页的实际需求展开:

  • 通过 WebMCP 提高任务执行可靠性。
  • 扩大 Web 标准支持,提升复杂页面兼容性。
  • 优化 DOM、计时器、脚本和字体处理,降低 Agent 循环延迟。
  • 完整覆盖 Browser Run API,增强开发者集成能力。
  • 引入终端渲染,让开发者更方便地查看 Agent 视角下的网页。

整体来看,Kitesurf 正在从一个面向 Agent 的实验性浏览器,逐步补齐真实网页环境所需的标准兼容性和开发者工具链能力。

评论

请登录后发表观点

暂无数据