侧边栏:`sidepanel.html`
默认的对话 UI。持久化对话历史、模型徽章、模型选择器、斜杠命令、 历史抽屉。大多数用户都待在这里。
Browy 扩展是一个基于 Chromium 的 MV3 扩展,承载三个 UI 表面(侧边栏、 DevTools 面板、选项页),通过一个原生消息 port 和 原生主机对话。
extension/├── manifest.json ← MV3 清单:权限、后台 SW├── background.js ← service worker,port 的拥有者、工具分发├── sidepanel.html / .js ← 对话 UI(默认表面)├── devtools.html / .js ← 注册 DevTools 面板├── panel.html / .js / .css ← DevTools CLI 真正的表面├── options.html / .js ← 设置(模型、工具、安装帮助)├── content/ ← 注入的脚本(快照、evaluate_js)└── icons/ ← 工具栏 + 商店素材一个 chrome.runtime.connectNative('com.browy.host') 的 port 跑在
service worker 上。这是连接主机的唯一通道。三个 UI 表面通过
chrome.runtime.sendMessage 发给 service worker,由 SW 转发为
原生消息帧。
侧边栏:`sidepanel.html`
默认的对话 UI。持久化对话历史、模型徽章、模型选择器、斜杠命令、 历史抽屉。大多数用户都待在这里。
DevTools 面板:`panel.html`
终端风格的 REPL。由 devtools.js 通过
chrome.devtools.panels.create('Browy', …) 注册。它和侧边栏
共用同一个智能体后端,并且和被检查的目标绑定。参见
DevTools CLI 页面。
选项:`options.html`
模型选择器、工具开关、登录状态、当主机不可达时的安装帮助。 通过 Chrome 标准的扩展选项入口或 Browy 工具栏菜单打开。
当主机说*“用这些参数调用 snapshot”*,SW 会:
chrome.debugger.attach(target, '1.3'),
如果还没附加的话。Accessibility.getFullAXTree、
Input.dispatchMouseEvent、Network.enable 等),把结果塑形成
该工具期望的返回类型。那个 Chrome 的*“Browy started debugging…”*黄色横幅,是 Chrome 对 任何使用 DevTools Protocol 的扩展的强制披露。我们不去试图隐藏它。 参见权限 → debugger。
所有用户可见的状态都在 chrome.storage.local:
chat:<id> → {messages, sessionId, createdAt, title}active_chat_idsettings.model、settings.theme、
settings.reasoning_effort、settings.tools(按工具的开关)lastActiveTabId,Chrome 重启之后用来恢复智能体
作用在哪个标签页什么都不离开本地的浏览器配置。没有远程同步。
extension/content/ 里的脚本是按需注入的,给 evaluate_js 和
query_dom 工具用。智能体的大部分感知走的是 CDP 而不是 content
script,因为 CDP 能跨 shadow DOM、iframe 和可访问性树,没有跨域摩擦。
扩展不需要打包步骤,原样发布。extension/ 就是一个普通的 Chromium
扩展目录。安装脚本把它复制到你的下载目录,你用
chrome://extensions → 加载已解压的扩展程序 加载它。同样这些
文件也会被打包成 CRX,由 Chrome Web Store 和 Edge Add-ons 商店分发。