开源项目 ikey4u/zebkit(最新释放版本 0.4.0,基于 Chromium 157.0.8103.38)把庞大的 Chrome 拆成了一个可以像 SQLite 一样随手链接的单一动态库。它砍掉了 Chrome 浏览器外壳,也扔掉了 Electron 依赖的 Node.js 运行时,直接给 C、C++、Rust、Python 和 JavaScript 原生应用调用,支持 Linux、macOS 和 Windows。项目主页最抓人眼球的是三组对比 Electron 45.2.1 的数字:体积缩小 34%、冷启动从 6.6 秒压到 2.3 秒、单页内存降低 29%。但如果你只把它当成一个更省内存的 Electron 替代品,就既看高了它的跑分,也看低了它的野心。
顺手排个雷:去搜这个名字时,别和老牌开源项目 barmalei/zebkit(zebkit.org)搞混。后者是存在多年的 HTML Canvas UI 框架,跟今天聊的 Chromium 引擎封装库毫无关系。
空白页省三成内存,到了真网页只省 3.6%
任何宣称大幅压降 Chromium 内存的项目,都得先去翻它的底层测试报告。zebkit 首页挂着的体积省 34%(171.2 vs 260.5 MiB)、冷启动 2.3 秒对 6.6 秒、内存省 29%(179 vs 250 MB),其实是 0.2.0 版本的旧数据;到了 0.4.0 版本,作者压根没重跑对比,直接沿用了 0.3.0(升级 Chromium 157 时)的报告。
即便看 0.3.0 的新版数据,空白页内存确实从 Electron 的 250 MB 降到了 181 MB(缩减 27%),解压体积也从 260.5 MiB 降到 174.1 MiB(缩减 33%)。一旦脱离空白页,打开 10 个真实网站做负载测试,zebkit 占了 4,495 MB,Electron 占了 4,661 MB,内存差距瞬间缩水到仅约 3.6%。
账其实很好算:剥离 Node.js 和浏览器外壳,省下的只是几万行底座开销;真跑起现代网页,吃内存的大户永远是 DOM 树、V8 堆内存和图层渲染。
至于冷启动至首次内容绘制(FCP)2.329 秒对 5.769 秒的悬殊差距,测试环境写得很诚实:跑在清除了文件系统缓存的共享机械硬盘(spinning disk)上,且双方都关掉了沙盒(sandbox disabled)。因为 zebkit 解压后比 Electron 小了约 86 MiB,在机械硬盘时代,少读近 90 兆文件自然快出一大截;换成今天普及的 NVMe SSD,这个绝对时间差会被大幅抹平。
真正的狠活是把 Chromium 掏空当标准库用
过去十年,桌面开发一直卡在三个死胡同里:用 Electron,等于逼着你的应用住进它那套捆死 Node.js 的重型运行时里;用 Tauri 或 WebView2,包是小了,但得看系统原生 WebView 的脸色,跨平台渲染常出幺蛾子;用老牌的 CEF(Chromium Embedded Framework),集成维护极重,而且只管渲染网页。
更荒诞的是,Chromium 肚子里明明塞满了顶级工业级组件,传统嵌入方案却把它当黑盒锁死。你的宿主程序哪怕已经背上了两百兆的 Chromium,一旦业务里要用数据库、做加密、转码音视频或者解析 PDF,还得在外面自己再打包一份 SQLite、OpenSSL、FFmpeg 或 PDFium。
省内存只是障眼法,把浏览器拆成系统标准库才是真刀法。
zebkit 直接反客为主:你的 C/Rust/Python 程序保有自己的 main() 函数、事件循环和原生窗口,需要网页时塞一个视图进去;不需要网页时,它直接通过 zebkit_vendor_* 前缀,把 Chromium 肚子里的 17 个底层 C 库、约 7,490 个函数原样导出给你调。
这意味着只要链接了 zebkit,你的原生程序甚至不需要启动浏览器事件循环,就能直接白嫖 Chromium 内置的 SQLite、LevelDB、BoringSSL、zlib、Zstandard、FFmpeg、Skia(2D 绘图)、HarfBuzz(字体排版)和完整的 PDFium 接口(支持渲染、文本提取、批注、表单、红章与签名校验)。连网页里正在播放的 HLS 或 DASH 流媒体,也能直接从底层无损转存为 MP4 或 WebM,不用二次下载和重编码。
另一个直击痛点的设计是给 AI Agent 和自动化工具准备的。以往用 Playwright 操控浏览器,得在外面挂一个 Node.js 驱动,走 CDP(Chrome DevTools Protocol)协议通信。zebkit 直接把完整的 Playwright API 塞进了引擎内部原生运行,省掉外部驱动和协议开销,速度比走 CDP 快 3 到 10 倍,一次点击耗时从 33 毫秒压到了 3 到 5 毫秒,同时自带 zebkit-mcp 工具供 Agent 直接调用。
天下没有白吃的底层函数
最现实的雷区是上游 ABI 强耦合。将 Chromium 内部 17 个 C 库的约 7,490 个函数(如 BoringSSL、SQLite、FFmpeg、libxml2)暴露给宿主应用虽然避免了重复打包,但导致宿主应用的业务逻辑与浏览器引擎的升级周期强绑定。当你的宿主业务逻辑直接调了那 7,490 个导出函数,一旦 zebkit 跟随 Chromium 升级版本、修改内部库 ABI,你的宿主程序就可能面临兼容性断裂。
- 结论.如果你在做 AI Agent 本地执行器、需要毫秒级内嵌 Playwright,或是写一个重度依赖 PDF 编辑与音视频抓取的 C/Rust 桌面工具,zebkit 比 CEF 和 Electron 都更趁手。
- 风险.这本质上是一套庞大的自定义 Chromium 补丁集,把宿主业务绑死在
zebkit_vendor_*内部函数上前,先评估团队接不接得住上游 Chromium 狂飙突进的升级断裂风险。
