浏览器扩展

在浏览器侧边栏里,让 AI 读写当前网页

Chrome/Edge MV3 侧边栏 + Native Messaging + 本机 LocalBridge 宿主,复用 CLI 的同一套引擎
想让 AI 读取当前页面的内容、按 CSS 选择器点击按钮、填表单、跳转,用它就够了。

数据通路

从侧边栏到模型,一条干净的管道

Chrome / Edge Side Panel (聊天 UI)
↓ Native Messaging
LocalBridge 宿主 (Python · mbridge-bridge)
Agent Loop · Tools · Skills · MCP · Provider Adapter
国产 / 本地 / 海外模型

页内操作回路

读写类工具(click · fill · navigate)每次请求确认;读类工具(read_page · query_dom …)免确认。

you: 总结当前页面,并把要点写进 notes.md
[tool · read_page]
  → 抓取到 4 个段落 + 12 条要点
[tool · write_file notes.md]
  批准? [y]es / [N]o / [a]lways  y
[assistant] 写好了 ✅

you: 在搜索框填 "modelbridge" 然后点搜索
[tool · fill  input[name=q] = "modelbridge"]
[tool · click  button[type=submit]]
安装扩展

4 步装上

纯命令行 不需要装这个扩展。 只有想操作浏览器当前网页时才需要。

1

装好引擎 + 一个模型

先按 安装指南 装好 CLI,并 mbridge model init 至少配一个模型。

mbridge init
mbridge model init          # 至少配一个模型
2

下载并解压扩展

Releases 下载 modelbridge-extension.zip 并解压。

也可以克隆扩展分支:git clone -b extension https://github.com/CrisXie4/ModelBridge.git

3

注册 Native Messaging 宿主

让浏览器能拉起 LocalBridge。 默认就用官方固定扩展 ID,无需参数。

mbridge bridge install
mbridge bridge status           # 查看注册位置 / 扩展 ID

# 只注册 Chrome
mbridge bridge install --chrome-only

# 自己 fork 改了 key(自定义 ID)
mbridge bridge install --extension-id <你的ID>
4

在浏览器里加载扩展

  1. 打开 chrome://extensions(Edge 是 edge://extensions)。
  2. 右上角开启 开发者模式
  3. 加载已解压的扩展程序 → 选 modelbridge-extension/ 文件夹。
  4. 回到 chrome://extensions 重新加载扩展(点工具栏图标无效时也重做这一步)。
  5. 点工具栏图标打开侧边栏。 顶部状态点变绿、模型下拉框有内容即表示宿主连上了。
关于"加载已解压"

本扩展未上架 Chrome 应用商店。 Chrome 会拦截并停用自签名的 .crx(报 CRX_REQUIRED_PROOF_MISSING 或"此扩展不是来自任何已知来源"),所以只能走"加载已解压"。

如需批量部署到企业:走 ExtensionInstallForcelist 策略。

⚠️ API key 必须放在 keyring / config.yaml

浏览器从 GUI 启动宿主,读不到你在终端 export 的环境变量。 用 mbridge model init 添加的 key 会进 keyring,没问题;手动设的 *_API_KEY 环境变量则不会被宿主看到。

可用工具

侧边栏里 AI 可自动调用的网页工具

操作类会先在侧边栏弹出确认卡片,同意后才执行。

读类 · 免确认

  • read_page — 抓取整页内容(段落、链接、要点)
  • get_selection — 拿到当前选中文字
  • query_dom — 按 CSS 选择器查节点 / 拿属性 / 拿文本
  • extract — 按 schema 抽取结构化数据

写类 · 每次确认

  • click — 点按钮 / 链接(按选择器)
  • fill — 填表单字段
  • navigate — 跳到 URL

在侧边栏里点 a = 本会话对所有网页写操作都免确认(单次免密,不是 YOLO)。

CLI 联动(可选)

mbridge 命令行也能操作网页

侧边栏默认独立用。 如果想让主 mbridge 会话在干活时顺手操作浏览器,开一下联动即可。 默认关闭 = 不监听任何端口,开了之后宿主才会监听 127.0.0.1,连接需 token。

# 一次性:开启联动(生成 token),然后重开侧边栏让宿主带开关重启
mbridge bridge control on

# 之后正常用 mbridge —— 浏览器工具自动就在
mbridge
you: 看看当前页面讲了什么,把要点记到 notes.md
[tool · read_page] ...
[tool · write_file (notes.md)]  执行? [y]es / [N]o / [a]lways

# 不用了就关掉
mbridge bridge control off
mbridge bridge control status     # 查看开关状态
  • 工具卡在慢页面时按 Ctrl-C 可中断本轮、回到输入,REPL 不退出。
  • 没开启联动 / 没开侧边栏时,浏览器工具仍在,调用会返回友好提示,不影响文件 / shell 等其它功能。
  • 文件工具、shell(--allow-bash)、浏览器工具同一会话里混用。
  • 浏览器工具:读类免确认;写类在终端[y]es / [N]o / [a]lways 确认。 选 a 后本会话所有网页写操作都免确认。
排错

常见问题

现象原因 / 处理
状态点红、提示连接断开没注册宿主或扩展 ID 变了。 重跑 mbridge bridge install --extension-id <ID> 再刷新扩展。 mbridge bridge status 看当前状态。
回复报"未找到模型 / 无 default_model"mbridge model initmbridge model list 配置模型。
回复报鉴权 401/403API key 不在 keyring / config(见上方的 ⚠️)。
"当前页面不允许脚本注入"chrome://、扩展商店等内部页上无法操作 DOM,切到普通网页。
改了宿主 Python 代码不生效宿主进程随侧边栏启动;关掉侧边栏再打开会重启宿主。
浏览器工具报"联动未启用"mbridge bridge control on,再重开侧边栏。
浏览器工具报"未找到宿主端点"已开启但侧边栏没开(宿主没在跑)。 打开 / 重开侧边栏。
mbridge 启动提示"网页控制: 未连接"control 没开或侧边栏没开。 工具仍注册,连上后即可用,不影响其它功能。
mbridge browser 报"busy"侧边栏或另一个 CLI 正在跑一个回合。 一次只允许一个回合。
卸载
mbridge bridge uninstall

再到 chrome://extensions 移除扩展即可。

装好侧边栏后…

在侧边栏里点一下工具栏图标,说一句"总结当前页面"就开始。