浏览器插件
一个 MV3 扩展把你已经打开、已经登录的真实 Chrome 接到平台,Agent 实时在这个会话里操作——不是起一个无头实例跑完就退出。
解决的核心问题常见浏览器自动化(Playwright 等)每次启动一个无头、无登录态的临时实例,跑完即丢——要处理登录、验证码、已有会话就很别扭。CDP 桥接反过来:复用你正在用的浏览器和它已有的登录态。
特色:与无头脚本的差别
| 无头脚本(Playwright 等) | Ai Lubricant CDP 桥接 | |
|---|---|---|
| 浏览器实例 | 每次新起一个临时实例 | 复用你正在用的真实 Chrome |
| 登录态 / Cookie | 默认没有,需自己注入 | 沿用你已登录的会话 |
| 生命周期 | 脚本跑完即销毁 | 常驻,Agent 随时接管当前标签 |
| 操作方式 | 写死在脚本里 | Agent 实时决定读页、执行 JS、切标签、截图、抓网络 |
特色:12 个 CDP 工具
| 工具 | 能力 |
|---|---|
browser_get_tabs | 列出已连接的浏览器标签页(ID/URL/标题) |
browser_scan | 返回当前活动标签的优化 HTML/文本及标签列表 |
browser_execute_js | 在页面执行 JavaScript,捕获结果与 DOM 变化 |
browser_navigate | 导航活动标签到指定 URL |
browser_switch_tab | 切换 MCP 活动标签(不改变可见 Chrome 标签) |
browser_focus_tab | 把某标签带到前台并聚焦其窗口 |
browser_screenshot | 截取活动标签(返回 base64 PNG) |
browser_batch | 一次请求执行多个扩展/CDP 命令 |
browser_wait | 等待某 JavaScript 条件返回真值 |
browser_network_start / get / stop | 启动/读取/停止标签网络请求捕获(附加调试器、缓冲事件、返回捕获) |
新任务开新标签新任务或独立站点用
browser_open_tab 开新 tab,同站内跳转才用页内点击——避免把当前会话的上下文覆盖掉。特色:网页内直接和 Agent 对话
不止把浏览器当工具。一套 chat_* 帧协议复用同一条扩展 WebSocket,按帧 type 前缀与 CDP 驱动帧分流,让你在网页里直接和 Agent 对话、管理会话:
chat_list_agents/chat_send/chat_abort/chat_new_conversation/chat_load_conversation/chat_list_conversations等帧覆盖会话生命周期。- 每帧按连接身份校验:Agent 是否对该 client 授权、页面是否属于该 client(会话级隔离)。
- 对话流以
chat_event帧回传;底层 chunked 传输被截断时有专门收尾处理,避免半截流污染会话。
效果:用户在受控浏览器页面里就能让 Agent 读取当前页、执行 JS、跨标签操作,Agent 的模型调用仍走平台统一网关和权限校验。
特色:两类 token 不能混用
连接 token ≠ MCP 访问 tokenChrome 扩展的连接 token只用于扩展↔平台的 WebSocket 握手;外部 MCP 客户端访问
/mcp/cdp-bridge/sse 用的是单独签发、绑定具体 CDP client 的 MCP 访问 token。per-request token 路由到对应浏览器会话池,一个外部 token 只能操作它绑定的那个 client——未绑定会得到 "not authorized to operate any CDP client"。- 用户侧只建对外开放 token:agent/node/user 用的 token 由服务自动签发,管理端看全量。
- 改数据要重下发运行时:写完 CDP 明细后必须 resync 把新快照推给活着的 driver,否则连不上/不生效。
- 使用隔离 Chrome profile:不连接个人日常浏览器;只开启任务需要的标签页和账户。
技术白皮书:12 个 CDP 工具与两类 token 隔离 → · 网页内 Agent 帧协议 → · CDP 隔离治理 →