English · 简体中文 · 日本語 · 한국어 · Español · Português · Русский
读到哪里,问到哪里。
browsa 是一个 Chrome / Edge 侧边栏扩展:把正在看的文章、视频、PDF 带进对话,让你自己的 AI 在旁边帮你读懂。不用复制粘贴,也不用离开页面。通过 Agent Bridge 接入 Codex / Claude Code / pi / Gemini CLI / dsh / ZCode,连接 opencode / Hermes / OpenSquilla,或配置 OpenAI、Anthropic、Ollama 等模型接口。
扩展免费,MIT 开源。 自备模型或 Agent。API Key 保存在本地,用于向你配置的服务进行身份验证。
▶ 完整视频 · 68 秒 · ▶ 读到哪里,问到哪里。 · 下载 MP4 — 68 秒看完完整工作流:附加文章 → 公式 / 流程图 / 图表 → 时间线核对 → 会话管理 → 会话 ID 在智能体侧接续。公式与图表来自真实模型回复;演示数据、播放经过剪辑。
通过 Agent Bridge 连接已有的本地智能体,沿用它配置好的登录方式和工具。browsa 把网页内容交给 agent,实时展示工具进度,并在面板里呈现它发出的审批请求。具体工具能力与权限取决于 agent 的配置。
| Agent | 接入方式 | 登录 |
|---|---|---|
| Codex(OpenAI) | agent-bridge 本地桥 | 沿用 CLI 已配置的认证 |
| Claude Code(Anthropic) | agent-bridge 本地桥 | 沿用 CLI 已配置的认证 |
| pi(earendil-works) | agent-bridge 本地桥 | 你在 pi 里配置的模型 |
| Gemini CLI(Google) | agent-bridge 本地桥 | 沿用 CLI 已配置的认证 |
| dsh(DeepSeek) | agent-bridge 本地桥 | DeepSeek API key |
| ZCode | agent-bridge 本地桥(headless CLI) | 沿用 ZCode 桌面版 / CLI 已配置的登录与模型 |
| opencode | 官方无头服务器直连 | 你给它配置的模型 |
| Hermes | 自托管部署,/v1/runs 协议 |
自托管 |
| OpenSquilla | 自托管网关,WebSocket(/ws)直连 |
网关路由到的模型 |
一张 browsa 卡可以同时连多个 agent,侧边栏下拉逐个切换。
- 视频与播客:字幕或自动转写(ASR)→ 带可点击
[mm:ss]时间戳的笔记,点一下跳回原时刻;无字幕的视频还能直接「看」画面,小宇宙单集附加即转写 - PDF / 论文:全程本机解析——表格、多栏、标题原样重建,插图区域裁出来发给视觉模型;扫描件自动转成前几页页图(≤12 页)交给视觉模型直接阅读,页眉页脚与页码不重复入上下文
- Office 文档:
.docx/.pptx/.xlsx/.epub/.odt/.rtf… 直链在本机转换为 Markdown(docling 编译为 WASM)——表格、标题、列表原样保留 - 文章与复杂页面:读出干净正文;信息流页面直接读页面自己的数据(YouTube、Bilibili、小红书…)
完整清单见下方「browsa 读什么」。
flowchart LR
P["当前标签页<br/>文章 · 视频 · PDF · 复杂页面"]
B["browsa 侧边栏<br/>读出内容 · 对话 · 审批卡"]
subgraph Y["你的后端 —— 云端、本机或自托管"]
A1["Codex · Claude Code · pi · Gemini CLI · dsh · ZCode<br/>agent-bridge 桥 · 沿用本地登录"]
A2["opencode · Hermes · OpenSquilla<br/>本地服务直连"]
A3["任意 LLM API<br/>OpenAI · Anthropic · Ollama…"]
end
P -->|"📎 读出正文 / 字幕 / 表格 / 插图"| B
B -->|"页面内容 + 你的问题"| Y
Y -->|"流式回复 · 工具进度 · 审批"| B
面向开发者的代码库导览——消息流、渲染管线、存储模型、Provider 层与 Agent 接入、ASR、安全模型——在项目 Wiki(七语)。
选择一种安装方式即可:
Chrome 应用商店 —— 推荐,自动更新。 点这里添加 browsa。商店审核可能晚于 GitHub 发布。
GitHub —— 手动安装与更新。
- 从 Releases 下载扩展 ZIP 并解压。如果需要修改代码,也可以克隆或下载本仓库。
- 打开
chrome://extensions(或edge://extensions),开启开发者模式。 - 点击加载已解压的扩展程序 → 选择解压后包含
manifest.json的目录,而不是 ZIP 文件或外层目录。文件夹名称取决于下载方式。
接下来两种方式都一样:
- 打开一篇文章,点击扩展工具栏图标,或按
Ctrl+Shift+H(macOS 为Command+Shift+H)打开侧边栏。 - 进入 ⚙ 设置,配置一个 LLM 或 Agent 服务商,点 Ping 验证连接。
- 在侧边栏下拉框选择模型或 agent,点 📎 附加当前页面,再问第一个问题。
完整步骤见快速开始指南。首次使用先连通服务即可,高级设置可以保留默认值。
构建与打包
npm install # 仅首次需要
npm test # 运行测试套件
npm run package # → browsa-v<version>.zipnpm version patch|minor 会自动把版本号同步到 package.json 和 manifest.json。
内存较小的机器建议串行运行测试:node --test --test-concurrency=1 test/*.test.mjs。
打开 ⚙ 设置,填好地址、点 Ping——验证连通性并自动检测能力;第一个验证通过的 provider 自动设为激活。两类后端:
- Agent Provider(智能体)——完整的智能体后端,在服务端执行工具(bash、文件操作、联网搜索……)。AI 真的能做事。
- LLM Provider(纯语言模型)——仅用于对话的聊天端点。需填写模型 ID。
与智能体的对话本体保存在智能体一侧:
- 会话自动命名(「browsa:」+ 你的第一条消息)——在智能体自己的界面里按名字接着聊;会话 ID 在会话抽屉顶部随时可查、可复制
- 保存的 browsa 对话保留各智能体、各连接地址的会话 ID,恢复时一起切回
- 未记录 ID 的旧存档:首次发消息时创建独立智能体会话,并带上已有文字记录
🔧 Agent Bridge——桥接本地智能体(Codex、Claude Code、pi、Gemini CLI、dsh、ZCode…)
agent-bridge 是一个独立的本地守护进程,把 codex、claude、pi、gemini、dsh、zcode 等本地智能体适配成统一的本地 HTTP 协议。它沿用智能体配置的认证方式:
npm i -g @xiaohuzai/agent-bridge # 已发布到 npm(Node 18+)
cp "$(npm root -g)/@xiaohuzai/agent-bridge/agents.example.json" agents.json
agent-bridge serve # 每个 entry 一座桥,端口写在 agents.json 里打开 ⚙ 设置,选择 Agent Bridge 卡,点 + 添加 Agent 逐行填桥地址——一行一个 agent,可顺手填别名(留空则 Ping 后自动识别 agent 名字)和该桥自己的 API Key(每桥可不同)。
- 侧边栏下拉按「Agent Bridge · codex」逐个选择;每个 agent 独立会话线程与连通状态(行上的 ⟳ 可单独 Ping)
- 危险操作的审批卡片直接出现在面板里(Agent 请求审批时可播放提示音,设置中可关)
- 截图、粘贴图片与 PDF 图表随消息发送——单条 ≤18 张,需 agent-bridge ≥0.8.0(旧版桥自动降级为前 8 张并在消息里注明)
- 多轮上下文由 agent 自己维护;工具调用前的过程自述(codex 宣告使用某技能)折进步骤历史,不混进回复正文
ZCode:走官方 CLI 的 headless 模式(需 agent-bridge ≥0.12.0),沿用 ZCode 桌面版 / CLI 已有的登录与模型配置——桥会自动找到桌面版内置的 CLI,改用 PATH 上的 zcode 也行。三点与其他 agent 不同:
- 没有审批卡:headless 回合里没人能点确认,
agents.json的"mode"就是唯一的权限闸。默认edit(自动应用改动);只想问答设plan(只读);guarded类似 yolo、只在rm -rf/git reset --hard/ force push 这类危险命令前停下(headless 下无人可批,表现为直接拒绝该命令);build会等审批而卡死,headless 下别用 - 模型由 ZCode 侧的供应商排序决定(
providerOrder第一家 provider 的modelOrder首项),桥不传模型也传不了;账号订阅类 provider 不会被 headless 自动选中,需要自定义供应商,或先在桌面版/CLI 里选好模型再用会话 ID 续接 - 图片降级为文字说明:CLI 只接受本地
--attach,桥不往磁盘写用户图片——截图和 PDF 图仍会随消息发出,但以一句提示替代像素
🔧 OpenCode Agent——连接 opencode 命令行智能体
opencode 自带官方无头服务器——browsa 直连即可(会话、流式回复、工具进度,以及危险操作——比如执行 shell 命令——的审批卡片)。browsa 能连任意 opencode serve 地址——但裸 opencode serve 会随机选端口且每次重启都变,所以省心的做法是固定一个:
opencode serve --port 4096打开 ⚙ 设置,选择 OpenCode Agent provider,Base URL 填 http://127.0.0.1:4096(占位符即此建议值),Ping 通即用。多轮上下文由 opencode 会话自己维护,browsa 只发送你的每一句话。当 opencode 请求执行危险命令时,审批卡片直接出现在面板里。服务器在哪个目录启动,agent 就在哪个项目上干活。
🤖 Hermes Agent——自托管、内置工具的智能体
Hermes 是一个自托管的 AI 智能体,内置工具(联网搜索、终端、文件操作、记忆、技能)。browsa 使用它的 /v1/runs API——比普通 chat completions 更丰富(工具进度、危险操作的审批/澄清提示),并且每个会话使用稳定的 X-Hermes-Session-Id,让 Hermes 能在服务端维持会话连续性。如果某个 Hermes 部署不支持 /v1/runs,会自动回退到普通的 /v1/chat/completions。
1. 安装 Hermes
pip install hermes-agent # 或按官方安装指南2. 启用 API 服务——在 ~/.hermes/.env 中添加:
API_SERVER_ENABLED=true
API_SERVER_KEY=your-secret-key3. 启动 Hermes
hermes gateway
# → [API Server] API server listening on http://127.0.0.1:86424. 配置 browsa——打开 ⚙ 设置,选择 Hermes Agent provider。只需 Base URL 和 API key——它自己的 /v1/runs 协议会自动启用(无需选择 API 类型)。
| 字段 | 值 |
|---|---|
| Base URL | http://<server-ip>:8642 |
| API Key | API_SERVER_KEY 的值 |
5. 点击 Ping 验证。会自动检测并启用 /v1/runs 支持。
🦑 OpenSquilla Agent——网关 WebSocket 直连的本地智能体(桌面版或命令行)
OpenSquilla 是一个本地智能体(网关 + 网页界面 + 桌面应用),主打省 token 的微内核设计、模型路由与技能系统。browsa 走它的网关 WebSocket(/ws)——与其自有网页界面同一条通道——因此拿到的是完整智能体体验:服务端会话记忆、流式增量、思考过程输出、服务端取消。browsa 的会话会以「browsa:…」的名字出现在应用的侧边栏里——之后随时打开桌面应用,就能从面板聊到一半的地方接着聊。
网关用桌面版或命令行二选一跑起来即可——browsa 对两者的接法完全一样,两条路线只有一处差别:网关读哪份配置文件(各自方式的第 2 步)。改错文件是「配了却连不上」的最常见原因。
方式 A:桌面版(无需终端)
- 安装并启动 OpenSquilla 桌面应用,v0.5.5 或更新(更旧的包内嵌的网关来源守卫不认扩展)。应用会自动拉起自己的网关——打开应用设置,记下它显示的网关地址(通常是
http://127.0.0.1:18791;自动取 18791–18830 里第一个空闲端口)。 - 放行扩展——桌面版不读
~/.opensquilla/config.toml,读的是自己应用数据目录里的配置。最准的入口在应用自己这里:设置 → 高级 → 配置文件,直接显示本机 config.toml 的完整路径(带一键复制)。常见默认值:macOS 官方包~/Library/Application Support/OpenSquilla/opensquilla/config.toml;源码自建包~/Library/Application Support/@opensquilla/desktop-electron/opensquilla/config.toml(两套数据完全隔离)。路径里有空格——终端里必须转义(整条路径包进引号,或每个空格前加反斜杠),否则 shell 会在空格处把路径截断,编辑到错误的文件:
open -e "<粘贴 设置 → 高级 → 配置文件 里复制的完整路径>" # 用 macOS「文本编辑」打开写入:
[cors]
# 下面这个值对应 Chrome 商店安装版。解包加载的版本(zip / 仓库目录)扩展 ID
# 不同——见下方「来源守卫细则」。
allowed_origins = ["chrome-extension://kghjmmajnpbkljankbbjbmnhfdocaeho"]- 完全退出并重新打开应用(只关窗口不算)——网关只在启动时读一次配置。桌面版的模型 / API key 在应用内配置(引导设置窗口),不读 shell 环境变量。进阶:桌面应用也能挂外部命令行网关——设
OPENSQUILLA_DESKTOP_GATEWAY_URL。 - 跳到下方「配置 browsa」。
方式 B:命令行
- 安装并启动网关(uv 提供 Python 3.12):
uv tool install --python 3.12 "opensquilla[recommended] @ https://github.com/opensquilla/opensquilla/releases/download/v0.5.5/opensquilla-0.5.5-py3-none-any.whl"
opensquilla gateway start
# → running: http://127.0.0.1:18791- 放行扩展——命令行网关读
~/.opensquilla/config.toml,写入与方式 A 相同的[cors]块。网关的模型路由也在这份配置里设(见 OpenSquilla 自身文档;LLM key 通常随启动时的环境变量注入)。 - 重启网关(
Ctrl+C停掉,再opensquilla gateway start)——配置只在启动时读一次。 - 跳到下方「配置 browsa」。
配置 browsa(两种方式相同)——打开 ⚙ 设置,切到 OpenSquilla 标签:
| 字段 | 值 |
|---|---|
| Base URL | ws://127.0.0.1:18791/ws——以网关实际显示的地址为准(桌面版看应用设置;命令行看 running: 那行) |
| API Key | 仅当网关配置了令牌时填写(可选) |
点击 Ping 验证——会执行真实的 WebSocket 握手,绿色即同时证明连通性和来源白名单都已就绪。
来源守卫细则(两种方式通用):白名单是逐字精确匹配(* 无效)。上面片段的值对应商店安装版;解包加载的版本 ID 不同——直接以「加载已解压的扩展程序」加载仓库目录时恒为 chrome-extension://apoodheofdhglelbnmggeokbhampbmgn(由仓库 manifest 的 key 字段锁定),从发行 zip 解包加载则按本机解压根目录路径派生(每台机器不同)。无论哪种,以 chrome://extensions → browsa → ID 实际显示的值为准,把它追加进白名单即可(可并列多条)。v0.5.5 起,守卫接受白名单里精确列出的非 http(s) 来源(仅限 loopback;ws:// 按 http 等价处理,wss 会被拒——本地网关请用 ws://)。
说明:每个 browsa 对话对应一个网关会话(键由网关分配,清空 browsa 历史即重置)。
- 聊天记录存放在网关侧——browsa 只转发你的文字;📎 附加的页面随下一条消息送出一次,之后住在网关自己的对话记录里
- 超大页面(超过 6 万字符)作为
page-context.md文档上传,由智能体用自己的工具分段阅读 - 页面插图以图片附件随行(路由器选到纯文字模型时自动降级为纯文字);回答里会用
[图1]、[图2]引用这些插图;粘贴的截图暂不转发,保留在 browsa 历史里 - 此协议没有系统提示词字段——语言偏好以普通指令拼在消息开头
💬 LLM Providers——OpenAI · Anthropic · Ollama · Groq · LiteLLM · 任意兼容端点
任何支持 OpenAI Chat Completions(/v1/chat/completions)、OpenAI Responses(/v1/responses)或 Anthropic Messages(/v1/messages)的端点。
打开 ⚙ 设置 → LLM Providers。系统会为你预留一个空的 LLM 1 槽位——填入信息后点 Save。服务商以标签形式收在一张卡里,随时点标签栏末尾的 + 新建:
| 字段 | 值 |
|---|---|
| Alias | 你起的名字(例如「My OpenAI」「本地模型」)——显示在侧边栏下拉框中,方便区分多个 provider |
| Base URL | 例如 https://api.openai.com |
| API Key | 你的 API key |
| Model ID | 必填——输入模型 ID 后按 Enter 或点 + 添加,点 ✕ 移除;也支持一次输入多个逗号分隔的 ID。侧边栏下拉按「Alias · 模型」逐个选择 |
| API | 端点使用的协议:Chat Completions / Responses / Anthropic |
想加多少 LLM provider 都行;每个可各自选择协议并带上自己的 Alias。一张卡也可填多个模型 ID——托管几十个模型的聚合网关一张卡就够。用卡片上的 ✕ 删除(内置的 Hermes / OpenSquilla / OpenCode / Agent Bridge 智能体卡片固定不可删)。
点击 📎 附加当前标签页——自动模式(先读出干净正文,失败后回退 DOM 树、再回退全文)或 📷 截图模式(当前可见画面,给多模态模型)。附加 PDF 或 Office 文档——或一个其实是这类文件的页面——是自动的,无需单独选模式。
| 你在读 | browsa 发送 |
|---|---|
| 文章与文档 | 干净的正文;站点 llms.txt 指令一并烘入上下文 |
| PDF 与论文 | 完整版式——表格、标题、多栏——本机解析;插图区域裁出作为图片发给视觉模型,回答按 [图N] 引用(与网页文章配图同一套);扫描件自动附前 ≤12 页页图供视觉模型直接阅读 |
Office 文档(.docx .pptx .xlsx .epub .odt .rtf…) |
经 docling-wasm 本机转换为 Markdown——标题、列表、表格保持结构 |
| 视频 / 播客单集 | 带可点击 [mm:ss] 时间戳的字幕/转写;无字幕视频自动转写(ASR,可选——设置中填 ASR Key:火山方舟或阿里云百炼)或画面与语音一起精读;小宇宙单集同样一键转写 |
| GitHub 仓库与文件页 | 文件页直接抓 raw.githubusercontent.com 原始源码——markdown 与代码保持结构;仓库页附加结构化元数据(描述、topics、license、星数)加 README 原文,侧栏信息不再被当作导航丢掉 |
| 飞书 / Lark 文档 | 直接解析页面编辑器的块结构——标题、列表与表格行列完整保留 |
| 复杂页面 | 观察并直接读页面自身的网络请求——字幕、评论、文章源码(YouTube、Bilibili、小红书等)。小红书笔记连配图一起附加(按场景挑最优变体);知乎回答与专栏读 API 全文(长答案不被「展开阅读全文」折叠截断),文章配图一并附加;掘金文章读 Markdown 源码,配图一并附加;极客时间课程与雪球帖子的配图一并附加;X 长推文取全文与配图(引用的原推内容一并保留);Reddit 优先读帖子自己的 JSON API,图集帖子连图一起附加;B站分P视频按所在分P取字幕,UP主章节一并附带 |
| 选中的文字 | 保留结构——表格、列表、链接在附加时转成 Markdown,不只是纯文本 |
划选网页文字会出现浮动工具栏:解释和翻译就地作答——流式卡片展开在选区旁,不用打开侧栏;提问和总结(以及右键菜单)把选区送进侧栏。不用点 📎。
完整清单收在这里:
聊天——流式回复、思考块、图表、追问……
回复进行中切换会话不会杀掉它:回复转入后台继续跑,完成后写回它所属的会话(抽屉里以跳动的圆点标记进行中)。手动停止则保留已流出的部分并标记「已中断」——长时间的思考永不白费。
| 功能 | 说明 |
|---|---|
| 流式回复 | token 逐字出现;点击输入框中的 ■ 或按 Esc 停止 |
| 思考块 | <think> / <thinking> 内容显示为可折叠块,流式结束后自动收起 |
| Markdown 渲染与高亮 | 完整 GFM(表格、代码块、列表);40+ 种语言(highlight.js);diff 代码块 + 标绿 / - 标红 |
| 你输入的代码也会渲染 | 在输入框贴一段 ``` 围栏代码,你自己的气泡里就是带高亮和复制按钮的代码块;不写语言标签也能自动检测。消息里的其他文字逐字保持原样——你写的内容不会被再解释一遍 |
| LaTeX | 行内 $...$ 和块级 $$...$$(KaTeX)——公式多的消息卸载到 Web Worker 渲染,面板不卡顿;思维导图里的公式用原生 MathML,Mermaid / ECharts / DOT 标签内的公式按各自渲染能力呈现为上下标或 Unicode(不伪造 LaTeX 支持) |
| Mermaid · ECharts · Markmap | ```mermaid / ```echarts / ```markmap 代码块内联渲染,各带缩放/复制/导出 PNG 工具栏(鼠标拖动、键盘 +/−/方向键、触控板或双指捏合);直接说要一张图表或思维导图——模型懂这个格式。Mermaid 流程图可一键横/纵切换(窄侧栏里横向图不再缩成蚂蚁),拖动侧栏宽度后自动按新宽度重排;中文长标签按标点智能断行。Mermaid 解析失败时,一键让 AI 修复重绘——修复后的图先经本地解析校验再替换 |
| 分子式 · 蛋白质 · 关系图 | ```smiles / ```pdb / ```dot 代码块同样内联实时渲染——2D 结构式与化学反应式由 RDKit 绘制并附分子性质条(分子量、logP、TPSA、氢键供体/受体;化学上不成立的结构直接判废、保留原文),按 PDB ID 或 AlphaFold ID 交互查看蛋白质 3D 结构(Mol* 查看器:悬停即出残基信息、自带序列条、AlphaFold 模型按 pLDDT 置信度着色)、Graphviz DOT 架构图(神经网络、数据流、依赖关系;标签里的 _k、^{T} 会按真正的上下标排版,公式不再显示成字面下划线);各带复制/导出工具栏 |
| 回复里的图片 | 点击任意配图放大查看(滚轮 / 触控板缩放、放大后拖动平移、双击切换,Esc 或点背景关闭);不想点开也能就地拖拽缩放——鼠标悬停在图上,右下角出现小圆点手柄,左右拖动即改宽度,松手定格;调过的尺寸按图片本身记住,重开侧栏、切会话回来还是你调的那个大小(图标级小图不显示手柄)。正文图片尺寸上限与带 [图N] 引用的配图共用同一套 |
| 追问(Follow-up) | 选中回复中的任意文本,打开仅针对这段摘录的独立侧边对话,不碰主历史;选中的原文会在回复里持续高亮(重开侧栏也保留);卡片可折叠、也可关闭;关闭侧栏再打开时卡片会自动折叠成引用(只存在于当前浏览器会话,关闭卡片即删除);大小可调;可直接粘贴图片,与主输入框一致;输入框 ↑/↓ 只召回追问里发过的问题;引用里的公式照常渲染成公式;选区内含图片(内联配图 / 截图)时图片一起进引用并随每轮追问发出;视频会话里卡内生成的时间戳同样可点击跳转 |
| 大纲导航 | 对话满 4 轮后出现刻度导航条——点击跳转、悬停预览 |
| 编辑并重发 · 重新生成 | ✏ 编辑并重发任意用户消息;⟳ 重新运行任意回复 |
| 排队追问 | 流式回答期间继续输入会自动排队,回答结束后依次发出 |
| 错误说明卡 | provider 报错归类成大白话标题(鉴权 / 限流 / 超时 / 网络 / 5xx),原始错误可展开、可复制 |
| 复制与时间戳 | ⎘ 复制完整原始 Markdown;悬停任意消息查看发送时间 |
| 回复来源标注 | 每条回复标注生成它的 provider / agent(与侧栏下拉同名);切换到智能体时会询问:把当前对话作为第一条消息带给它,或新建会话从零开始(直接发送则不带上下文) |
历史与会话——抽屉、搜索、导出……
| 功能 | 说明 |
|---|---|
| 会话 | 把当前对话保存为命名会话;从 🕐 抽屉浏览和恢复;置顶的会话悬浮在列表上方。回复转入后台期间若它所属的会话被删掉,回复不会写进你正在看的对话,而是在抽屉里重建一个「Recovered turn(…)」会话 |
| 处处搜索 | Ctrl+F 在对话内跨全部消息搜索;抽屉按标题与消息内容过滤会话(仅内容命中会有标记) |
| 导出 | 任意会话导出为 Markdown 文件 |
| 安全删除 | 会话两步确认删除;消息多选批量删除;清空全部消息前需确认 |
输入——图片、草稿、快捷操作……
| 功能 | 说明 |
|---|---|
| 图片附件 | 直接把图片拖入或粘贴到输入框(用于多模态模型) |
| 输入历史与草稿 | ↑/↓ 召回之前发送过的消息并继续编辑;↓ 越过最新一条恢复原草稿;未发送的草稿在面板关闭后仍在 |
| 斜杠命令 | 输入 / 查看补全——见下表 |
| 快捷操作 | 输入框上方的「总结 / 要点 / 解释 / → 中文 / 大纲」一键按钮 |
| 浮动工具栏与右键菜单 | 在任意页面划选文字:提问 · 解释 · 翻译 · 总结——解释 / 翻译就地流式作答;提问 / 总结与右键菜单送侧栏 |
设置——系统提示词、语言、llms.txt、长附件自动总结……
常用设置直接展示:界面语言、服务商、系统提示词/回复语言和聊天偏好。高级设置里放划词工具栏、llms.txt、深读和 ASR 等选项;不使用这些功能时无需展开。LLM 与 Agent 服务商也可分别折叠,切换 agent 不会展开已折叠的 LLM 分组。
| 设置 | 说明 |
|---|---|
| 系统提示词 | 每轮对话以 role: system 注入——回复语言、语气与格式规则在这里定 |
| 回复语言 | 无论页面语言,强制用指定语言回复。划词操作也遵循此偏好;自动模式使用界面语言。 |
| 界面语言 | 中文 / English / 日本語 / 한국어 / Español / Português / Русский / Auto(跟随浏览器语言)——侧栏、浮动工具栏与右键菜单即时生效,无需刷新网页 |
| 划词工具栏与 llms.txt | 开关划选文字时的浮动工具栏;附加页面(📎)时抓取一次 <origin>/llms.txt,把站点 LLM 指令烘入页面上下文——放在系统提示词之外,保证提示词前缀跨轮次字节稳定(对 prompt 缓存友好) |
| 思考档位 | 按模型设置思考深度(auto 不发送;其余按模型自带的档位——GLM/Qwen 类是开关档,GPT/Claude 类是低→最高力度梯)。可选项跟着你填的模型 id 自适应,请求字段按各家 API 方言自动适配(reasoning.effort / thinking+output_config / enable_thinking……) |
| 阅读偏好 | 消息字号、正文字体(系统默认 / 宋体 / 等宽,图表文字跟随)、发送快捷键(Enter / Shift+Enter)、思考块自动折叠 |
| 多模态视频理解 | 无字幕视频的转写/精读服务商(默认阿里云百炼,也可用火山方舟):API Key、语言、热词、字幕来源,支持一键「测试连接」 |
| 长附件自动总结 | 自动进行——超过阈值(默认 100,000 字符)的页面或字幕会分块、并行总结、后台合并;[mm:ss] 标记显式保留,跳转链接继续可用;任何错误都安全失败、静默保留原文 |
| 深读(Deep extract) | 默认开启——附加前自动展开折叠区块、翻页抓取后续内容,让更多页面内容进入模型;全程在后台标签页静默进行,不滚动、不点击你正在看的页面 |
在输入框输入 / 查看自动补全。所有命令都可以跟额外指令——/summarize focus on the methodology:
| 命令 | 发送给模型的提示词 |
|---|---|
/summarize |
3–5 条要点总结 |
/translate |
翻译成中文 |
/rewrite |
更简洁的改写,保留全部事实 |
/explain |
用简单语言向新手解释 |
/outline |
仅标题的嵌套大纲 |
/keypoints |
前 5 条要点 |
/prompt |
显示当前生效的系统提示词(不发送给模型) |
| 快捷键 | 动作 |
|---|---|
Ctrl+Shift+H |
打开 / 关闭侧边栏 |
Enter |
发送消息(可在设置中配置) |
Shift+Enter |
换行 |
Ctrl+K |
清空消息(需确认) |
Ctrl+/ |
循环切换上下文模式(自动 ↔ 截图) |
Ctrl+F |
打开对话内搜索 |
Esc |
取消流式 / 关闭搜索 / 关闭抽屉 |
代码地图
background.js——MV3 服务工作线程,单一消息路由器;通过每轮端口流式传输,超大附件自动总结。sidepanel.js——聊天 UI 编排器;渲染(Markdown/Mermaid/Markmap/KaTeX/ECharts)、会话、搜索、追问各在lib/sidepanel/下。lib/——页面提取(Readability 级联 + XHR 拦截)、SSE 流式客户端(/v1/chat/completions、Hermes/v1/runs、opencode / agent-bridge agent 客户端)、chrome.storage.local封装、内容脚本。
Wiki 把每一行展开成整章——架构总览、渲染管线、存储模型、Provider 层与 Agent 接入、ASR 与视听精读、安全模型、设计决策、参与开发。
Chrome / Edge 116+(主要目标);Brave 1.56+ 应可运行(相同的 Chromium 内核)。Firefox 不支持(没有 side_panel API)。
- API Key 保存在本地
chrome.storage.local,用于向你配置的服务进行身份验证;本地保存不代表密钥不会通过网络发送。 - 附加的页面内容、问题和对话上下文会发送给你选择的模型或 agent。可选的语音转写/视听分析也会把媒体发送给配置的分析服务。
- 页面上下文发送前,browsa 会在本地隐去 URL 中可识别的凭据(如令牌、密码、签名、会话参数);这不等于对页面正文中的敏感信息进行全面脱敏。browsa 自己要拉取的 URL(媒体、图片)不受影响。
- PDF 在本地解析(WASM + pdf.js),提取出的文字和图片可以发送给配置的 provider;本地解析不代表所有提取内容都留在设备上。
- LLM 回复在渲染前用 DOMPurify 净化(拦截
data:image/svg+xml来源;Mermaid 的 SVG 输出会移除<script>/ 事件处理器属性)。 - 内容脚本只观察网络请求,从不修改或阻断它们。
扫码加好友(备注「browsa」),拉你进微信 / 飞书交流群——使用技巧、问题反馈、更新动态都在群里;也欢迎到 GitHub Discussions 发帖讨论。
| 微信(备注「browsa」) | 飞书(备注「browsa」) |
|---|---|
![]() |
![]() |
MIT —— 免费使用、修改与分发。
browsa —— 读到哪里,问到哪里。


