news 2026/10/18 1:46:44

browser-agent:5 分钟跑通的自然语言浏览器自动化框架

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
browser-agent:5 分钟跑通的自然语言浏览器自动化框架

browser-agent:5 分钟跑通的自然语言浏览器自动化框架

【免费下载链接】browser-agentOpen-source, vision-first browser agent项目地址: https://gitcode.com/GitHub_Trending/magnit/browser-agent

browser-agent(Magnitude)是一个开源的视觉优先(vision-first)浏览器自动化框架:它用视觉 AI 理解页面截图,让你用自然语言驱动一个真实浏览器——点按钮、填表单、拖拽、提取结构化数据,甚至直接跑端到端测试。如果你受够了"UI 一改、选择器全崩"的 E2E 测试,或者想给编码代理装上"手和眼睛"去操作 Web 应用,这个框架值得看一眼。

一、它凭什么好用

不靠选择器,靠像素坐标。传统浏览器代理在页面上画带编号的框来定位元素,遇到复杂现代站点就容易失效。browser-agent 让"视觉接地"(能理解图片上精确坐标的多模态模型)直接指定点击的像素位置,交互不依赖 DOM 结构。效果是实打实的:官方在 WebVoyager 基准上拿到 94% 的得分(见 README.md)。

测试写成大白话。测试步骤用act('Log in')这种自然语言描述,断言用check('Dashboard is visible')视觉检查。把一段 Playwright 的 todo 用例迁过来,代码能从十几行压到五六行,对比示例见 docs/testing/building-test-cases.mdx。

一套内核,三种形态。同一个浏览器操作内核同时支撑:自动化 SDK(packages/magnitude-core/)、测试运行器(packages/magnitude-test/)、MCP 服务器(packages/magnitude-mcp/)。写自动化脚本和写测试用例共享同一套心智模型。

抽象层级随意切。agent.act()既能接"创建一个任务"这种高层任务,也能接"把某张卡片拖到第一列顶部"这种低层动作,还能在 agent 级和单个 action 级注入自定义 prompt,方便在生产环境里精确控制行为。

二、从零到跑通

1. 两条命令完成初始化

在已有的 Web 项目里加测试:

npm i --save-dev magnitude-test && npx magnitude init

它会生成tests/magnitude目录,里面有magnitude.config.ts(全局配置)和example.mag.ts(示例用例)。如果你是想从零搭一个自动化项目,而不是接入现有测试,用脚手架:

npx create-magnitude-app

2. 写一个最小用例

import { test } from 'magnitude-test'; test('can add and complete todos', { url: 'https://magnitodo.com' }, async (agent) => { await agent.act('create 3 todos', { data: 'Take out trash, Buy groceries, Ship it' }); await agent.check('should see all 3 todos'); // 视觉断言 await agent.act('mark each todo complete'); await agent.check('says 0 items left'); });

步骤描述像跟同事交代事情:目标说清楚即可,不用细化到"先点哪个输入框"。

3. 跑起来

npx magnitude # 运行所有 *.mag.ts 用例 npx magnitude -w 4 # 4 个 worker 并行跑

有任一用例失败时进程以退出码 1 结束,可以直接挂在 CI/CD 里当门禁。

注意一个前置条件:它需要一个视觉接地的模型,推荐 Claude Sonnet 4(设置ANTHROPIC_API_KEY即可),开源替代是 Qwen 2.5 VL 72B。大多数常见模型(包括部分大厂的通用多模态模型)并不支持精确坐标定位,选错模型是最常见的翻车点,清单见 docs/core-concepts/compatible-llms.mdx。

三、真实场景怎么落地

给自己的 Web 应用做端到端测试。适用:想降低 UI 改版带来的测试维护成本,用例数量在几十到上百这个量级。边界:它是概率性判断,不是确定性断言。如果你的场景要求毫秒级时序控制或"必须逐字符相等"这类严格校验,还是该用 Playwright 的精确断言,把它当补充而非替代。

抓取没有 API 的站点数据。用extract()传一段说明加 zod schema,它把页面内容转成结构化数据返回,详见 docs/core-concepts/data-extraction.mdx。边界:受站点条款约束,别拿它做高频爬取;适合"取一次数据喂给下游流程"这类低频集成。

给编码代理装上浏览器。通过 MCP 接入后,Claude Code、Cursor、Cline 这类代理能在开发过程中实时打开页面、看到截图、动手点页面,边写边验证。适合"改完代码自己看一眼页面"的自测循环,不适合无人值守的大批量操作。

四、进阶玩法与生态集成

接入 MCP 服务器。安装后把下面配置贴进你用的客户端(Claude Code 可一行claude mcp add magnitude -- npx magnitude-mcp):

{ "mcpServers": { "magnitude": { "command": "npx", "args": ["magnitude-mcp"], "env": { "MAGNITUDE_MCP_PROFILE_DIR": "~/.magnitude/profiles/default", // 持久化 cookie "MAGNITUDE_MCP_STEALTH": "true", // 反检测 "MAGNITUDE_MCP_VIEWPORT_WIDTH": "1024" } } } }

测试运行器可调项。magnitude.config.ts里值得留意的几项:browser.contextOptions可传任意 Playwright 上下文参数(比如recordVideo录下每次运行);webServer配置本地开发服务器命令,跑测试时自动拉起、结束后自动杀掉;continueAfterFailure: true让失败用例不中断整轮。全部选项见 docs/testing/test-configuration.mdx。

提取器是独立包。packages/magnitude-extract/ 提供页面内容转 Markdown 的结构化抽取能力,可以脱离 agent 单独用。

五、踩坑与排错

现象解法
代理点不准、动作混乱模型不支持视觉接地。换成 Claude Sonnet 4 / Sonnet 3.7 / Opus 4 / Qwen 2.5 VL 72B,参考 docs/core-concepts/compatible-llms.mdx
同一用例时过时不过把模糊步骤拆细、描述更具体("创建公司"→"在表单里填前两项,其余用默认值提交"),具体描述能显著提升稳定性
本地站点测试总打不开在配置里写webServer(启动命令 + 监听 URL + 超时),Magnitude 会自动起服务并在结束时清理
一个失败全队列停摆加--no-fail-fast参数或配置continueAfterFailure: true
不想上传运行遥测配置里设telemetry: false即可关闭

另外提醒:测试 URL 的解析顺序是环境变量MAGNITUDE_TEST_URL→ 全局配置 → 用例组 → 单条用例,排查"它到底打开了哪个地址"时按这个顺序查。

收尾

一句话:browser-agent 把"操作浏览器"这件事从写选择器换成了说人话,换来的是 UI 改版不再批量击穿你的测试。想深入,可以直接翻 packages/magnitude-core/examples/ 里的可运行示例和 docs/ 下的完整文档,照着改几个act()调用就是最快的上手方式。

【免费下载链接】browser-agentOpen-source, vision-first browser agent项目地址: https://gitcode.com/GitHub_Trending/magnit/browser-agent

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

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

SQL子查询全解析:四种形态、执行原理与性能优化实战

子查询大概是新手从“会写SQL”到“敢碰复杂业务报表”之间,最过瘾的一道分水岭。没接触它之前,遇到“按某个汇总结果再筛选一次”的需求,我脑子里只有两种方案:要么把数据分两次查出来,回到代码里用 if 拼&#xff1b…

作者头像 李华
网站建设 2026/10/18 1:46:27

CTF2:Tetraes 加密实战——从 AES S-Box 到密钥调度的可复现验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/18 1:46:04

ChatTTS-ui 音色定制实战指南:3 步拿到可复用的自定义声音

ChatTTS-ui 音色定制实战指南:3 步拿到可复用的自定义声音 【免费下载链接】ChatTTS-ui 一个简单的本地网页界面,使用ChatTTS将文字合成为语音,同时支持对外提供API接口。A simple native web interface that uses ChatTTS to synthesize tex…

作者头像 李华
网站建设 2026/10/18 1:44:41

嵌入式GBK点阵字模:16×16与24×24索引算法及工程集成

简介:这是一份面向打印机固件开发、LCD汉字显示及嵌入式字库应用场景的GBK点阵字模资源,收录GBK1.0规范内22046个汉字,不含用户自定义区,可解决开发中难以找到专业字库的痛点。包内提供1616与2424两套点阵字库文件,并附…

作者头像 李华
网站建设 2026/10/18 1:43:47

ThingsBoard 日志越滚越大?用 logback 内置轮转 3 步控住磁盘

ThingsBoard 日志越滚越大?用 logback 内置轮转 3 步控住磁盘 【免费下载链接】thingsboard All-in-one IoT Platform - Device management, data collection, processing and visualization. 项目地址: https://gitcode.com/GitHub_Trending/th/thingsboard …

作者头像 李华
网站建设 2026/10/18 1:41:49

AI Agent 面试题 055:Agent的输入预处理流水线应该包含哪些步骤?

🔥 AI Agent 面试题 055:Agent的输入预处理流水线应该包含哪些步骤?摘要:本文深入解析了「Agent的输入预处理流水线应该包含哪些步骤?」这一 AI Agent 领域的核心面试题。文章从 核心组成(感知/决策/执行&a…

作者头像 李华