<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>WebAssembly on AI博士 万戈</title>
        <link>https://www.yesmiracle.net/tags/webassembly/</link>
        <description>AI博士万戈的技术博客，聚焦 Agentic AI、AI Infra 与 Agent Security，分享 AI 基础设施与工程落地实践。</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <managingEditor>admin@yesmiracle.net (万戈)</managingEditor>
        <webMaster>admin@yesmiracle.net (万戈)</webMaster>
        <lastBuildDate>Sun, 09 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://www.yesmiracle.net/tags/webassembly/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Cloudflare 造了个给 AI Agent 专用的浏览器！Kitesurf 内存只用 Chromium 的七分之一，12 周从零到发布！</title>
        <link>https://www.yesmiracle.net/post/20260809-cloudflare-kitesurf-agent-browser/</link>
        <pubDate>Sun, 09 Aug 2026 00:00:00 +0000</pubDate>
        <author>admin@yesmiracle.net (万戈)</author>
        <guid>https://www.yesmiracle.net/post/20260809-cloudflare-kitesurf-agent-browser/</guid>
        <description>&lt;img src="https://www.yesmiracle.net/post/20260809-cloudflare-kitesurf-agent-browser/cover.svg" alt="Featured image of post Cloudflare 造了个给 AI Agent 专用的浏览器！Kitesurf 内存只用 Chromium 的七分之一，12 周从零到发布！" /&gt;&lt;p&gt;你团队里的 AI Agent 需要访问网页的时候，背后是怎么做的？&lt;/p&gt;
&lt;p&gt;目前大部分方案都绕不开 Chromium——要么用 Puppeteer/Playwright 拉起一个无头 Chrome，要么用 Browserless/Selenium 之类的云端方案。结果呢？一个无头 Chrome 实例动辄占用 200-300MB 内存，CPU 开销也大得离谱。对于需要同时跑几十上百个 Agent 的场景，这笔开销直接反映在账单上。&lt;/p&gt;
&lt;p&gt;昨天 Cloudflare 在 Agents Week 上扔了一枚重磅炸弹：&lt;strong&gt;Kitesurf&lt;/strong&gt;——一个完全跑在 Workers V8 Isolate 里的浏览器，专门为 AI Agent 设计，没有 Chromium，没有单独的 Node.js 进程，只用了 12 周就从灵感走到了 Beta 发布。&lt;/p&gt;
&lt;h2 id=&#34;chromium-很好但-agent-需要的不是这些&#34;&gt;Chromium 很好，但 Agent 需要的不是这些&lt;/h2&gt;
&lt;p&gt;Cloudflare 团队直白地说了一个很多人心知肚明但没人敢直说的事实：&lt;strong&gt;Chromium 是为人类设计的，不是为 AI Agent 设计的。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;人类用户需要标签页、主题、扩展插件、设备间同步、60fps 顺滑滚动。Agent 在乎的是什么？Token 开销、上下文窗口、延迟、并发、可扩展性——这些 Chromium 一个都没优化过。&lt;/p&gt;
&lt;p&gt;更关键的是，Chromium 的安全模型和 Agent 的使用场景完全不匹配。Agent 需要访问的页面来自不可信的第三方来源，prompt injection、工具滥用等新型攻击面在 Chromium 的架构里根本没有考虑。&lt;/p&gt;
&lt;p&gt;所以 Cloudflare 问了自己一个问题：&lt;strong&gt;我们能不能重新造一个浏览器，只保留 Agent 需要的部分，砍掉所有人类专属的包袱？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;答案是 Yes，而且只用了 12 周。&lt;/p&gt;
&lt;h2 id=&#34;12-周从零到发布rust--wasm-堆栈&#34;&gt;12 周从零到发布：Rust + Wasm 堆栈&lt;/h2&gt;
&lt;p&gt;Kitesurf 的起点是一个叫 &lt;a class=&#34;link&#34; href=&#34;https://github.com/nicoverbruggen/obscura&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Obscura&lt;/a&gt; 的开源项目——一个用 Rust 写的无头浏览器引擎，没有任何 Chrome/Node.js 依赖。Cloudflare 团队在 AI Agent 的帮助下，花了 12 周把它移植到了 Workers 平台上。&lt;/p&gt;
&lt;p&gt;结果是一个三层架构的浏览器，完全跑在 Cloudflare Workers 的 V8 Isolate 里：&lt;/p&gt;
&lt;h3 id=&#34;三层架构&#34;&gt;三层架构&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;1. Engine（引擎层）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Engine 是 Kitesurf 唯一对外的组件。它处理 Chrome DevTools Protocol（CDP）的 WebSocket 和 HTTP REST API，管理每个 session 的状态。所有其他组件都是无状态的。&lt;/p&gt;
&lt;p&gt;这意味着你现有的 Puppeteer、Playwright、chrome-remote-interface 脚本几乎不用改就能直接切到 Kitesurf。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. PageScript（页面脚本层）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;每个页面或跨进程 iframe（OOPIF）通过 Dynamic Workers 启动一个独立的 PageScript Isolate。这个 Isolate 有干净的 &lt;code&gt;globalThis&lt;/code&gt; 和 DOM &lt;code&gt;document&lt;/code&gt; 对象。&lt;/p&gt;
&lt;p&gt;HTML 和 CSS 解析用 Blitz（一个模块化渲染引擎）和 Stylo（Firefox 的高性能 CSS 解析器）——都是 Rust 写的。JavaScript 和 WebAssembly 在同一个 Isolate 里执行。对于 eval 场景，他们用 Boa JS（另一个 Rust ECMAScript 引擎）做运行时之上的运行时。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. PageRenderer（页面渲染层）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;负责把 computed page object 变成像素。Engine 每次需要一帧时，PageRenderer 从 PageScript 拿到页面对象（scene），拉取内部字体和图片，用 blitz-paint + Parley 做文字排版和光栅化，返回 JPEG/PNG/PDF。&lt;/p&gt;
&lt;p&gt;Workers 内置的 RPC 系统让这一切变得简单——Engine Worker 调用 &lt;code&gt;renderFrame()&lt;/code&gt; 就像调用本地函数一样，实际跨 Isolate 执行。&lt;/p&gt;
&lt;h2 id=&#34;性能数据3-7-倍差距&#34;&gt;性能数据：3-7 倍差距&lt;/h2&gt;
&lt;p&gt;Cloudflare 放出了一组对比数据，非常直观：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;指标&lt;/th&gt;
          &lt;th&gt;Kitesurf&lt;/th&gt;
          &lt;th&gt;Chromium（温池）&lt;/th&gt;
          &lt;th&gt;Kitesurf 相对优势&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;CPU：截图&lt;/td&gt;
          &lt;td&gt;380 ms&lt;/td&gt;
          &lt;td&gt;1,173 ms&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;3.1x 更少&lt;/strong&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CPU：HTML 提取&lt;/td&gt;
          &lt;td&gt;229 ms&lt;/td&gt;
          &lt;td&gt;877 ms&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;3.8x 更少&lt;/strong&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;内存：截图&lt;/td&gt;
          &lt;td&gt;57.8 MiB&lt;/td&gt;
          &lt;td&gt;271.0 MiB&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;4.7x 更少&lt;/strong&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;内存：HTML 提取&lt;/td&gt;
          &lt;td&gt;39.4 MiB&lt;/td&gt;
          &lt;td&gt;273.7 MiB&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;7.0x 更少&lt;/strong&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;墙钟时间：截图&lt;/td&gt;
          &lt;td&gt;1,148 ms&lt;/td&gt;
          &lt;td&gt;637 ms&lt;/td&gt;
          &lt;td&gt;1.8x 更慢&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;墙钟时间：HTML 提取&lt;/td&gt;
          &lt;td&gt;820 ms&lt;/td&gt;
          &lt;td&gt;472 ms&lt;/td&gt;
          &lt;td&gt;1.7x 更慢&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;关键洞察&lt;/strong&gt;：Kitesurf 在绝对速度上略慢于 Chromium（JIT 预热后的引擎总是比冷启动的软件光栅化快），但在真正决定成本的&lt;strong&gt;内存和 CPU&lt;/strong&gt; 上，Kitesurf 领先 3-7 倍。更少的内存意味着可以运行更多并发 Session，更低的 CPU 意味着更少的计算资源消耗——这直接体现为更低的账单。&lt;/p&gt;
&lt;h2 id=&#34;安全设计默认隔离&#34;&gt;安全设计：默认隔离&lt;/h2&gt;
&lt;p&gt;Kitesurf 的安全模型值得单独拎出来说。&lt;/p&gt;
&lt;p&gt;传统浏览器在人类使用场景下，同一用户的多个标签页共享资源是可以接受的。但 Agent 访问的页面来自不可信的、任意来源。Kitesurf 的假设是：&lt;strong&gt;每个页面加载都是不可信的输入，每个 Session 从零开始&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;具体做法：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;SandboxOutbound Worker&lt;/strong&gt;：唯一能接触网络的组件，强制 CORS，注入浏览器特征头，过滤响应，每个页面的 Cookie 独立管理&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;组件级隔离&lt;/strong&gt;：每个组件只能访问其功能所需的最小资源&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;无状态优先&lt;/strong&gt;：无状态组件可随时销毁和重建，崩溃只是重启&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这和我们已经讨论过的 &lt;a class=&#34;link&#34; href=&#34;https://www.yesmiracle.net/post/20260727-mcp-protocol-security-model/&#34; &gt;MCP 安全模型&lt;/a&gt; 形成互补——MCP 解决的是 Agent 之间通信的安全，Kitesurf 解决的是 Agent 访问 Web 的运行时安全。&lt;/p&gt;
&lt;h2 id=&#34;可用性免费-betacdp-兼容&#34;&gt;可用性：免费 Beta，CDP 兼容&lt;/h2&gt;
&lt;p&gt;Kitesurf 已经在 Cloudflare Browser Run 中开放 Beta，&lt;strong&gt;免费使用&lt;/strong&gt;（有账户级别限制）。&lt;/p&gt;
&lt;p&gt;现有 Puppeteer/Playwright 用户只需要在 Browser Run 的 CDP endpoint 上加一个 &lt;code&gt;browser=kitesurf&lt;/code&gt; 参数即可切换。甚至可以直接和 OpenCode 等 MCP 客户端集成：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;mcp&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;kitesurf&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;local&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;command&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;npx&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;-y&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;chrome-devtools-mcp@latest&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;--wsEndpoint=wss://api.cloudflare.com/client/v4/accounts/&amp;lt;ACCOUNT_ID&amp;gt;/browser-run/devtools/browser?browser=kitesurf&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;--wsHeaders={\&amp;#34;Authorization\&amp;#34;:\&amp;#34;Bearer &amp;lt;API_TOKEN&amp;gt;\&amp;#34;}&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      ],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;enabled&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Cloudflare 还提供了一个公开的 Playground，可以输入任意 URL 看 Kitesurf 的渲染效果，甚至可以直接在页面里打开 Chrome DevTools 检查 DOM、Console、Network。最有趣的是 Memory 面板——它可以报告每个 Isolate 的 WebAssembly 内存占用。&lt;/p&gt;
&lt;h2 id=&#34;还不能做什么&#34;&gt;还不能做什么？&lt;/h2&gt;
&lt;p&gt;公平地说，Kitesurf 只有 12 周大，不是万能的：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;❌ 不能播放视频&lt;/li&gt;
&lt;li&gt;❌ 不支持 WebGL&lt;/li&gt;
&lt;li&gt;❌ 无法处理 bot challenge 握手（如 Cloudflare 自己的挑战页面）&lt;/li&gt;
&lt;li&gt;❌ 不支持需要持久化 State 的长会话（如 10 分钟的认证流程）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对于这些场景，Cloudflare 推荐继续用 Browser Run 的默认 Chromium 后端。Kitesurf 最适合的是&lt;strong&gt;一次性、短周期、高并发的 Agent 任务&lt;/strong&gt;——截个图、提取 HTML、做个 PDF，然后释放。&lt;/p&gt;
&lt;p&gt;Cloudflare 也承诺&lt;strong&gt;未来会开源 Kitesurf&lt;/strong&gt;，让客户可以在自己的账户上部署自己的版本。&lt;/p&gt;
&lt;h2 id=&#34;写在最后&#34;&gt;写在最后&lt;/h2&gt;
&lt;p&gt;Kitesurf 的出现释放了一个明确的信号：&lt;strong&gt;AI Agent 的基础设施正在从「拿人类工具硬改」走向「从零设计」&lt;/strong&gt;。就像当年容器化推动了从 VM 思维到 Container 思维的转变一样，Agent 时代也会催生一批全新的基础组件——Agent 专用的浏览器只是其中之一。&lt;/p&gt;
&lt;p&gt;12 周从灵感到 Beta，Rust + Wasm + Workers 的技术栈，比 Chromium 少 7 倍内存——这些数字本身就很 Cloudflare：&lt;strong&gt;用架构优势换成本优势，而不是用功能堆叠换增长&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;如果你也在跑 Agent 业务，给 Kitesurf 一个机会。免费的，试试不吃亏。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;延伸阅读：最近 AI Agent 基础设施领域还有不少大动作——&lt;a class=&#34;link&#34; href=&#34;https://www.yesmiracle.net/post/20260807-agent-plugins-standard/&#34; &gt;Agent Plugins 1.0 标准发布&lt;/a&gt; 和 &lt;a class=&#34;link&#34; href=&#34;https://www.yesmiracle.net/post/20260805-microsoft-tokenmaxxing/&#34; &gt;Microsoft 的 Token 预算「急刹车」&lt;/a&gt; 都值得一读。&lt;/p&gt;&lt;/blockquote&gt;
</description>
        </item>
        
    </channel>
</rss>
