如何在 Coding Agent 中使用 agent-browser

本文涉及的问题是因为我的环境非主流引起的。按照官方文档安装使用不存在以下问题。

关于 agent-browser 工具,可以先看看 AI 是如何介绍的:

agent-browser 是一个面向 AI Agent 的浏览器自动化 CLI 工具,让大模型能够像人一样操作网页:打开页面、读取内容、点击按钮、填写表单、截图、处理登录状态等。

不像传统 Playwright/Selenium 经常需要解析庞大的 DOM,它通过 snapshot 输出精简的无障碍树,并给元素分配引用,例如 @e1@e2,Agent 可以直接操作这些引用,减少上下文消耗。

简单地说,就是一个操作浏览器访问网站的工具,最大的特点是节省 Token。

由于我的系统软件,包括 agent-browser 和 Chrome 在内,都是使用 Scoop 安装的,在配置 agent-browser 时就会碰到一些坑。

缺少 skills 文档

Scoop 安装的 agent-browser 没有携带 skills 文档。用 agent-browser skills path 命令返回错误提示:

✗ Skills directory not found. Set AGENT_BROWSER_SKILLS_DIR or reinstall via npm.

文档获取很简单,直接从官方 GitHub 仓库下载项目中的 skills 和 skill-data 两个文件夹就行。问题是放在哪里比较好呢?放在和 agent-browser.exe 相同的路径下是没有问题,但是一旦下一次升级就需要重新添加 skill 数据了。

通过源代码可以得知,agent-browser 可以通过环境变量 AGENT_BROWSER_SKILLS_DIR 指定路径;如果没有设置这个环境变量,会从当前可执行文件路径以及递归向上级目录查找。对于 Scoop 安装的 agent-browser,如果把 skills 文档存放在 apps\agent-browser 下,好过放在 apps\agent-browser\current 下——这样可以避免每次升级后重新添加文档的麻烦。

假设 Scoop 安装路径即 C:\scoop,则最终目录结构如下:

C:\scoop\apps\agent-browser
├─0.33.2
├─current
├─skill-data
└─skills

不过这个方案也有个问题,就是执行 scoop clean agent-browser 命令后,skill 文件夹会被删除。 索性我让 AI 重写了 Scoop 官方的 agent-browser manifest,并上传到自己私有的 Scoop 仓库。主要是加入了一个 post_install 脚本,在安装完毕后下载 vercel-labs/agent-browser 仓库里的文档。

json{
    "version": "0.33.2",
    "description": "Browser automation CLI for AI agents.",
    "homepage": "https://agent-browser.dev",
    "license": "Apache-2.0",
    "architecture": {
        "64bit": {
            "url": "https://github.com/vercel-labs/agent-browser/releases/download/v0.33.2/agent-browser-win32-x64.exe#/agent-browser.exe",
            "hash": "291f0c33c2fbcbf159b5868065ab412dfd8722d6299821e010cf0715964f2cba"
        }
    },
    "bin": "agent-browser.exe",
    "post_install": [
        "$zipUrl = \"https://github.com/vercel-labs/agent-browser/archive/refs/tags/v$version.zip\"",
        "$tempDir = \"$env:TEMP\\agent-browser-skills\"",
        "New-Item -ItemType Directory -Path $tempDir -Force | Out-Null",
        "Invoke-WebRequest -Uri $zipUrl -OutFile \"$tempDir\\repo.zip\"",
        "Expand-Archive -Path \"$tempDir\\repo.zip\" -DestinationPath $tempDir -Force",
        "$root = Get-ChildItem -Path $tempDir -Directory | Select-Object -First 1",
        "Copy-Item -Path \"$($root.FullName)\\skills\" -Destination \"$dir\\skills\" -Recurse -Force",
        "Copy-Item -Path \"$($root.FullName)\\skill-data\" -Destination \"$dir\\skill-data\" -Recurse -Force",
        "Remove-Item -Path $tempDir -Recurse -Force -ErrorAction SilentlyContinue"
    ],
    "checkver": {
        "github": "https://github.com/vercel-labs/agent-browser"
    },
    "autoupdate": {
        "architecture": {
            "64bit": {
                "url": "https://github.com/vercel-labs/agent-browser/releases/download/v$version/agent-browser-win32-x64.exe#/agent-browser.exe"
            }
        }
    }
}

找不到 Chrome

由于 Chrome 也是通过 Scoop 安装的,agent-browser 无法找到它,需要在配置文件里指定路径。配置文件的路径为 %USERPROFILE%\.agent-browser\config.json

json{
  "$schema": "https://agent-browser.dev/schema.json",
  "executablePath": "C:\\scoop\\apps\\googlechrome\\current\\chrome.exe",
  "profile": "C:\\scoop\\persist\\googlechrome\\User Data"
}
config.json

Profile 路径可以按照实际情况设置。此处我的 Chrome 用户数据并没有放在默认的 %LOCALAPPDATA% 路径下。不过通过 Scoop 新安装的 Chrome 用户数据是存放在默认路径的。具体原因可以参考之前的文章《Scoop 安装 Chrome 浏览器的用户数据问题》。

顺便一提,agent-browser doctor 命令存在一个恶心的问题——即便配置文件指定了 Chrome 路径,它仍然会报错提示 No Chrome binary found

当然,你完全可以通过 agent-browser install 命令安装一个全新的 Chrome,就是会额外占用 400 多兆的系统盘空间。