AI 浏览器智能体需要专属浏览器

把日常使用的浏览器交给自主智能体,等于把你的 Cookie、登录状态和设备都交了出去。本文说明为什么智能体应当运行在隔离的配置文件中,以及如何为它们配置。
让 AI 智能体在网络上拥有真正能力的最快办法,是让它驱动浏览器;而最快后悔的办法,就是让它驱动你自己的浏览器。日常浏览器保存着你曾登录过的每一个会话,一个能点击的智能体,可以点击这些会话所能触及的一切。
爆炸半径问题
被要求调研供应商的智能体并不想打开你的银行标签页。但它所运行的浏览器不做这种区分:一个 Cookie 容器、一套保存的登录信息、一个机器身份。凡是智能体能导航到的地方,它都已经通过了身份验证。人们最先想到的缓解办法 — 单独的 Chrome 配置文件、无痕窗口 — 只是挪动了 Cookie,其他什么都没有挪动。
隔离究竟需要覆盖什么
- 存储:独立的 Cookie 容器、Local Storage 和 IndexedDB,存放在没有其他程序写入的目录中
- 凭据:只有你有意登录到该配置文件的账号,没有其他
- 网络:独立的线路,使智能体的流量与你的流量不是同一个地址
- 设备身份:对该配置文件保持稳定,且不是你工作用机器的副本
- 扩展:只包含智能体所需的,而不是你的密码管理器
这份清单,正是隔离的浏览器配置文件本来就满足的那一份。从浏览器的角度看,智能体不过是你机器上的又一个用户,不应当能够看到你其余的工作。
为智能体配备配置文件
在 PowerOps 中,这套模式很简短。为智能体创建一个配置文件,给它你想让其流量使用的线路,并且只登录该任务需要的账号。然后通过本地 API 启动它,该 API 会返回浏览器的调试端点,再让你的智能体框架指向这个端点,而不是指向它自己启动的浏览器。
# Start the agent's profile and take the endpoint it returns.
curl -s -X POST http://127.0.0.1:50326/v1/browsers/start \
-H "Authorization: Bearer $POWEROPS_KEY" \
-H "Content-Type: application/json" \
-d '{"profileId": "agent-research-01"}'
任何支持 Chrome DevTools Protocol 的工具都能连接该调用返回的端点 — Puppeteer、Playwright,或封装了二者之一的智能体框架。智能体的代码不需要任何改动;改变的是它所落入的浏览器。
每个任务一个配置文件,而不是每个智能体一个
直觉是给智能体一个配置文件,更好的单位其实是任务。一个用于供应商调研的配置文件,一个用于它被允许发帖的账号,一个用于它读取的仪表板。如果某次运行出了问题,损害被限制在那一个配置文件所能触及的范围内,而且你可以丢弃该目录,重新开始。
让每次运行具有可比性
智能体很难调试,因为两次运行很少是同一次运行。一个每次启动都报告同一台设备、来自同一线路、状态保持你离开时模样的配置文件,消除了各次尝试之间的一整类差异。当某次运行表现不同时,环境不再是嫌疑对象之一。
底线
这一切都不是绕过网站条款、速率限制或 robots 政策的办法,也不是作为这样的办法来出售的。它给智能体的,是一个属于任务而不是属于你的浏览器。
