---
name: browser
description: 浏览器自动化工具使用指南
---

## 浏览器工具使用指南

所有浏览器工具都以 `browser_` 为前缀。浏览器会话会持久化，无需每次重新启动。

### 基本工作流程

1. **页面导航**: 使用 `browser_navigate(url)` 或 `browser_search(query)` 到达目标页面
2. **等待加载**: 页面跳转后调用 `browser_wait(seconds=2)` 等待内容加载
3. **获取元素索引**: 调用 `browser_screenshot(highlight_elements=True)` 获取带编号标注的截图 + 元素列表
4. **执行交互**: 使用 `browser_interact(action, index, ...)` 操作页面（click / type / send_keys / upload / dropdown）
5. **提取内容**: 使用 `browser_extract(query)` 让 LLM 提取结构化数据，或 `browser_read(mode="long")` 分页读取长内容

### 关键原则

- **禁止模拟结果**：不要输出你认为的搜索结果，而是要调用工具获取真实结果
- **必须先获取索引**: 所有 `index` 参数都需要先通过 `browser_screenshot(highlight_elements=True)` 或 `browser_elements()` 获取
- **高级工具**：优先使用 `browser_extract` / `browser_read` 获取数据，而不是手动解析元素
- **操作后等待**: 任何可能触发页面变化的操作后都要调用 `browser_wait`
- **登录处理**:
  - **正常登录**：使用 `browser_cookies(action="load", url=...)` 注入已保存的 cookie
  - **首次登录**：需要人类协助——导航到登录页，通过飞书发送链接，等待确认后 `browser_cookies(action="export")` 保存
- **复杂操作用JS**: 当标准工具无法满足时，使用 `browser_js(code)` 执行 JavaScript

### 工具一览

| 工具 | 功能 |
|------|------|
| `browser_navigate(url)` | 导航到 URL |
| `browser_search(query, engine)` | 搜索引擎搜索 |
| `browser_back()` | 返回上一页 |
| `browser_interact(action, ...)` | 元素交互（click/type/send_keys/upload/dropdown） |
| `browser_scroll(down, pages)` | 滚动页面 |
| `browser_screenshot(highlight)` | 截图（highlight=True 带元素编号标注） |
| `browser_elements()` | 获取可交互元素列表（纯文本） |
| `browser_read(mode)` | 读取页面（html/find/long） |
| `browser_extract(query)` | LLM 驱动的结构化数据提取 |
| `browser_tabs(action, tab_id)` | 标签页管理（switch/close） |
| `browser_cookies(action, ...)` | Cookie/登录态管理（load/export/ensure_login） |
| `browser_wait(seconds/user_message)` | 等待（定时 or 等用户操作） |
| `browser_js(code)` | 执行 JavaScript |
| `browser_download(url)` | 下载文件 |
