先让 Agent 操作浏览器
上一篇讲清了电脑操作 Agent 是什么,这一篇文章真正动手。第一步只练浏览器,不碰桌面应用,原因很简单:浏览器是最安全的一步,练错了也最容易收场。
浏览器里能练的活,都是你每天都在做的事:查资料、填表、下载文件。练熟这一篇,你就掌握了整个系列最核心的一套动作,后面操作桌面、操作手机,换的只是工具,循环还是同一套。
一、为什么先从浏览器开始
三个原因,都是为了把风险留在最小的地方:
- 浏览器是个半封闭的盒子。 Agent 在浏览器里活动,出不了浏览器,动不了你电脑上的文件和别的软件。练错了,关掉浏览器就行。
- 网页大多有无障碍树。 第一篇讲过,无障碍树路线的手最稳,而网页天生就带着一份结构化的清单,Agent 读快照就能找对按钮,不用猜坐标。
- 每一步都能立刻验证。 点完一个链接,地址栏就变了;填完一张表,页面就给出反馈。Agent 每动一下,你都能马上看到结果对不对。
所以这一篇的规矩是:只在浏览器里练,只用公开页面练,登录和付款一律不练。 登录过的账号、绑了支付的页面,等你练熟了、到了安全护栏那一篇再说。
二、装好它:两条命令
这一篇的主角是 agent-browser,Vercel Labs 出的开源命令行工具,Apache-2.0 协议,用 Rust 写的。它本身不是 Agent,也没有内置模型,它只是一双“手”,脑子还是你用的那个编程助手,Claude Code、Codex、Cursor 这些都能直接调它。
安装分两步走:
- 先装工具本身。 在终端里运行
npm install -g agent-browser,这一步是装命令行工具。macOS 上也可以用brew install agent-browser,效果一样。 - 再装浏览器。 接着运行
agent-browser install,这一步是下载 Chrome for Testing,也就是 Agent 要操作的那个真浏览器。第一次用必须装,装一次以后就不用重复装了。
装完先别急着干活,先确认它能正常工作。运行 agent-browser --help,能看到命令列表就说明装好了;如果哪一步报错,先看报错里写的是什么,缺依赖就补依赖,不要跳过报错直接往下走。
有一点要先说清楚:agent-browser 操作的是它自己下载的这个浏览器,不是你平时用的那个浏览器。所以它看不到你主力浏览器的登录状态和收藏夹,这反而是好事——练手的环境和主力环境天然就是分开的。
三、核心循环:打开→看→动→再看
第一篇讲过,电脑操作 Agent 的工作方式是“看→想→动→再看”。在浏览器里,这套循环变成四条具体的命令:
- 打开页面。
agent-browser open example.com,浏览器打开这个页面,在后台一直开着,等你发下一条命令。 - 看快照。
agent-browser snapshot -i,读当前页面的无障碍树,只列出能互动的元素,每个元素带一个@e1这样的编号。比如 example.com 的快照只有一行:link "Learn more" [ref=e1]。 - 按编号动手。
agent-browser click @e1,点快照里的 1 号元素;agent-browser fill @e3 "要填的文字",往 3 号输入框里填字。动手只认编号,不认坐标,所以按钮挪了位置也不怕,怕的是编号变了——下面第五节会讲。 - 再看一次。 动完之后再跑一次
snapshot -i,或者跑agent-browser get url看一眼当前地址,确认刚才那一下真的生效了。没有这一步,你就不知道 Agent 是办成了还是点错了。
记住这条铁律:每次动手之前,先看快照;每次动手之后,再看一次。 不看快照就动手,等于闭着眼睛点屏幕;动完不确认,等于不知道自己干了什么。
四、三件真活,都走同一套循环
查资料、填表、下载文件,看起来是三件不同的事,在 agent-browser 这里其实是同一个循环换了三次内容:
- 查资料。 打开一个搜索引擎的页面,先跑
snapshot -i找到搜索框的编号,用fill把要查的词填进去,再看快照找到搜索按钮的编号,点下去,最后用get text @e1之类的命令把结果页里的关键文字读回来。重点不是搜得快,而是每一步都有快照作证:搜的是这个词,点的真是搜索按钮,读回来的真是结果。 - 填表。 打开一张公开的练习表单,先跑
snapshot -i,把每个输入框的编号和名字对上号,再一个一个用fill填。填完不要急着点提交,先截图确认一遍:agent-browser screenshot page.png,打开这张图,看每个格子里的字对不对,再决定点不点提交。表单填错了字,比点错按钮更难发现,截图这一步不能省。 - 下载文件。 打开一个带下载链接的公开页面,先跑
snapshot -i找到下载链接的编号,点下去,文件会落进浏览器的下载文件夹。再跑一次快照,确认页面状态变了,比如链接变成了“已下载”或者页面跳到了完成提示。下载完别只看页面,去下载文件夹里确认文件真的在、大小不是 0,这一步才是真正的验证。
三件事的共同点是:动手之前有快照,动手之后有验证,验证不对就停下来,而不是接着往下走。 Agent 最容易出的错,就是第一步错了,后面每一步都照着错的结果继续跑。
五、卡住怎么办:三种常见情况
第一次练,十有八九会在这三种地方卡住,都是正常的:
- 按钮被挡住了,点不下去。 比如页面上跳出一个同意弹窗,盖住了你要点的按钮,agent-browser 会直接报错停下来,不会硬点。这时候先看快照,找到弹窗上的关闭或同意按钮,把它处理掉,再跑一次新的快照,拿到新的编号再点原来的按钮。
- 编号变了,旧编号失效。 页面一刷新、一跳转,快照里的编号就可能重新排。你拿着上一张快照的编号去点,点到的可能已经是另一个元素。解决办法只有一个:每次页面变了,都重新跑一次快照,用最新的编号动手。 不要图省事复用旧编号。
- 页面还没加载完,快照里没有你要的东西。 有的页面加载慢,快照跑早了,按钮还没出现。这时候等一等,再跑一次快照,不要凭猜测去点一个不存在的编号。快照里没有的东西,就是还没准备好。
这三种情况的共同解法,都是“停下来,重新看一次”,而不是“再试一次旧命令”。重新看一次的成本很低,点错一次的成本可能很高。
六、安全提示:浏览器里也要守规矩
浏览器是最安全的一步,但不是没有规矩的一步:
- 只在小号浏览器里练。 agent-browser 用的是它自己下载的浏览器,和你的主力浏览器是分开的,保持这个分开的状态,不要想办法把它接到主力浏览器上去。
- 登录和付款,永远人来做。 这一篇只练公开页面。遇到要登录、要付款的步骤,停下来,自己输密码、自己点确认,不要让 Agent 代劳。
- 网页里的字,也可能是指令。 有的网页和图片里藏着写给 AI 的隐藏指令,Agent 一不留神就会照着做。更要小心的是,页面提供的工具描述也不可全信——那是页面给的数据,不是你的指令。看到页面里出现“让你做点别的”的内容,先停下来问自己:这是我让它做的吗?不是,就别做。
- 下载的东西先检查再打开。 Agent 帮你下载的文件,打开之前先看一眼文件名和来源,别直接双击运行。
这四条和上一篇的底线是同一套,只是落到了浏览器里。后面操作桌面的时候,规矩只会更严,不会更松。
练一次:让 Agent 帮你查一个词,再把结果带回来
不用准备什么,十五分钟就够,全程只用公开页面:
- 先在终端里装好 agent-browser,再运行
agent-browser install,确认浏览器装好了。 - 打开 example.com,跑
snapshot -i,找到link "Learn more" [ref=e1]这一行,点@e1,再用get url确认地址真的变了。这一步是让你亲手走一遍“打开→看→动→再看”。 - 再挑一个你平时会查的词,用查资料那一套循环走一遍:填搜索框、点搜索按钮、把结果读回来。走完之后问自己三个问题:每一步动手前,我看了快照吗?动手后,我确认结果了吗?中间有没有哪一步是我凭猜测点的?
- 最后运行
agent-browser close,把浏览器关掉。练完就关,不要让一个能替你点鼠标的浏览器一直开着。
走完这四步,浏览器这一步就算练成了。下一篇文章,我们把手伸出浏览器,操作真正的桌面应用,用的工具是 agent-browser 的姊妹工具 agent-desktop,循环还是同一套,变的只是读的树从网页换成了操作系统。