news 2026/10/8 18:23:21

在Gondolin micro-VM中跑通Chromium浏览器:Browser Use Agent实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
在Gondolin micro-VM中跑通Chromium浏览器:Browser Use Agent实战指南

在Gondolin micro-VM中跑通Chromium浏览器:Browser Use Agent实战指南

【免费下载链接】gondolinExperimental Linux microvm setup with a TypeScript Control Plane as Agent Sandbox项目地址: https://gitcode.com/gh_mirrors/go/gondolin

Gondolin 是一个开源的 Agent 沙箱项目:它用 QEMU 在本地拉起轻量 Linux micro-VM,并用 TypeScript 实现可编程的网络与文件系统控制平面,让 AI Agent 生成的代码在隔离环境中安全运行。本文带你从零开始,在 Gondolin micro-VM 中跑通 Chromium 无头浏览器,再用 Browser Use Agent 从宿主机远程控制它,全程约 5 分钟。

为什么要在 micro-VM 里跑 Chromium?

AI Agent 操作浏览器时,页面里可能执行任意 JavaScript。如果浏览器直接跑在你的宿主机上,一个恶意的网页就拿到了你的整个环境。

Gondolin 的思路是:浏览器整个装进 micro-VM,宿主机只通过 ingress 网关访问 VM 内的 Chrome DevTools Protocol(CDP)端点。这样 Agent 拥有完整的浏览器能力,却被限制在一台秒级启动、用完即弃的微型虚拟机里。

相关设计理念可以在官方文档中了解更多:docs/workloads.md、docs/ingress.md。

环境准备:安装 Gondolin 与 QEMU

先确认宿主机满足以下要求:

平台安装命令
macOSbrew install qemu node
Linux (Debian/Ubuntu)sudo apt install qemu-system-arm nodejs npm

运行示例脚本还需要uv(Python 包管理器)。克隆仓库后即可在 host/examples/ 找到所有现成示例。

💡 当前运行时验证最完善的架构是 ARM64(Apple Silicon / Linux aarch64)。

一键构建 Chromium 镜像:自定义镜像实战

Gondolin 支持自定义镜像构建,把浏览器及其依赖一次性烤进 rootfs。仓库里已经提供了一个开箱即用的配置:host/examples/chromium.json。

关键内容一览:

  • 基于 Alpine 3.23 +linux-virt内核,架构aarch64
  • 安装chromium、uv、python3、dbus、font-noto等浏览器必需组件
  • 通过init.rootfsInitExtra指定启动脚本 host/examples/chromium-init-extra.sh

这个初始化脚本做了几件"无头环境下让 Chromium 跑起来"的关键事:

  1. 创建messagebus系统用户并启动 D-Bus 系统总线(Chromium 依赖它)
  2. 编译 GSettings schemas(APK 包安装时不会自动执行)
  3. 写入/etc/chromium/zz-gondolin.conf,预置--headless --no-sandbox --disable-gpu等无头沙箱默认参数

执行构建命令,把镜像打成browser-use:latest标签:

node host/bin/gondolin.ts build \ --config host/examples/chromium.json \ --tag browser-use:latest

构建原理(cpio、lz4、e2fsprogs 等依赖)可参考 docs/custom-images.md。

运行 Browser Use Agent:从启动到拿到结果

示例脚本 host/examples/browser-use.ts 完成了整条链路,流程如下:

  1. VM.create()用browser-use:latest镜像启动一台 micro-VM
  2. vm.enableIngress()在宿主机开启 HTTP 网关,并把/路由到 VM 内9222端口(CDP)
  3. vm.exec()在 VM 内启动 Chromium:
/usr/bin/chromium --headless --no-sandbox \ --remote-debugging-address=127.0.0.1 \ --remote-debugging-port=9222
  1. 宿主机轮询CDP /json/version接口,等浏览器就绪
  2. 用uv run --with browser-use --with openai启动 Agent,把 ingress URL 作为 CDP 地址传入

Agent 的任务很简单:打开 example.com 并返回页面标题,脚本会校验返回结果中是否包含 "Example Domain"。

带上前面的 API Key 即可运行:

OPENAI_API_KEY=... node host/examples/browser-use.ts

成功后终端会打印Gondolin Chromium CDP: http://127.0.0.1:xxxxx和Browser Use result: Example Domain,随后 VM 自动关闭——这正是 Gondolin 推荐的"运行 → 持久化结果 → 丢弃 VM"生命周期。

原理解析:Ingress 网关如何安全暴露 CDP

这套方案的安全核心在于 ingress 网关(见 docs/ingress.md):

  • 只代理 HTTP,且只连 VM 内回环地址。Chromium 的 CDP 绑定在127.0.0.1:9222,VM 内的其他端口宿主机根本摸不到
  • 网关监听在宿主机的127.0.0.1随机端口,不对外暴露
  • 路由表由宿主机控制(/etc/gondolin/listeners或代码里的setIngressRoutes),暴露什么完全由你的代码决定
  • 用完即关:ingress.close()+vm.close(),浏览器进程随 VM 一起销毁

换句话说:宿主机拿到的是一个"受控的浏览器遥控器",而不是一个开放的端口转发。

常见问题与下一步

Q:构建镜像很慢/报mke2fs: command not found?缺少构建工具,macOS 执行brew install lz4 e2fsprogs,Linux 执行sudo apt install lz4 cpio e2fsprogs,详见 docs/custom-images.md 的故障排查章节。

Q:CDP 一直等不到就绪?通常是浏览器依赖缺失(如 D-Bus、字体)。检查自定义镜像是否正确执行了 host/examples/chromium-init-extra.sh 中的初始化步骤。

Q:可以换模型或镜像吗?可以。BROWSER_USE_IMAGE环境变量可切换镜像,OPENAI_MODEL可切换模型,见脚本头部注释。

延伸阅读:

  • 可编程网络出口与密钥注入:docs/secrets.md
  • 快照与磁盘检查点:docs/snapshots.md
  • 更多端到端示例(SSH、uv、嵌套 VM):host/examples/

用 Gondolin,你可以把"浏览器 + Agent"这对黄金组合完整锁进一台秒级启动的 micro-VM 里——既能放手让 Agent 干活,又不必为它的不安分买单。

【免费下载链接】gondolinExperimental Linux microvm setup with a TypeScript Control Plane as Agent Sandbox项目地址: https://gitcode.com/gh_mirrors/go/gondolin

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/8 18:22:55

黄金短期维持回落低位调整待回升

上日周二:黄金因法国政府债券收益率回调缓解了欧元区债务市场压力的担忧,美元指数则大幅下挫,使其触底回升式震荡收涨。今日周三:黄金开盘先行窄幅运行,美元指数及美债收益率反弹动力减缓,短期偏向震荡或回…

作者头像 李华
网站建设 2026/10/8 18:22:42

什么是服务器日志?为什么日志非常重要?

什么是服务器日志?为什么日志非常重要? 服务器每天都会产生大量运行记录,这些记录通常被称为日志。 日志可以记录很多信息,例如用户访问、程序运行、系统事件以及错误信息等。 很多时候,服务器出现问题以后&#xff0c…

作者头像 李华
网站建设 2026/10/8 18:21:31

晋级答辩复盘,录音整理到重点提炼,这一套流程真的太省心了

每年年中到年底,是各大公司职级晋升、岗位竞聘、内部评审的高峰期。作为一个在职场摸爬滚打十几年的“老油条”,我参与过不下百场答辩会,既当过答辩人,也做过评审组秘书。说实话,答辩过程中最让人头疼的,从…

作者头像 李华