byob(Bring Your Own Browser)
让 AI 编码助手直接操作你已登录的 Chrome,无需新开无头浏览器。
- 源仓库
- wxtsky/byob
- Star 数
- ★ 145
- 最近更新
- 1 个月前
- License
- MIT
- 主语言
- JavaScript
- FA 评分
- 48/100 · 缺口较多
30 秒速览
- 运行形态
- 可在哪里用
- 通用 · 跨平台Codex · Claude Code
- 费用
- 免费,无需付费服务
- 上手难度
- 中 · 需要几步配置
- 开始前需要
- 典型场景
- 开发者让 Claude Code 打开已登录的 GitHub 或 Gmail,读取未读数量或抓取页面内容来继续写代码
- 不适合
- 需要在无图形界面的服务器或容器里跑浏览器的团队
- 不愿让工具接触已登录个人账号(邮箱、银行等)的用户
- 期望装完即用、不需要手动加载扩展并重启 Chrome 的人
这个 Agent 能做什么,适合哪些场景?
byob 是一个本地 MCP 服务器,把 AI 编码工具(Claude Code、Cursor、Cline、Windsurf、Codex CLI 等)接到你日常使用的真实 Chrome 上。它由三部分组成:stdio 的 MCP 服务 byob-mcp、经 Unix 套接字通信的本地进程 byob-bridge,以及一个通过 Chrome Native Messaging 与 bridge 通信的 MV3 扩展;扩展再用 Chrome DevTools Protocol 操作标签页。v0.5 提供 25 个工具,覆盖快照、查找、点击、输入、按键、滚动、拖拽、文件上传、读取正文、截图/PDF、标签页管理、控制台与网络抓包、Cookie 与存储、对话框、设备模拟、剪贴板和批量步骤等。因为用的是你已登录的浏览器,它天然能通过登录态页面和多数机器人检测,但代价是需要在本地安装扩展、手动加载并完全重启 Chrome。所有通信都在本机进行,扩展脚本运行在隔离世界(isolated world),不会向页面暴露 window 全局变量或 data 属性。
AI 客户端通过 stdio 调用 byob-mcp,后者把请求转给 byob-bridge,再由 Native Messaging 送到 Chrome 扩展,扩展用 Chrome DevTools Protocol 在你的标签页里执行动作。元素定位支持快照产生的 ref(如 [ref=e12])、CSS 选择器或 x/y 坐标;browser_snapshot 输出带 ref 的无障碍大纲,browser_find 可按 role+name、文本、label、placeholder、testId 查找并顺带点击或填写。browser_click/type/press_key/hover/select/scroll/drag/upload_file 使用真实鼠标与键盘事件,并自动等待元素可见、稳定、可点击,同时回报导航、新标签页和 JS 对话框。browser_read 可输出文本、markdown、html、链接或表格;browser_screenshot 返回视口、整页、元素或裁剪区域图像给模型,也能导出 PDF。browser_network 可记录流量(summary/JSON/HAR)或拦截、阻断、篡改请求;browser_storage 读写 Cookie 与 local/session storage;browser_emulate 模拟设备、深色模式、地理位置、时区、语言、离线和自定义请求头。browser_evaluate 默认关闭,需设置 BYOB_ALLOW_EVAL=1 才可运行页面 JS,且每次调用都会记审计日志。
- 开发者让 Claude Code 打开已登录的 GitHub 或 Gmail,读取未读数量或抓取页面内容来继续写代码
- 需要登录态的数据采集:让 agent 读取 Twitter/X 时间线并总结前几条,或搜索后点击第一条结果再读全文
- 前端调试:在真实页面上复现 bug,用 browser_network 导出 HAR、用 browser_console 查看报错、用 browser_inspect 取元素盒模型与 Web Vitals
- 测试表单流程:用 browser_batch 一次填完整张表单并提交,再截图确认结果
- 做视觉与文档产出:对 example.com 截图或导出 PDF 作为交付物
- 需要复用现有登录 Cookie 做脚本验证(README 举例“grab my GitHub session cookie so I can curl with it”)
如何安装或部署这个 Agent?
前置条件:Node.js ≥ 20、bun、Chrome/Edge/Brave,以及任意兼容 MCP 的 AI 工具。
推荐用一键脚本(Windows 请在 Git Bash 或 MSYS2 中执行):
curl -fsSL https://raw.githubusercontent.com/wxtsky/byob/main/install.sh | bash脚本会检查依赖、克隆仓库、构建并交互式注册 MCP;未装 bun 时会提示用系统原生安装器安装。可用 BYOB_INSTALL_DIR 改变安装目录(默认 ~/byob)。
手动安装:
git clone https://github.com/wxtsky/byob
cd byob
bun install
bun run setupsetup 会依次询问输出语言(English / 中文)、生成唯一扩展密钥、构建扩展、写入 Chrome 与 byob 通信的配置,并让你多选要接入的 AI 工具(Claude Code 会装自带插件,其他客户端写入 MCP 配置)。之后还需手动三步:(1) 打开 chrome://extensions,开启“开发者模式”,点“加载已解压的扩展程序”,选择终端打印的目录,如 /your/path/to/byob/packages/extension/output/chrome-mv3;(2) 完全退出 Chrome(macOS 用 ⌘Q)再重开,Chrome 只在启动时读取 Native Messaging 配置;(3) 等 setup 打印 ✓ bridge online,或稍后运行诊断:
bun run doctor若跳过了注册步骤,也可手动注册 MCP,例如 Claude Code:
claude mcp add byob -s user -- /path/to/tsx /path/to/byob-mcp.ts或安装 Claude Code 插件:
claude plugin marketplace add wxtsky/byob
claude plugin install byob@byob --scope user如何使用这个 Agent?
安装并确认 bridge 在线后,在新开的 AI 会话里直接用自然语言提出任务,例如“use byob to read my Twitter timeline and summarize the top 5 posts”。
安全配置可按站点设置允许/拒绝清单(仅由你设置,agent 不能改):
bun run policy --deny "**.chase.com" "mail.proton.me"
bun run policy --allow "**.github.com"
bun run policy --clear-allow --clear-deny
bun run policy --allow-file on如需让 agent 运行页面 JavaScript,在 MCP 配置中启用(仅在你信任的场景下):
# Claude Code 手动注册时追加
claude mcp add byob -s user -e BYOB_ALLOW_EVAL=1 -- /path/to/tsx /path/to/byob-mcp.ts{
"mcpServers": {
"byob": {
"command": "/path/to/tsx",
"args": ["/path/to/byob-mcp.ts"],
"env": { "BYOB_ALLOW_EVAL": "1" }
}
}
}日常维护命令均在仓库根目录运行:
bun run doctor # 检查哪一步没通
bun run bridges # 列出运行中的 bridge 进程
bun run logs # 跟踪 bridge 日志
bun run unsetup # 卸载清理常见报错对照:No live bridge(Chrome 未运行或扩展被禁用)、cdp_attach_failed(该标签页开着 DevTools)、url_forbidden(被站点策略拦截)、stale_ref(页面已跳转,需重新快照)、element_covered(有弹层遮挡,可关闭或 force:true)。
这个 Agent 有哪些优点和局限?
- 直接复用你已登录的 Chrome,无需复制 Cookie 或重新登录,也能以真实人类浏览器身份通过较多机器人检测
- 采用扩展 + Native Messaging,而不是开放远程调试端口,因此没有“允许远程调试”弹窗,其他本机程序也无法通过该端口劫持浏览器
- 安全设计具体:browser_evaluate 默认关闭并逐次审计、密码/OTP/卡号/邮箱字段值以 [redacted] 回传、chrome:// 与 file:// 及 Google/MS/Apple 登录页默认拦截、套接字 0600 与目录 0700、零出站流量
- 动作会自动等待元素可见/稳定/可点击,并主动回报导航、新标签页和对话框,agent 不必轮询;Ctrl+C 可端到端取消
- 25 个工具覆盖面广,从无障碍快照 ref 定位到网络 HAR 导出、请求拦截、设备模拟、截图/PDF,基本覆盖真实页面调试与自动化
- 安装链路偏长:需 Node.js ≥ 20、bun、构建扩展、chrome://extensions 加载解压扩展,并且必须完全退出重启 Chrome,Claude Code 插件用户还需注意不要重复注册第二个 MCP 服务
- 操作期间 Chrome 会在活动标签页显示“byob is debugging this browser”提示条,这是浏览器安全特性,无法关闭
- 标签页若开着 DevTools 就无法 attach(cdp_attach_failed),页面跳转后旧 ref 会失效需重新快照,存在明确的操作约束
- 升级破坏性:0.5 版本工具名称相比 0.4 有变化,已有脚本或提示词需要同步修改
- 项目仍标注 v0.5,README 自述“拥有对浏览器的广泛访问权限”,只应在自有设备和账号上使用;无可审计的第三方安全评估或托管版本
这个 Agent 与同类方案有什么区别?
README 明确对比了三类替代方案:WebFetch(看不到登录态页面、难过机器人检测)、Headless Puppeteer(需手工搬运 Cookie、setup 耗时以小时计、可能有云成本)、以及通过 Chrome 远程调试端口附加的工具(DevTools MCP、agent-browser、Playwright --cdp)——后者需要开放调试端口,并且每次连接都会弹出“允许远程调试?”提示,本机其他程序也可能借该端口劫持你已登录的浏览器。byob 以扩展方式规避了调试端口问题,代价是需要手动加载扩展并重启 Chrome。
与相关度最高的同类 agent 并排比较关键指标。
| Agent | 源码审查 | 形态 / 费用 | Star | 最近更新 | 主语言 | 完整支持的平台 |
|---|---|---|---|---|---|---|
| byob(Bring Your Own Browser) 当前 | 48 · 缺口较多 | MCP 服务器免费 | ★ 145 | 1 个月前 | JavaScript | Codex · Claude Code |
| BrowserTools MCP | 81 · 表现良好 | — | ★ 7.3k | 9 天前 | TypeScript | Claude Code |
| Interceptor | 57 · 缺口较多 | 命令行工具免费 | ★ 603 | 今天 | TypeScript | Codex · Claude Code · Claude.ai |
| OpenTabs | 49 · 缺口较多 | 命令行工具免费 + 模型费 | ★ 1k | 3 个月前 | TypeScript | Claude Code |
FollowAgents 如何评估这个 Agent?
查看各维度的扣分理由
README 明确说明 browser_evaluate 默认关闭、chrome:// 与登录页默认拦截、按站点 allow/deny 由用户设定、密码/OTP/卡号字段脱敏、socket 0600、零外联流量,这些是实质性的最小权限与敏感数据处理证据,故 least_privilege 与 sensitive_data_handling 给 1-2 分。但扣分点明确:安装脚本以 curl | bash 方式执行远程代码,属于高权限默认路径;工具集包含 browser_storage 读取 cookie、browser_clipboard、browser_upload_file、browser_network 拦截改写等强能力,README 自身也承认“broad access to your browser”,且未提供逐次操作的用户确认机制(user_confirmation 仅 1 分)。依赖安全方面,仓库仅给出根 package.json(sharp 0.34.5 为 devDependency),无 lockfile、无依赖审计或 SBOM 证据,故 dependency_security 记 0。外部副作用(提交表单、点击、下载)无 dry-run 或影响预览,rollback 仅靠 unsetup 与 policy 重置,缺少操作级撤销,均记 1。来源归属仅 README 与 LICENSE 署名 wxt,发布者未经校验,记 1。
README 对自动等待、动作效果回报、对话框不挂起、端到端取消、睡眠唤醒恢复等行为描述具体,且与工具表一致,self_consistency 给 2。失败信息有专门 troubleshooting 表与 doctor 命令,错误码(stale_ref、element_covered、url_forbidden 等)明确,failure_messages 给 2。但依赖可用性证据薄弱:要求 Node ≥20 与 bun,安装脚本会代为安装 bun,仓库内无 lockfile 固定版本,跨平台仅以表格声明,故 dependency_availability 记 1。
面向 Claude Code、Cursor、Cline、Windsurf、Codex 等多客户端给出分别的配置示例,场景覆盖读取、点击、截图、表单填写,audience_and_scenarios 给 2。能力边界写得清楚(eval 默认关闭、站点策略、登录页拦截、Chrome 调试横幅不可抑制),capability_boundaries 给 2。但触发精度不足:工具以自然语言由模型选择调用,无显式确认门槛或危险动作分级,trigger_precision 记 1。环境适配覆盖 macOS/Windows/Linux 与 Chrome/Edge/Brave,但 Windows 需 Git Bash/MSYS2,属部分适配,environment_fit 给 2。
README 结构清晰,含安装、工具表、架构图、命令、安全、排障、平台说明,information_architecture 与 install_notes 均给 2(安装步骤分步且含手动路径)。examples_and_faq 有示例语句与排障表,给 2。license 为完整 MIT 文本,给 2。但命名稳定性扣分:README 自述 0.4 升级到 0.5 工具名变更,naming_stability 记 1。known_limitations 仅零散提及(调试横幅、需完全重启 Chrome),无集中限制清单,记 1。versioning_changelog 仅徽章与链接指向 CHANGELOG.md,文件本身未在证据中,记 1。maintenance_responsibility 仅有单一作者署名,无治理、安全披露渠道或维护承诺,记 1。
输出可用性较好:快照带 ref、截图回传模型、读取支持 markdown/表格,output_usability 给 2。相对 WebFetch 与 headless 的对比表说明其边际价值(复用已登录真实浏览器、免调试端口),marginal_value 给 2。但成本收益扣分:需 bun、需加载未打包扩展、需完全重启 Chrome、Chrome 会显示调试横幅,安装与维护成本高于 README 宣称的“~5 分钟”,且强权限带来的风险成本未量化,cost_benefit 记 1。
claim_traceability 仅部分可追溯:工具 schema 指向 shared/src/tools.ts,但该文件不在证据中;性能与安全声明多为 README 自述,记 1。cross_source_corroboration 仅有 README、LICENSE、package.json 三份文件,package.json 可佐证版本 0.5.0 与脚本存在,但无测试或代码佐证安全声明,记 1。fact_inference_separation 方面 README 将“已测试端到端”等结论与描述混排,未区分已验证事实与设计意图,记 1。
- 源码中未见:依赖安全审查安装前固定版本并做一次依赖扫描(如 npm audit、pip-audit);优先放在容器里运行。
- 推荐安装方式为 curl | bash 执行远程脚本,属于高权限默认路径;建议先审阅 install.sh 再执行,或改用 git clone 手动安装。
- 工具集包含读取 cookie/存储、剪贴板读写、文件上传、网络拦截改写等强能力,README 自述对浏览器有广泛访问权,仅应在自有设备与账号上使用。
- 缺少逐次操作的用户确认机制,模型可自主提交表单、点击与下载;建议配合站点 allow/deny 策略收紧范围。
- 仓库证据中无 lockfile 与依赖审计信息,依赖安全无法静态确认。
- 发布者身份未经校验,维护责任与安全披露渠道不明确。