在浏览器侧边栏里,让 AI 读写当前网页
Chrome/Edge MV3 侧边栏 + Native Messaging + 本机 LocalBridge 宿主,复用 CLI 的同一套引擎。
想让 AI 读取当前页面的内容、按 CSS 选择器点击按钮、填表单、跳转,用它就够了。
从侧边栏到模型,一条干净的管道
页内操作回路
读写类工具(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 步装上
纯命令行 不需要装这个扩展。 只有想操作浏览器当前网页时才需要。
下载并解压扩展
从 Releases 下载 modelbridge-extension.zip 并解压。
也可以克隆扩展分支:git clone -b extension https://github.com/CrisXie4/ModelBridge.git
注册 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>
在浏览器里加载扩展
- 打开
chrome://extensions(Edge 是edge://extensions)。 - 右上角开启 开发者模式。
- 点 加载已解压的扩展程序 → 选
modelbridge-extension/文件夹。 - 回到
chrome://extensions重新加载扩展(点工具栏图标无效时也重做这一步)。 - 点工具栏图标打开侧边栏。 顶部状态点变绿、模型下拉框有内容即表示宿主连上了。
本扩展未上架 Chrome 应用商店。 Chrome 会拦截并停用自签名的 .crx(报 CRX_REQUIRED_PROOF_MISSING 或"此扩展不是来自任何已知来源"),所以只能走"加载已解压"。
如需批量部署到企业:走 ExtensionInstallForcelist 策略。
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)。
让 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 init、mbridge model list 配置模型。 |
| 回复报鉴权 401/403 | API key 不在 keyring / config(见上方的 ⚠️)。 |
| "当前页面不允许脚本注入" | 在 chrome://、扩展商店等内部页上无法操作 DOM,切到普通网页。 |
| 改了宿主 Python 代码不生效 | 宿主进程随侧边栏启动;关掉侧边栏再打开会重启宿主。 |
| 浏览器工具报"联动未启用" | 先 mbridge bridge control on,再重开侧边栏。 |
| 浏览器工具报"未找到宿主端点" | 已开启但侧边栏没开(宿主没在跑)。 打开 / 重开侧边栏。 |
mbridge 启动提示"网页控制: 未连接" | control 没开或侧边栏没开。 工具仍注册,连上后即可用,不影响其它功能。 |
mbridge browser 报"busy" | 侧边栏或另一个 CLI 正在跑一个回合。 一次只允许一个回合。 |
mbridge bridge uninstall
再到 chrome://extensions 移除扩展即可。