agent-browser多会话并行完全指南:如何同时运行多个浏览器互不干扰
【免费下载链接】agent-browserBrowser automation CLI for AI agents项目地址: https://gitcode.com/GitHub_Trending/agen/agent-browser
agent-browser是一款面向 AI Agent 的浏览器自动化 CLI 工具,它的多会话(Session)机制让你能同时运行多个完全隔离的浏览器实例——每个会话拥有独立的 Cookie、存储、历史记录和登录状态,互不干扰。无论是多账号测试、并发抓取,还是让多个 AI 助手同时干活,本指南都会用最简单的步骤带你跑通。
一、为什么需要多会话并行?
单浏览器时代,常见痛点是这样的:
- 抓取网站 A 时,网站 B 的登录态被冲掉;
- 两个 AI Agent 共用一个浏览器,点来点去互相"抢"同一个标签页;
- 想同时测试"游客视图"和"登录用户视图",却只能来回切换。
agent-browser 的解决方案很直接:用--session参数给每条命令指定会话名,每个会话就是一个独立的浏览器上下文。
会话管理的完整官方资料位于 session-management.md 和 sessions/page.mdx。
二、3 条命令创建你的第一个并行会话
无需任何额外配置,装好 agent-browser 后(npm install -g agent-browser),直接开两个会话:
# 会话 agent1:打开网站 A agent-browser --session agent1 open site-a.com # 会话 agent2:打开网站 B(完全独立) agent-browser --session agent2 open site-b.com此时你的机器上同时跑着两个浏览器,彼此"看不见"对方。之后所有命令带上同样的--session即可操作对应会话:
agent-browser --session agent1 click "#btn" agent-browser --session agent2 get text body不想每次敲--session?也可以用环境变量:
AGENT_BROWSER_SESSION=agent1 agent-browser click "#btn"💡 省略
--session时,命令默认作用在default会话上。
隔离了什么?
每个会话独立拥有以下资源,这也是"互不干扰"的本质:
| 隔离项 | 说明 |
|---|---|
| 浏览器实例 | 独立的 Chrome 进程 |
| Cookie 与存储 | localStorage / SessionStorage / IndexedDB 完全分开 |
| 浏览历史 | 各自独立 |
| 登录状态 | 一个会话登录不影响另一个 |
| 打开的标签页 | 各自的窗口和 tab |
三、查看与检查当前会话
并行跑着多个会话时,随时可以"点名查看":
# 列出所有活跃会话 agent-browser session list # 输出示例: # -> default # agent1 # 显示当前命令所属会话 agent-browser session # 查看会话的守护进程、启动与状态恢复详情(JSON 格式) agent-browser session info --json四、实战:并发抓取 3 个网站
这是多会话最经典的用法——三个浏览器同时开工,抓取速度直接翻倍:
# 同时启动 3 个会话(& 表示后台执行) agent-browser --session site1 open https://site1.com & agent-browser --session site2 open https://site2.com & agent-browser --session site3 open https://site3.com & wait # 各自提取正文,互不干扰 agent-browser --session site1 get text body > site1.txt agent-browser --session site2 get text body > site2.txt agent-browser --session site3 get text body > site3.txt # 用完后统一清理 agent-browser --session site1 close agent-browser --session site2 close agent-browser --session site3 close同样的思路还能用于A/B 测试:两个会话分别打开?variant=a和?variant=b页面,各自截图对比。
五、进阶:多个会话共享同一个 Chrome(标签页固定)
每个会话独占一个浏览器最彻底,但更省资源的做法是让多个会话通过 CDP 协议共享同一个 Chrome 实例。此时隔离的维度变成了"标签页":
agent-browser --session agent1 --cdp 9222 --pin-tab open https://site-a.com agent-browser --session agent2 --cdp 9222 --pin-tab open https://site-b.com关键在--pin-tab参数,它让每个会话"钉"在自己的标签页上:
- ✅ 会话重启守护进程后,会重新绑定回自己的标签页,而不是误操作别人正在用的页面;
- ✅ 如果绑定的标签页被关掉了,命令会明确报
tab_gone错误(而不是偷偷去操作另一个会话的标签页); - ✅ 其他会话或用户新开的标签页,永远不会"抢走"已固定会话的活动标签。
这个标志对会话是"粘性"的:创建时传一次即可,后续命令和守护进程重启都保持严格绑定;用--no-pin-tab可以关闭。更多细节见 CDP 模式文档。
六、让会话"记忆"登录状态
并行会话常遇到的需求:每个会话登录自己的账号,且重启后不用重复登录。给会话加上--restore即可自动保存/恢复 Cookie 和 localStorage:
# 为项目生成一个稳定的会话 ID SESSION="$(agent-browser session id --scope worktree --prefix myapp)" # 登录一次,之后状态自动持久化 agent-browser --session "$SESSION" --restore open https://app.example.com/dashboard要点:
- 状态文件保存在
~/.agent-browser/sessions/,导航前自动加载,关闭时自动保存; - 每个会话用不同的名字,登录态就互不串号——比如
--session user-a --restore和--session user-b --restore各存各的; - 出于安全考虑,状态文件含明文令牌,记得加入
.gitignore;需要加密可设置AGENT_BROWSER_ENCRYPTION_KEY(AES-256-GCM)。
七、清理与收尾
# 关闭指定会话 agent-browser --session auth close # 一键关闭所有活跃会话 agent-browser close --all # 再次确认没有残留 agent-browser session list放心的是:即使忘了手动关闭,守护进程默认 1 小时无命令会自动保存状态并退出,不会无限泄漏资源。
八、多会话最佳实践清单
照着做,基本不会踩坑:
- 命名语义化:用
github-auth、docs-scrape这类能说明用途的名字,避免s1、s2这种神秘代码; - 用完即关:每个会话任务结束执行
close,避免僵尸浏览器占内存; - 稳定 ID 交给工具生成:
agent-browser session id --scope worktree --prefix xxx生成的 ID 只含字母数字、连字符和下划线,天然合法; - 共享 Chrome 时记得
--pin-tab:否则open会沿用旧行为,直接驱动共享的活动标签页,多个会话就会撞车; - 状态文件不进代码库:把
*.auth-state.json之类加入.gitignore,用毕删除。
总结
agent-browser 的多会话机制可以概括为一句话:--session负责隔离,--restore负责记忆,--pin-tab负责共享时的分寸。从两条命令的并行起步,到共享 Chrome 的精细管控,这套浏览器自动化 CLI 能让你的 AI Agent 们各占一窗、并行作战、互不打架。
相关资料索引:
- 会话管理技能文档:session-management.md
- 官方会话文档页:sessions/page.mdx
- 完整命令速查:README.md
【免费下载链接】agent-browserBrowser automation CLI for AI agents项目地址: https://gitcode.com/GitHub_Trending/agen/agent-browser
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考