-
Notifications
You must be signed in to change notification settings - Fork 2
Browser Agent
AceGuru-mjh edited this page Oct 1, 2026
·
4 revisions
📑 本页目录
对标 Operit 的
BrowserAgent:DOM 级网页操控,而不是"截图 → 盲点坐标"。 实现落在app/.../browser/(含一整套 Chrome 风 UI 与 bridge),向 LLM 暴露 15 个browser_*工具。
| 动作 | 工具 |
|---|---|
| 导航 / 生命周期 |
browser_navigate browser_show
|
| 交互 |
browser_click browser_input browser_scroll browser_select browser_toggle browser_date_input browser_file_upload
|
| 观察 |
browser_screenshot browser_snapshot browser_context_summary
|
| 下载 | browser_download_list |
| 诊断 |
browser_network_log browser_debug_dump
|
Note
这些工具只有在浏览器 UI(Chrome 风 Fragment/Activity 桥)存在时才有意义,
因此全部注册在 :app 而不是纯 JVM 的 core 模块 —— 见 模块地图。
| 维度 | 截图 + 坐标点击 | DOM 级(本项目) |
|---|---|---|
| 分辨率/缩放变化 | 坐标立即失效 | 不受影响 |
| 元素定位精度 | 依赖视觉模型猜坐标 | 直接命中 DOM 节点 |
| token 成本 | 每步都要发图片(贵) | 只发快照结构(省) |
| SPA 局部刷新 | 截图不一致 | ref 依然有效(见下) |
| 需要 VISION 模型 | 是 | 否 |
元素引用基于语义哈希而非 DOM 序号:
ref = hash(tag + role + 稳定属性集合 + 文本内容摘要 + 结构位置特征)
这样 SPA 局部刷新(列表重排、广告插入、懒加载)之后 ref 依然有效 —— DOM XPath 式的
/html/body/div[3]/div[1] 在这里是不可用的。
| 组件 | 作用 |
|---|---|
BrowserTracer |
环形缓冲(容量 100)记录操作轨迹:动作、ref、URL、结果摘要 |
RetryPolicy |
断点续控:某步失败可按策略重试并保留已完成的上下文 |
browser_context_summary |
给 LLM 一页精简版的"当前页面能干什么",降低回合数 |
browser_network_log / browser_debug_dump
|
卡住时把网络请求与 DOM 诊断信息交给 LLM 自主排错 |
flowchart LR
N["browser_navigate(url)"] --> S["browser_snapshot()<br/>拿到带 ref 的 DOM 摘要"]
S --> D{"LLM 决策下一步"}
D -->|点击| C["browser_click(ref)"]
D -->|输入| I["browser_input(ref, text)"]
D -->|提取| X["browser_context_summary()"]
C --> S
I --> S
X --> A["答案 / 抽取结果"]
S -->|元素找不到| F["browser_debug_dump() 找原因 → 重试"]
- 网页内容不可信:LLM 看到的 DOM 文本里可能混入提示注入(prompt injection)。
实践上用
browser_context_summary限制注入面,别把整页原文无脑拼进 prompt; - 涉及登录态/支付/隐私表单时建议配合 Assist 模式 让人来点最后一步;
-
browser_debug_dump会输出较多内容,注意 上下文压缩 水位。
-
MCP 生态总览
新 - (沙箱 MCP · 官方 Hub · 逆向 Host · 门控语义)
- 终端运行时
- 终端 API 契约
- SDK 边界
- Termux 能力矩阵
- Ubuntu rootfs 供给
- Ubuntu 生命周期
- PRoot 二进制溯源
- VT100/ANSI 模拟器
- 终端性能
- 终端迁移
- 原生层 C++/JNI