浏览器代理协议(BAP)
浏览器代理的执行层。每个动作10-25ms,零令牌开销,LLM实际可以使用的结构化观察。
BAP位于您的AI代理和浏览器之间。代理人决定 *什么* 要做到这一点,BAP会立即、可靠地使用语义选择器和会话持久性。
CLI · MCP · Python · Docs · Apache-2.0
______________________________________________________________________
为什么选择BAP
代理管道中的每个浏览器操作都有成本——延迟、令牌和美元。
per action per 20-action task 1000 tasks/day
Stagehand 800ms, $0.01 $0.20 $200
Browser Use 1500ms, $0.02 $0.40 $400
BAP (in-process) 20ms, $0.00 $0.00 $0Stagehand Browser Use通过LLM发送每次点击和填写。BAP不会——你的经纪人的法学硕士决定行动,BAP直接通过剧作家执行。LLM调用发生一次(在代理中),而不是每次操作(在浏览器层)。
BAP适用于想要控制情报的团队。 你带LLM,BAP带浏览器。
BAP给你的代理人什么
| 无BAP | 有BAP | |
|---|---|---|
| LLM看到了什么 | 原始HTML(10000+标记) | @submit button: "Submit", @email textbox: "Email" (50个代币) |
| 每次操作的延迟 | 800-1500ms(循环中的LLM) | 10-25ms(直接执行) |
| 会话状态 | 转弯之间丢失 | 持续存在——浏览器保持温暖 |
| 当选择器断开时 | 代理失败 | 通过uSEID回退进行自我修复 |
| 可重复性 | 非确定性 | DBAR确定性回放 |
开始使用
npm i -g @browseragentprotocol/cli
bap install-skill或者跑 bap demo 进行引导式演练。
然后给你的代理人一个任务:
Use BAP to open https://example.com, find the pricing page, and extract the plan names and prices.快速示例
# Navigate and observe — one fused call
bap goto https://example.com --observe
# Agent sees structured output:
# @navPricing link: "Pricing"
# @heroSignup button: "Get Started"
# @searchInput textbox: "Search..."
# Agent decides to click pricing — BAP executes in 15ms
bap act click:@navPricing --observe
# Extract structured data
bap extract --fields="plan,price,features"运作原理
Your LLM Agent ← decides what to do (planning, reasoning)
↓
BAP (MCP or CLI) ← executes it (10-25ms, structured observations)
↓
Playwright ← handles the browser (auto-wait, smart inputs)
↓
Chrome/Firefox/WebKit ← renders the pageBAP是Playwright之上的一个薄协议层。它补充道:
- 结构性观察 --带有引用、角色和操作提示的交互式元素,而不是原始HTML
- 语义选择器 —
role:button:"Submit",text:"Sign in",@ref而不是脆弱的CSS - 熔断操作 —
goto --observe节省了往返行程,act --observe链条动作+观察 - 会话持续 --浏览器在代理轮换期间保持活动状态,无需重新启动
- 自愈选择器(uSEID) --当页面加载之间的元素发生变化时,BAP会退回到语义身份匹配
- 确定性回放(DBAR) --记录浏览器会话,以相同的方式回放以进行测试和CI
接口
| 接口 | 安装 | 最适合 |
|---|---|---|
| MCP(进程中) | npx @browseragentprotocol/mcp --in-process | 最快——10-25ms/动作,零WebSocket开销 |
| MCP(独立) | npx @browseragentprotocol/mcp | 标准MCP客户端(Claude、Cursor、Codex) |
| CLI+技能.md | npm i -g @browseragentprotocol/cli | 具有shell访问权限的编码代理 |
| TypeScript SDK | npm i @browseragentprotocol/client | 应用程序和代理后端 |
| 开发包 | pip install browser-agent-protocol | Python代理和笔记本 |
基准
在真实网站上测量(维基百科、黑客新闻)-- 浏览:
Action CDP-raw Playwright BAP MCP BAP CLI PW CLI
─────────────────────────────────────────────────────────────────────
navigate 68ms 593ms 26ms 1490ms 590ms
observe 14ms 7ms 8ms 145ms 591ms
fill 1ms 18ms 13ms 148ms 588ms
extract 0ms 8ms 5ms 164ms 604ms
─────────────────────────────────────────────────────────────────────
tokens/call 0 0 35 155 0
pass rate 100% 100% 100% 100% 100%BAP MCP(进程内)是原始CDP的2倍,与Playwright的直接API匹配,同时为您的代理提供结构化观察、语义选择器和会话持久性。
何时使用什么
| 用例 | 建议 |
|---|---|
| 已知站点上的已知工作流 (抓取、测试、数据输入) | BAP MCP或Playwright——你知道选择器,每个动作的人工智能没有任何价值 |
| 陌生网站上的代理 (查找定价,浏览文档) | BAP用于执行+LLM用于规划。结构化观测使LLM更便宜、更准确 |
| 不想构建规划层 | Stagehand——捆绑LLM+执行,但速度慢40倍,每天200美元以上 |
| 复杂的多步骤目标 | 浏览器使用——最高抽象,最高成本 |
| 规模(100+并发浏览器) | 基础设施浏览器+自动化层BAP |
看实际效果
Navigate → click → browse: 3 commands, one workflow
Multi-site workflow: browse GitHub → open skills.menu → paste & score
提示
- BAP默认为具有持久会话的令人头疼的Chrome。
- 使用
--headless用于CI或后台运行。 - 使用
--no-profile如果您的Chrome个人资料正忙。 - 使用
--slim将工具定义切割为约600个标记(而Playwright MCP为约4200个)。 - 使用
bap close-all停止守护进程和所有会话。
文档
贡献
许可证
阿帕奇-2.0。看 许可证 了解详情。

