Skip to main content
Glama
LuoWeiway

agent-browser-bridge

by LuoWeiway
README.md
# Agent Browser Bridge 🌐

> 仿照 **OpenAI Codex** 浏览噚控制机制讟计基于 Chrome Manifest V3 扩展䞎本地 WebSocket/HTTP 守技进皋桥接。  
> 让本地终端 CLI 侎 **Claude Code (MCP)** 倧暡型胜借**盎接控制并读取悚圓前日垞䜿甚的真实 Chrome 浏览噚**。

[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
[![Platform](https://img.shields.io/badge/Platform-Windows%20%7C%20macOS%20%7C%20Linux-lightgrey.svg)]()
[![MCP Compatible](https://img.shields.io/badge/MCP-Compatible-success.svg)]()

---

## 🌟 䞺什么选择 Agent Browser Bridge

䌠统自劚化工具劂原生 Puppeteer、Playwright 或 `--remote-debugging-port=9222`圚日垞 AI 协䜜䞭有䞉倧硬䌀
1. **䞢倱登圕态**每次冷启劚郜是党新的无痕/隔犻环境无法访问公叞内眑、犅道、Jira、䌁䞚飞乊、看板等已登圕系统。
2. **区制重启浏览噚**必须先关掉所有正圚运行的 Chrome 窗口䞥重打断工䜜流。
3. **抢债焊点䞎页面芆盖**䌠统脚本䞀旊跳蜬页面䌚盎接把甚户圓前正圚阅读或蟓入的屏幕视窗芆盖抢占。

### ✹ 本项目的栞心突砎䞎讟计哲孊
- 🟢 **100% 保持真实登圕态**扩展盎接寄宿圚悚日垞䜿甚的 Chrome 䞭所有 Session、Cookie、内眑权限完矎保留。
- 🟢 **标筟任务分组隔犻 (Tab Groups)**采甚䞎 Codex 䞀臎的讟计所有 Agent 打匀的新页面自劚園纳进䞓属的 **`[Codex 任务]`** 分组并圚后台静默加蜜`active: false`**绝对䞍抢债焊点、绝对䞍芆盖悚圓前操䜜的页面**。
- 🟢 **深床 DOM 䞎跚域 Iframe 穿透**针对犅道ZenTao 18+等单页嵌套子框架系统䜿甚 `allFrames: true` 递園提取页面倧纲、数据衚栌自劚蜬䞺 Markdown 衚栌、蟓入控件䞎按钮。
- 🟢 **双暡亀互支持**既支持圚终端通过 CLI 呜什行调甚又䜜䞺标准 **MCP Server** 挂蜜至 Claude Code。
- 🟢 **零第䞉方䟝赖 (Zero-Dependency)**纯原生 Node.js 实现无需运行庞倧的 `npm install`匀箱即甚。

---

## 🏗 架构囟解

```text
┌──────────────────────────────────────────────────────────────┐
│  AI 亀互层 (Claude Code MCP)      │  终端亀互层 (Shell / 脚本)  │
│  Tools: browser_read 等          │  CLI: node server.js read  │
└──────────────┬───────────────────┎──────────────┬────────────┘
               │ (stdio MCP Protocol)             │ (Child process / HTTP)
               └───────────────────┬──────────────┘
                                   ▌
┌──────────────────────────────────────────────────────────────┐
│  本地 Bridge 栞心守技服务 (server.js 监听 127.0.0.1:18888)     │
│  - 纯原生 Node.js零第䞉方䟝赖                             │
│  - 自劚后台拉起Auto-spawn无需手劚匀窗口垞驻启劚          │
└──────────────────────────────────▲───────────────────────────┘
                                   │ (WebSocket 双向通道 + Offscreen 防䌑眠)
┌──────────────────────────────────▌───────────────────────────┐
│  Chrome MV3 扩展 (extension/ 目圕)                           │
│  - 标筟任务分组 (Tab Groups) 隔犻管理                        │
│  - 智胜倚窗口暡糊检玢打分 (URL/标题/分词匹配)                 │
│  - 深床穿透递園抜取䞻窗口及所有子 iframe                   │
│  - 真实亀互驱劚click(支持CSS/文本)、fill(事件掟发)、截囟等    │
└──────────────────────────────────▲───────────────────────────┘
                                   │ (寄宿圚甚户垞甚 Chrome äž­)
┌──────────────────────────────────▌───────────────────────────┐
│  甚户圓前 Chrome 实䟋 (已登圕各种系统保留党郚 Cookie 䞎状态)   │
└──────────────────────────────────────────────────────────────┘
```

---

## 🚀 极简安装指南2 步完成

### 第䞀步圚 Chrome 䞭加蜜扩展

1. 打匀 Google Chrome访问
   ```text
   chrome://extensions
   ```
2. 匀启右䞊角的 **「匀发者暡匏」** 匀关。
3. 点击巊䞊角 **「加蜜已解压的扩展皋序」**。
4. 选择本项目䞭的 `extension` 文件倹
   ```text
   E:/work/2026v/codex-browser-bridge/extension
   ```
5. Chrome 工具栏将出现 `Agent Browser Bridge` 扩展囟标。

---

### 第二步将 MCP Server 挂蜜至 Claude Code可选匀箱即甚

圚终端䞭执行以䞋呜什党局生效所有项目均可䜿甚

```bash
claude mcp add --scope user agent-browser-bridge node "E:/work/2026v/codex-browser-bridge/mcp.js"
```

> 呜什䌚自劚将 `agent-browser-bridge` 泚册进 `~/.claude.json`。后续每次打匀 Claude Code 郜䌚自劚建立连接。

---

## 💻 呜什行 (CLI) 䜿甚指南

进入项目目圕后服务圚銖次调甚时䌚**自劚后台静默拉起**无需手劚启劚

```bash
# 1. 列出圓前所有打匀的标筟页包含 Tab ID、激掻状态䞎 URL
node server.js list

# 2. 智胜暡糊匹配并提取页面内容支持 URL 关键词或䞭文标题蟓出结构化 Markdown
node server.js read "穅道"
node server.js read "prd"              # 匹配原型系统
node server.js read "Jenkins"          # 匹配自劚化构建页
node server.js read ""                 # 默讀读取圓前正激掻的页面

# 3. 圚䞓属「Codex 任务」分组䞭打匀或跳蜬页面后台静默打匀䞍干扰圓前视窗
node server.js open "http://chandao.jadinec.com:1023/zentao/bug-view-21005.html"

# 4. 暡拟元玠点击支持 CSS 选择噚 或 text= 文本匹配
node server.js click "text=保存" "穅道"
node server.js click "#submit-btn"

# 5. 衚单蟓入自劚觊发 React/Vue 的 input 侎 change 事件
node server.js fill "#keyword" "æ°Žçš³" "穅道"

# 6. 眑页滚劚 (down / up / top / bottom)
node server.js scroll down "穅道"

# 7. 截取眑页视口快照保存䞺本地 PNG 囟片
node server.js shot "穅道" ./screenshot.png

# 8. 圚目标页面䞊䞋文䞭执行自定义 JavaScript
node server.js eval "document.title" "穅道"

# 9. 关闭指定的标筟页
node server.js close "21005"

# 10. 䞀键枅理并关闭所有 Agent 任务分组䞭的后台䞎时标筟页
node server.js clean
```

---

## 🀖 圚 Claude Code 䞭自然语蚀䜿甚

完成 MCP 泚册后悚无需敲任䜕呜什行盎接圚 Claude 对话框䞭吩咐

- 🗣 *“垮我看䞀県我圓前浏览噚打匀的犅道页面有哪些埅办 Bug”*
- 🗣 *“读取䞀䞋氎皳看板圓前展瀺的生产批次数据”*
- 🗣 *“垮我圚打匀的工单页面点击‘审栞通过’按钮把操䜜结果截䞪囟给我”*
- 🗣 *“垮我查䞀䞋圓前浏览噚打匀了哪些标筟页”*
- 🗣 *“把刚才打匀的 Agent 任务页面党郚枅理关闭”*

Claude 䌚智胜调甚背后的工具集
- `browser_read`暡糊定䜍并结构化提取眑页数据含子 iframe、衚栌䞎关键铟接
- `browser_list_tabs`获取圓前所有标筟页枅单
- `browser_click`点击指定选择噚或文本按钮支持 Pointer/Mouse 倍合事件
- `browser_fill`蟓入衚单项深床适配 React/Vue 受控组件
- `browser_screenshot`眑页截囟存盘
- `browser_navigate`圚䞓属「Agent 任务」分组䞭后台静默打匀新铟接
- `browser_close_tab`关闭指定标筟页
- `browser_clean_group`䞀键关闭枅理所有 Agent 任务标筟
- `browser_eval`执行页面控制台脚本

---

## 🛠 垞见问题 (FAQ)

### 1. 扩展囟标星瀺“🔎 未连接服务”
只需圚终端运行䞀次 `node server.js list`本地守技进皋䌚自劚圚后台启劚并监听 `127.0.0.1:18888`。然后点击扩展囟标䞭的「🔄 重新连接 Bridge 服务」按钮即可。

### 2. 修改扩展源码后劂䜕生效
Chrome 䞍䌚自劚热重蜜本地未打包的扩展。若修改了 `extension/` 䞋的文件请圚 `chrome://extensions` 页面点击该扩展卡片右䞋角的 **「🔄 重新加蜜」** 按钮。

### 3. 䌚泄露我的 Cookie 或隐私数据吗
本系统的 WebSocket 侎 HTTP API **仅监听圚本地回环地址 `127.0.0.1:18888`**没有任䜕倖郚服务噚或第䞉方数据收集逻蟑所有通信均圚悚本机的进皋之闎流蜬安党可控。

---

## 📄 匀源讞可证

本项目基于 [MIT License](LICENSE) 协议匀源。