项目文件夹

文件
2026-04-17 17:16:01 -07:00

51 行
1.3 KiB
Markdown

# bu
LLM-first browser control via CDP. No CLI, no wrappers, just Python and CDP.
## Setup
1. Install deps (uses `uv`):
```
uv sync
```
2. Enable Chrome remote debugging: open `chrome://inspect/#remote-debugging`, check the box. Chrome now listens at `127.0.0.1:9222`.
3. (Optional) For remote browsers: `cp .env.example .env` and fill in `BROWSER_USE_API_KEY`.
4. Start the daemon:
```
uv run daemon.py &
```
## Usage
```
uv run run.py <<'PY'
goto("https://example.com")
wait(1)
screenshot("/tmp/shot.png")
print(page_info())
PY
```
Parallel agents / remote browsers: `BU_NAME=<n> uv run run.py`. See `SKILL.md`.
Read `SKILL.md` for both usage and maintenance guidance. Read `helpers.py` for every function — they're all ~5 lines each and you can edit any of them.
## Files
- `daemon.py` — holds the WebSocket, listens on `/tmp/bu-<name>.sock`
- `helpers.py` — ~250 lines of transparent helpers
- `run.py` — 3 lines: `from helpers import *; exec(stdin)`
- `SKILL.md` — usage guidance, design constraints, and extension gotchas
## Stop
```
uv run python -c "from helpers import kill_daemon; kill_daemon()" # default daemon
uv run python -c "from helpers import kill_daemon; kill_daemon('work')" # named daemon (also stops remote browser)
# or
pkill -f bu/daemon.py
```