4.1万 Star、用 Zig 从零写的无头浏览器:Lightpanda 凭什么比 Chromium 省 16 倍内存

导读lightpanda-io/browser 是一个不从 Chromium、WebKit fork 一行代码、完全用 Zig 从零写起的无头浏览器,专为 AI Agent 和规模化自动化设计。官方在 AWS m5.xlarge 上抓取 933 个真实网页的基准显示,它 100 页并发峰值内存仅 123MB(Headless Chrome 为 2GB,约 16 倍差距)、执行耗时 5 秒(Chrome 46 秒,约 9 倍)。本文基于仓库源码与官方基准,拆解它的技术栈分层(Zig 运行时 + Libcurl/html5ever + V8 DOM + CDP/WebDriver/MCP 接入)、四种用法(fetch、serve+CDP、agent、MCP server)、为什么 AI 时代反而需要一个新浏览器,也如实说清它没有图形渲染引擎、WPT 兼容性仍在追赶、只提供 nightly、AGPL-3.0 许可边界等局限——它是规模化自动化的专用利器,不是日常 Chrome 的完整替身。

做网页自动化的人,大概率都被 Headless Chrome 的内存账单折磨过:一个实例轻轻松松吃掉一两 GB,并发开到几十个,服务器内存先扛不住。主流方案要么是 Chromium 套壳,要么是 WebKit 改造,内核几十年的历史包袱都在。

今天这个项目选择了一条少有人走的路:不 fork Chromium、不 patch WebKit,用 Zig 语言从零写一个专门跑在服务端的无头浏览器。它叫 Lightpanda,目前 4.16 万 Star、2070 Fork、累计 1.19 万次提交,主语言 Zig,采用 AGPL-3.0 协议,仓库昨天还在更新。

我把仓库克隆下来、通读了 README 和官方基准仓库,这篇讲清楚它到底做成了什么、性能数据怎么来的、适合谁用,以及它眼下的真实边界。

一、先看最有冲击力的一组基准

Lightpanda 最常被引用的口号是"比 Chromium 轻 16 倍、快 9 倍"。这种数字不能只看营销页,得看测试协议。官方在 demo 仓库的 BENCHMARKS.md 里把方法、机器、对照版本全部公开了。

测试环境是一台 AWS EC2 m5.xlarge、全新 Ubuntu,对照浏览器是 Google Chrome 143,用 Go 写的 chromedp 爬虫抓取一个 demo 站点的 933 个真实 URL,内存用 smem 统计 PSS、CPU 用 ps 每 100ms 采样取峰值。

Lightpanda 与 Headless Chrome 的内存、耗时基准对比

几个关键数据:

  • 100 页并发:Lightpanda 峰值内存 123MB、耗时 5 秒;Headless Chrome 峰值 2GB、耗时 46 秒。
  • 单进程抓完 933 页:Lightpanda 用时 51.68 秒、峰值内存仅 27.2MB、CPU 11.1%;Chrome 单标签用时 82.83 秒、峰值 1.3GB。
  • 极限并发对照:Lightpanda 开 25 进程抓完 933 页只要 4.81 秒、峰值 123MB;而 Chrome 开 100 标签页跑同一任务,用时飙到 69 分 37 秒、峰值 4.2GB。

差距的根源不在某个优化技巧,而在架构取舍——这正是下一节要讲的。需要提醒的是,基准来自官方自建 demo 站,真实业务受页面复杂度、网络和 JS 框架影响,落地前务必用自己的页面回归测试。

二、为什么要从零造一个浏览器

README 的 “Why Lightpanda” 一节给出了完整论证,核心是两个判断。

第一,现代网页的 JavaScript 执行是刚需,简单 HTTP 请求不够用了。 今天的网站大量依赖 Ajax、单页应用、无限滚动、即时搜索,React/Vue/Angular 框架渲染的内容,不执行 JS 根本拿不到。所以 requests + BeautifulSoup 那一套在很多场景已经失效。

第二,把完整桌面浏览器搬上服务器,规模化时极不经济。 Chrome 为了兼顾普通人上网,带了图形渲染、多媒体、扩展、多进程隔离等一大堆无头场景用不上的东西,实例一多,内存和 CPU 成本就失控,部署维护也重。

Lightpanda 的选择是:既要真实的 JS 执行能力,又要服务端的极致轻量,那就只能推倒重来。

Lightpanda 五层技术栈架构

它的技术栈分层很清晰:

  • Zig 运行时底座:用 Zig 0.17 手写,显式内存控制,编译成单个二进制,而且没有图形渲染引擎——这是它省内存的关键,无头自动化本来就不需要画像素。
  • 解析与网络层:HTML 解析用 Servo 项目的 html5ever,HTTP 加载用 Libcurl,支持 CORS、代理、网络拦截。
  • JS 与 DOM 层:集成 Google 的 V8 引擎真正执行 JavaScript,实现 DOM 树、DOM API、XHR、Fetch、Ajax。
  • Agent 与脚本层:内置 agent 自然语言驱动和 PandaScript 确定性脚本。
  • 接入协议层:提供 CDP/WebSocket、WebDriver BiDi,以及原生 MCP server。

换句话说,它不是"简化版 Chrome",而是一个针对自动化场景重新选型、重新组装的浏览器。

三、四种用法,覆盖从命令行到多 Agent

Lightpanda 的四种使用方式

① fetch:一行命令抓取。 不需要起服务,直接 dump 页面,支持 html、markdown、png、pdf、structured_data(JSON-LD/OpenGraph/meta)多种输出,还能用 --obey-robots 遵守 robots 协议:

./lightpanda fetch --obey-robots --dump html \
  https://demo-browser.lightpanda.io/campfire-commerce/

② serve + CDP:无缝接入现有 Puppeteer/Playwright。 起一个 CDP 服务后,把连接端点指向 Lightpanda,原有自动化脚本几乎不用改:

./lightpanda serve --host 127.0.0.1 --port 9222
import puppeteer from 'puppeteer-core';
const browser = await puppeteer.connect({
  browserWSEndpoint: "ws://127.0.0.1:9222",
});
// 后面的 createBrowserContext/newPage/evaluate 写法完全不变

③ agent 模式:让浏览器听懂自然语言。 lightpanda agent 内置原生智能体,用大白话或斜杠命令描述任务,它就能导航、点击、填表、抽数据。最妙的是它的产物是 PandaScript——一段原生 JS 加少量浏览器原语,可以用 lightpanda run 离线、确定性、不耗 token 地回放。也就是说,用 LLM 做原型,用脚本上生产。它支持 Anthropic、OpenAI、Gemini、OpenRouter、Vercel AI Gateway、Ollama 等一大串提供商,也能 --no-llm 进纯 REPL。

④ 原生 MCP server:给多 Agent 当共享浏览器。 通过 stdio 或 HTTP 暴露 MCP 协议,每个连接分配独立的 browsing session(独立页面、cookie、内存),多个 Agent 各用各的会话不会互相串页,也可以用同一个 Mcp-Session-Id 共享上下文协作。

部署也对运维友好:Homebrew、AUR、Nix、官方 Docker 镜像都有,Linux/macOS 双架构,Windows 走 WSL2。

四、祛魅:它很强,但还不是 Chrome 替代品

Lightpanda 的适用场景与能力边界

把话说全,是对读者负责。Lightpanda 当前有几个明确边界:

  1. 没有图形渲染引擎。它能输出 png/pdf,但本质是文本化渲染,不适合做像素级视觉回归、截图比对这类任务。
  2. WPT 兼容性仍在追赶。它每天跑标准化的 Web Platform Tests 并公开结果,但离完整浏览器的兼容度还有距离,强依赖最新 CSS、Canvas、复杂 Web API 的页面可能表现异常。
  3. 只提供 nightly 构建。API 和行为都可能变动,官方也在 README 里承认"not yet fully compliant"。
  4. 平台与 libc 限制。没有原生 Windows/Android 包;Linux 二进制依赖 glibc,Alpine 这类 musl 系统会报 cannot execute: required file not found,需换 glibc 基础镜像或源码编译。
  5. 默认开启遥测,介意的话用环境变量 LIGHTPANDA_DISABLE_TELEMETRY=true 关闭。

许可方面要特别注意:项目是 AGPL-3.0。自己用、内部测试、学习都没问题;但如果你想基于它做对外提供网络服务的闭源 SaaS,AGPL 的网络分发条款会触发开源义务,这种场景需要评估合规或联系作者谈商业授权。

五、我的判断

Lightpanda 真正打中的,是 AI 时代一个越来越痛的点:当 Agent 需要大规模、低成本地操作网页时,为人类上网设计的 Chrome 太重了。 用 Zig 从零写、砍掉图形层、原生支持 CDP 和 MCP、还能把 LLM 操作沉淀成可离线回放的脚本,这套组合拳让它在爬虫降本、AI Agent 执行环境、结构化数据抽取、CI 无头测试这些场景里有明确的性价比优势。

但它不是要取代你日常用的浏览器。把它定位成"规模化自动化的专用利器",而不是"完整 Chrome 替身",预期就不会错。如果你正在为无头浏览器的内存账单发愁,值得拉下来用自己的页面跑一轮基准——毕竟它连测试方法都公开了,好不好用,你自己的服务器最有发言权。

项目地址:https://github.com/lightpanda-io/browser

官网文档:https://lightpanda.io