bua
anxuanzi/bua加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
凌晨两点,程序员小李第 17 次修改他的爬虫脚本——某个电商网站改了商品列表的 CSS 类名,他花了两个小时重新定位每个选择器。网站运营人员并不知道,他们每一次 UI 改版都在制造新的"爬虫地震"。这不只是小李一个人的困扰:传统的浏览器自动化依赖硬编码的 CSS Selector 或 XPath,网站每更新一次布局,脚本就瘫痪一次,维护成本随着网站迭代线性增长。
BUA(Browser Use Agent)正是为解决这个顽疾而生。它的核心理念很简单:不再告诉机器人"点什么",而是告诉它"你想要什么"。
BUA 由 Go 开发者 anxuanzi 创建,是一个将大语言模型引入浏览器自动化的开源项目。它站在 Python 生态中 browser-use、Playwright MCP 等前辈的肩膀上,但选择了一条不同的技术路线:完全基于 Go 语言实现,底层使用 go-rod 库操控 Chrome DevTools Protocol,结合 Google Agent Development Kit(ADK)驱动 AI 决策引擎,调用 Gemini 系列模型理解页面内容并规划操作步骤。
这种架构有几个鲜明特点:首先,Go 的并发优势让 BUA 在处理多标签页、多任务编排时天然高效;其次,go-rod 相比 Puppeteer/Playwright 的 Python 绑定更轻量,内存占用更低;最后,Google ADK 提供了标准化的 Agent 运行时,工具调用(Tool Calling)、多轮对话记忆、session 管理均有成熟实现。
BUA 的使用方式极为简洁——用自然语言描述任务,Agent 自动完成。以下是几个典型场景:
电商比价任务:输入"访问京东和天猫,搜索 iPhone 16,找出同款价格最低的三个商家",Agent 会依次打开两个浏览器标签,分别在两个平台搜索,对结果进行截图,由 Gemini 模型提取价格信息,最终汇总返回。过程中的翻页、弹窗处理、页面滚动全部由 AI 自适应完成,无需任何选择器配置。
表单自动填写:传统自动化中,定位每个表单字段是最大的工程量。BUA 只需要说"填写这份注册表单,姓名用张三,邮箱用 test@example.com",Agent 会分析页面 DOM 结构,理解每个输入框的语义,自动完成填写并提交。
端到端测试:对于前端开发者,可以用自然语言描述用户旅程:"登录 → 进入设置 → 修改头像 → 退出",Agent 自动执行并在每一步截图记录,由 AI 判断页面是否正常渲染。
在实现层面,BUA 的 Agent 决策流程如下:接收任务描述 → 截取当前页面截图 → 将截图(配合 DOM 序列化文本)发送给 Gemini → Gemini 分析当前状态,决定下一步操作(点击、输入、滚动等)→ go-rod 执行操作 → 重复直到任务完成或达到最大步数上限。
BUA 的代码库结构清晰,分以下几个核心包:
Config.go 定义了多个质量预设(Preset):fast 模式使用纯文本无截图,适合简单查询以节省 token;balanced(默认)在质量与成本间取得平衡;max 模式提供最高清截图用于复杂页面分析。
依赖方面,go.mod 显示核心依赖为 go-rod(Chrome DevTools 封装)、google.golang.org/adk(Agent 开发框架)、google.golang.org/genai(Gemini API 客户端)。
BUA 并非零门槛的"开箱即用"产品。使用者需要满足以下条件:Go 1.25+ 开发环境、本地安装 Chrome/Chromium 浏览器、从 Google AI Studio 申请 Gemini API Key。API Key 的配置和计费管理是实际使用中的主要摩擦点——对于没有 Google 账号或不便访问海外服务的用户,门槛较高。
此外,作为纯库(Library)而非独立服务,BUA 没有提供 Web-UI 或命令行交互界面,需要开发者将其集成到自己的 Go 应用中。相比 Python 生态中 browser-use 的快速原型体验,BUA 更适合将浏览器自动化能力作为系统组件集成到现有 Go 服务里。
从稳定性角度看,GitHub 数据显示该项目仅 86 stars、9 forks,尚处于早期阶段。仓库中包含 e2e 测试用例,但测试覆盖率和持续集成状态需要进一步观察。MIT 许可证对商业使用友好,这是加分项。
BUA 代表了一个正在兴起的技术方向——Agentic Web Automation。传统爬虫和 RPA(机器人流程自动化)的核心矛盾在于"规则"与"变化"的对抗:规则越具体,适应性越差;规则越通用,实现越复杂。大语言模型改变了这一方程:Agent 不再依赖精确规则,而是理解语义并自适应规划。
从 Python 到 Go 的迁移也有深意:Go 在云原生、CLI 工具、后台服务领域的主导地位,使得 BUA 天然适合集成到 Kubernetes CronJob、CI/CD 流水线或 DevOps 自动化脚本中。未来若结合 Ollama 等本地模型支持,有望进一步降低部署门槛。