首页 项目矩阵 Browser Agent
基础设施 · 工具件

Browser Agent

给 code agent 装上眼和手 —— 一行 HTTP 直接驱动用户日常 Chrome,绕开 Puppeteer 的所有麻烦。

Browser Agent 是一个独立的 Chrome 扩展产品,最初从 Clawline 工具链里分出来 —— 解决 code agent 看不见浏览器的问题。 形态:MV3 扩展 + Node native messaging host + 一个 HTTP API(0.0.0.0:4821)。 Hermes / Claude Code / Cursor 等 code agent 一行 curl /v1/action 就能让真实 Chrome 点页面、查内容、跑 E2E 测试。 挂在用户已经开着的 Chrome 上,自带登录态和真实环境,不是 headless 沙箱。 6-04 完成了引擎大换血:自研 a11y agent 整套扔掉,全切 Midscene 1.8.9 视觉引擎,代码从 5100 行压到 1440 行(-72%)。

clawline/browser-agent HTTP :4821 · 0.0.0.0 LAN 可达 Chrome MV3 unpacked Midscene 1.8.9 引擎
1440 行
从 5100 行重构压到 28%
5 个 API
/v1/action·query·assert·tap·screenshot
v2.0
Midscene 引擎 · 6-04 落地
2 个月
4-08 初版 → 6-04 重构上线

这是什么

一个让 code agent 能"看见浏览器"的扩展

Chrome MV3 扩展 + Node native messaging host + HTTP API(0.0.0.0:4821)。 扩展挂在用户日常 Chrome 上、host 跑在本机背景里、HTTP 接口给 code agent 用。 Hermes / Claude Code / Cursor 一发请求,扩展通过 Chrome Debugger Protocol 真去点页面、读 DOM、截图,再把结果回给 agent。 整条链路:agent → HTTP → native host (IPC) → 扩展 → 页面,没有 WebDriver、没有浏览器冷启、没有云端中转。

解决什么问题

Code agent 对浏览器是瞎的

code agent 会写代码会推理,但看不见用户的浏览器 —— 看不到按钮长啥样、点不了登录后才出现的菜单、验证不了视觉 bug。 传统方案有 3 类:① Puppeteer / Playwright 要单独管 cookie、过 CI 反爬、维护无头浏览器实例,每次冷启 1-3 秒; ② 云端 browser API(如 Browserbase)网络绕一圈贵又慢,还不能用真实账号; ③ 纯 vision SDK 没法 hook 真实 Chrome,看到的是别人的截图。 Browser Agent 直接挂在用户已经登录的 Chrome 上,自带 cookie / session / 公司内网访问,agent 一发 HTTP 就能驱动 —— 这是不可复制的护城河。

架构三层

扩展 + Native Host + HTTP API

用最少的中间层把 code agent 接到真实 Chrome —— 网络只走一次(localhost),其余全是 IPC 或 in-process。

Chrome 扩展 · MV3

Sidepanel + Service Worker

挂在用户日常 Chrome 上 · 自带登录态

Sidepanel 负责 UI 和操作分发,Service Worker 跟 Native Host 用 Native Messaging 双向通信。通过 Chrome Debugger Protocol 直接驱动页面 —— 跟 Chrome DevTools 自己用的是同一套协议。多 sidepanel 并行路由,per-task API key 覆盖,多个 agent 同时调互不干扰。

Manifest V3 · CDP · chrome.debugger
Native Host · Node

HTTP 服务 + IPC 桥

本地 Node 进程 · 4-byte LE length-prefixed JSON

背景跑的 Node 进程。一边监听 0.0.0.0:4821 接 code agent 的 HTTP 请求,另一边用 Chrome Native Messaging(stdin/stdout 二进制 IPC)跟扩展通信。绑 0.0.0.0 意味着 LAN 上的其他 agent 也能调(爸爸内网另一台机的 Hermes 可以用本机的扩展)。

Node ESM · HTTP server · Native Messaging
Midscene 引擎

视觉定位 + AI 操作

@midscene/web 1.8.9 · VLM 看截图标坐标

6-04 之前是自研 a11y tree + 自家 LLM loop,复杂 UI 定位飘。改用 Midscene 后:视觉模型直接看截图打坐标,canvas / 自绘 / 没 aria 的烂前端也能点。aiAct / aiQuery / aiAssert / aiTap 四个原子能力对应 4 个 HTTP 路由。Anthropic adapter 让它能走自家 proxy。

@midscene/web 1.8.9 · VLM · Anthropic adapter

近期重要变化

6 件值得记录的业务进展

从业务视角看:发生了什么、对调用方意味着什么。

6-03 / 6-04

引擎大换血 · 自研全扔,切 Midscene 1.8.9

自研 agent(自家 a11y tree 抽 ref ID + 自家 LLM loop)跑了 2 个月一直定位不准 —— canvas、shadow DOM、没 aria 的页面全抓瞎。6-04 整套扔掉,全换 Midscene 视觉定位。代码从 5100 → 1440 行(-72%),定位精度大幅提升,从此 Figma / 在线表格这种以前点不准的 UI 也能驱动。

6-04

API 收口 · 只剩 /v1(Midscene 接口)

过渡期 /v1(旧 agent)和 /v2(新 Midscene)并行了一周,6-04 把 v2 改名 v1、删掉旧 agent,API 收成一套。现在外部就 5 个端点:/v1/{action, query, assert, tap, screenshot},每个对应 Midscene 一个原子能力,加 /sessions/v1/health 做发现。

6-04

Anthropic adapter · 接自家 proxy

Midscene 原生只对接 OpenAI 协议。写了一个 chat.completions.create-shaped 适配层,把请求翻译成 Anthropic Messages API,能直连自家 api.eagle.openclaws.co.uk proxy。不用为这个工具单独买 OpenAI 账号,复用现有 Anthropic 通道。

4-25 / 4-26

多 sidepanel 并行调度

之前一台机器只能开一个 sidepanel,多 agent 同时调会 dogpile 到同一个窗口。改造后多 sidepanel 并行路由,scan 所有 Chrome profile 实例、per-task API key / model 覆盖、跨 window 自动选可用 sidepanel —— 多个 agent 同时跑也互不打架。RTT 平均改善 26.1%

5-22

真实生产场景跑通 · PackHorizon E2E

PackHorizon report-v2 报告页的端到端浏览器测试用它跑(场景 ① ② + 4 类盲区扫描)。不是 demo 站,是公司业务页面,证明这套能扛真实复杂前端 + 登录态 + 跨页跳转,强调"不要再自己写 puppeteer/playwright"。

4-24

Windows 装机脚本

本来只能 mac 上手装,4-24 加了 Windows installer / uninstaller,三平台都能装(mac / linux / win)。Native Messaging 在 Windows 上需要写注册表,installer 把这步自动化。

沉淀的洞察

2 个月做这件事学到的真东西

不是技术 tips,是踩了坑之后想法上的变化。

能用别人造好的轮子就别自己造
自研 a11y tree agent 跑了 2 个月一直定位飘,换 Midscene 视觉引擎一周就稳了。早期为了"完全自主可控"造的轮子,后期 90% 价值都在被替换 —— 真正自主可控的应该是外围(adapter / 协议 / 接口),核心算法跟着行业最佳实践走更划算。这次重构等于承认前期 5100 行有 70% 是错误投入。
"挂在用户日常 Chrome" 是不可复制的护城河
Puppeteer 解决不了"我已经登录了的状态"(要手动注入 cookie),云端 browser 解决不了"我家内网/公司账号",纯 vision SDK 只能看截图没法操作。扩展形态绕过这三道墙 —— 这个产品形态本身就是价值,不是哪个 LLM 模型给的。
API 收口比加功能重要
/v1 旧路由和 /v2 新 Midscene 路由并行只放了一周就强制合一。双 API 并存 = 双倍认知成本 + 用户永远在猜"这俩有啥区别"。哪怕牺牲一些短期灵活性也要把表面收成一套,否则一个月后没人记得 /v1 vs /v2 哪个该用。
网络层数少一层 = 体验质变
传统 Puppeteer 链路:agent → HTTP → 云/本地 server → WebDriver → 浏览器进程 → 页面。Browser Agent:agent → HTTP → Native Host (IPC) → 扩展 → 页面。少一层网络 + 浏览器不冷启,截图响应 ~50ms vs 传统 1-3s。这个差异让 agent 一秒钟能跑十几次浏览器操作,从工具升级成 fluent interface。

关键里程碑

4-08 初版 → 6-04 引擎重构

7 个对项目走向有方向性影响的节点,跳过日常 commit。

2026-04-08
初版发布 · AI browser agent Chrome 扩展
第一版上线 —— 自研 a11y tree 抽 ref ID,自家 LLM loop 跑 Anthropic API,工具与老版 extension 完全对齐。当天连续修了 9 个 commit(pruning / tool fallback / depth 等)。
2026-04-23
Bridge 稳定性 + Windows 装机
Bridge connection 在 Windows 上不稳,加了一套全量日志 + 恢复机制(PR #2)。第二天补 Windows installer / uninstaller,三平台都能装。
2026-04-25
Observability + 多 sidepanel 路由
加 perf timing / 诊断日志 / per-task API 覆盖 / discovery 端点(host pid+uptime+window+tab metadata)/ Settings 里 SKILL.md 下载按钮。第一次能并行跑多 sidepanel。
2026-04-26
真实场景 perf benchmark
W1-W14 真实工作流场景 + validator pass rates。rule 11 (one-shot execution) + W15 让平均 RTT 改善 26.1%。绑 0.0.0.0 让 LAN 上其他机器也能用。
2026-05-22
PackHorizon 生产场景验证
PackHorizon report-v2 端到端浏览器测试 + 4 类盲区扫描全部用它跑通。证明能扛真实业务页面 + 登录态 + 跨页跳转,不是 demo。
2026-06-03
POC · Midscene 引擎并行
CC 三轮派单全部 exit 0 落地。/v2/* 新路由跑 Midscene,/v1/* 旧自研保留。pnpm build 绿 / /v2/health 200。代码 5100 → 1440 行(-72%)。
2026-06-04
v2.0 落地 · 自研 agent 整套删除
把 /v2 改名 /v1(成为唯一 API),旧 a11y agent + content-script 全删,Anthropic adapter 单测 10/10 通过。从此 Browser Agent = Midscene runner + Anthropic 适配层,自家代码只剩 1440 行。

入口与资产

5 个外部可访问的点

源码 + 接口 + 文档。

源码仓库
clawline/browser-agent
独立 GitHub 仓 · MV3 + native host + docs
HTTP API
0.0.0.0:4821
/v1/{action,query,assert,tap,screenshot} · LAN 可达
Chrome 扩展
unpacked /dist
本地构建 · chrome://extensions 装载
HOOK_API 文档
docs/HOOK_API.md
仓库内 · API 参数和返回格式
Midscene 迁移记
docs/MIDSCENE_MIGRATION.md
仓库内 · 整套重构的过程文档

技术栈

扩展 · 引擎 · 协议
Chrome MV3 Chrome Debugger Protocol Native Messaging IPC @midscene/web 1.8.9 @midscene/core 1.8.9 Node ESM rsbuild Anthropic adapter JavaScript / HTML gifenc