browser-use

AI驱动的智能浏览器自动化工具。使用LLM理解页面并自动执行任务,比传统Playwright更智能、更省token。适用于复杂交互、动态页面、需要智能决策的浏览器操作。Chrome浏览器优先。

aaaaqwq/agi-super-team32 installsMITSynced Aug 26

Works with

Claude CodeCursorCodex CLIGitHub CopilotGemini CLI
---
name: browser-use
description: AI驱动的智能浏览器自动化工具。使用LLM理解页面并自动执行任务,比传统Playwright更智能、更省token。适用于复杂交互、动态页面、需要智能决策的浏览器操作。Chrome浏览器优先。
license: MIT
---

# browser-use 智能浏览器自动化

## 概述

browser-use 是一个 AI 驱动的浏览器自动化工具,它使用 LLM 来:
- 理解网页内容
- 智能决策下一步操作
- 自动完成任务

与 Playwright 的区别:
| 特性 | Playwright | browser-use |
|------|-----------|-------------|
| 控制方式 | 预编程脚本 | AI智能决策 |
| 适应性 | 页面变化需重写 | 自动适应 |
| Token消耗 | 较低但需调试 | 智能精简 |
| 复杂交互 | 需精确选择器 | 自然语言描述 |
| 维护成本 | 高 | 低 |

## ⚠️ 资源清理原则(强制)

**所有涉及浏览器的 cron 任务完成后,必须自动关闭 Chrome 进程!**

```python
import asyncio
from browser_use import Agent

async def main():
    agent = Agent(task="...", llm=llm)
    result = await agent.run()

    # ⚠️ 任务结束后必须显式关闭浏览器
    if hasattr(agent, 'browser') and agent.browser:
        await agent.browser.close()

    # ⚠️ 推荐在脚本结束时强制清理残留进程
    import subprocess
    subprocess.run(['pkill', '-f', 'chrome'], capture_output=True)

    return result
```

**原因**: 避免内存泄漏和资源占用,防止 Gateway CPU 100% 过载

## 安装状态

✅ 已安装:
- browser-use 0.11.11
- browser-use-sdk 2.0.15

## 快速开始

### 基本用法

```python
import asyncio
from browser_use import Agent
from langchain_openai import ChatOpenAI

async def main():
    agent = Agent(
        task="打开 polymarket.com,查看 Fed 利率市场",
        llm=ChatOpenAI(model="gpt-4o"),
    )
    result = await agent.run()
    print(result)

asyncio.run(main())
```

### 使用自定义 LLM(推荐配置)

**⚠️ 重要**:your-provider API 是 **Anthropic 格式**,不是 OpenAI 格式!必须使用 `ChatAnthropic`。

```python
from browser_use.llm.anthropic.chat import ChatAnthropic

# your-provider API(Anthropic 兼容)✅ 推荐
llm = ChatAnthropic(
    model="claude-sonnet-4-6",
    base_url="https://your-anthropic-proxy.example.com",  # 注意:不加 /v1
    api_key="your-api-key",  # 或从 pass show api/your-provider 获取
)

agent = Agent(
    task="你的任务",
    llm=llm,
)
```

```python
# ❌ 错误用法:不要用 ChatOpenAI + your-provider
# from browser_use.llm.openai.chat import ChatOpenAI  # 这个不行!your-provider 不支持 OpenAI 格式
```

```python
# 如果使用 OpenAI 兼容 API(如 Provider-B),用 ChatOpenAI:
from browser_use.llm.openai.chat import ChatOpenAI
llm = ChatOpenAI(
    model="gpt-4o",
    base_url="https://ai.9w7.cn/v1",
    api_key="your-api-key",
)
```

### 使用 Chrome 浏览器

```python
from browser_use import Agent, BrowserProfile, BrowserSession

# 配置使用 Chrome
profile = BrowserProfile(
    executable_path="/usr/bin/google-chrome-stable",
    headless=True,
    disable_security=True,
)
session = BrowserSession(browser_profile=profile)

agent = Agent(
    task="任务描述",
    llm=llm,
    browser_session=session,
)
```

### 保存/加载登录态

```python
# 保存登录态
await browser_context.save_storage_state(path="polymarket_auth.json")

# 加载登录态
context = BrowserContextConfig(
    storage_state="polymarket_auth.json"
)
```

## 常用配置

### 最小化 Token 消耗

```python
agent = Agent(
    task="任务",
    llm=llm,
    use_vision=False,  # 禁用视觉,减少token
    max_actions_per_step=3,  # 限制每步操作数
    message_compaction=True,  # 消息压缩
)
```

### 调试模式

```python
agent = Agent(
    task="任务",
    llm=llm,
    headless=False,  # 显示浏览器
    slow_mo=1000,  # 慢放,每步延迟1秒
    save_conversation_path="debug_log/",  # 保存日志
)
```

### 提取结构化数据

```python
from pydantic import BaseModel

class MarketData(BaseModel):
    question: str
    yes_price: float
    no_price: float

agent = Agent(
    task="获取 Polymarket Fed 利率市场数据",
    llm=llm,
    output_model_schema=MarketData,
)
result = await agent.run()
# result 将是 MarketData 类型
```

## Polymarket 集成

### 查看市场

```python
agent = Agent(
    task="""
    1. 打开 https://polymarket.com/event/fed-decision-in-march-885
    2. 提取以下信息:
       - 市场问题
       - Yes 价格
       - No 价格
       - 交易量
    3. 返回 JSON 格式数据
    """,
    llm=llm,
)
```

### 执行交易

```python
agent = Agent(
    task="""
    1. 打开 Polymarket
    2. 连接钱包(如果需要)
    3. 导航到 Fed 利率市场
    4. 买入 $0.60 的 No(价格 ≥ 0.85)
    5. 确认交易
    """,
    llm=llm,
    sensitive_data={
        "wallet_address": "0x...",
    }
)
```

## 最佳实践

### 1. 任务描述要清晰

```python
# 好 ✅
task="打开 polymarket.com,找到 Fed 利率市场,提取 Yes/No 价格"

# 差 ❌
task="帮我看看那个市场"
```

### 2. 使用结构化输出

```python
from pydantic import BaseModel

class TradingResult(BaseModel):
    success: bool
    market: str
    action: str  # "buy_yes", "buy_no"
    amount: float
    price: float
    tx_hash: str | None

agent = Agent(
    task="执行交易...",
    output_model_schema=TradingResult,
)
```

### 3. 错误处理

```python
try:
    result = await agent.run()
except Exception as e:
    print(f"任务失败: {e}")
    # 可以使用 browser tool 作为后备
```

### 4. 复用登录态

```python
# 第一次登录后保存
# 后续直接加载,避免重复登录

browser_context = BrowserContextConfig(
    storage_state="~/.playwright-data/polymarket/auth.json"
)
```

## Token 消耗优化

### 对比(相同任务)

| 工具 | 平均 Token | 原因 |
|------|-----------|------|
| browser tool | ~5000-10000 | 每次快照全页面 |
| Playwright | ~1000-2000 | 需多次调试 |
| browser-use | ~2000-4000 | AI精简决策 |

### 优化技巧

1. **禁用视觉**:`use_vision=False`
2. **限制历史**:`max_history_items=10`
3. **压缩消息**:`message_compaction=True`
4. **减少步骤**:`max_actions_per_step=3`
5. **使用 Flash 模式**:`flash_mode=True`(快速模式)

## 完整示例

```python
import asyncio
from browser_use import Agent
from langchain_openai import ChatOpenAI
from pydantic import BaseModel
import os

class MarketInfo(BaseModel):
    question: str
    yes_price: float
    no_price: float
    volume: str

async def check_polymarket():
    # 使用本地 LLM API
    llm = ChatOpenAI(
        model="claude-3-5-sonnet-20241022",
        base_url="https://your-anthropic-proxy.example.com",
        api_key=os.environ.get("XSC_API_KEY"),
    )
    
    agent = Agent(
        task="""
        访问 Polymarket Fed 利率市场:
        https://polymarket.com/event/fed-decision-in-march-885
        
        提取并返回:
        - 市场问题
        - Yes 价格(0-1)
        - No 价格(0-1)
        - 24h 交易量
        """,
        llm=llm,
        output_model_schema=MarketInfo,
        use_vision=False,
        max_actions_per_step=5,
    )
    
    result = await agent.run()
    return result

if __name__ == "__main__":
    asyncio.run(check_polymarket())
```

## 资源

- 官方文档: https://docs.browser-use.com
- GitHub: https://github.com/browser-use/browser-use
- 示例: `~/clawd/skills/browser-use/examples/`

## 快速命令

```bash
# 安装(已完成)
pip install browser-use

# 运行脚本
python3 script.py

# 测试
python3 -c "from browser_use import Agent; print('✅ OK')"
```

---

**记住**: browser-use 让浏览器操作更智能,省去调试选择器的痛苦!🚀

More Testing skills

← All Testing skills

Check your AI visibility

One URL in, a 0–100 score and the exact fixes out.

RUN THE CHECK

Browse all the tools

15 tools across six categories
13 of them never send your data anywhere

Free · No signup · No trial clock

SEE THE DIRECTORY