01Зачем это нужно
AI-агенты упираются в стену, когда нужно протестировать UI или провзаимодействовать с веб-приложением. Playwright тяжёл, требует Node.js рантайма и драйверов. Selenium — наследие. Готовые SaaS — стоят денег и ограничены.
gsd-browser — single Rust binary. Без рантайма, без драйверов, без зависимостей. 63 команды покрывают всю поверхность браузер-автоматизации. Запустил, использовал, забыл.
Скорость Rust
Native binary — без overhead JavaScript-рантайма. Daemon-архитектура с persistent CDP-соединением.
Single binary
Один исполняемый файл. Не нужен Node.js, не нужен браузер-драйвер. Скачал — запустил.
AI-agent native
JSON-output mode (--json), SKILL.md для discovery агентами, semantic actions через intents.
Deterministic refs
Команда snapshot присваивает версионные refs (@v1:e1) для стабильного взаимодействия с элементами.
Encrypted vault
Сохранение и replay логин-кредов безопасно через vault-save / vault-login.
Test generation
Записал действия — generate-test экспортирует как Playwright-тест.
02Установка
One-liner (macOS / Linux)
$ curl -fsSL https://raw.githubusercontent.com/gsd-build/gsd-browser/main/install.sh | bash Скачивает бинарник + Chromium автоматически. Работает в CI.
npm
$ npm install -g @gsd-build/gsd-browser Cargo (из исходников)
$ cargo install gsd-browser Pre-built бинарники
Скачать с GitHub Releases:
| Платформа | Бинарник |
|---|---|
| macOS (Apple Silicon) | gsd-browser-darwin-arm64 |
| macOS (Intel) | gsd-browser-darwin-x64 |
| Linux (ARM64) | gsd-browser-linux-arm64 |
| Linux (x64) | gsd-browser-linux-x64 |
03Быстрый старт
# Перейти на страницу $ gsd-browser navigate https://example.com
# Сделать скриншот $ gsd-browser screenshot --output page.png --format png
# Получить дерево accessibility $ gsd-browser accessibility-tree # Кликнуть на кнопку по CSS-селектору $ gsd-browser click "button.submit" # Извлечь структурированные данные $ gsd-browser extract --schema '{"title": {"_selector": "h1"}}' 0463 команды в 15 категориях
Полный набор для любых задач браузер-автоматизации. Каждая команда поддерживает --json для структурированного вывода.
05Ключевые отличия
06Конфигурация
5-слойный merge конфигов:
- Built-in defaults — разумные значения для всего
- User config —
~/.gsd-browser/config.toml - Project config —
./gsd-browser.tomlв корне проекта - Environment variables — префикс
GSD_BROWSER_* - CLI flags — высший приоритет, перебивают всё
Пример gsd-browser.toml
[browser]
path = "/usr/bin/chromium"
headless = true
[daemon]
port = 9222
host = "127.0.0.1"
[screenshot]
quality = 90
full_page = false
[settle]
timeout_ms = 500
poll_ms = 40
quiet_window_ms = 100 Через переменные окружения
$ export GSD_BROWSER_BROWSER_PATH=/usr/bin/chromium
$ export GSD_BROWSER_DAEMON_PORT=9333 07Архитектура
┌─────────────┐ IPC/HTTP ┌──────────┐ CDP ┌─────────┐
│ CLI (clap) │ ───────────────→ │ Daemon │ ────────────→ │ Chrome │
│ browser- │ ←─────────────── │ (tokio) │ ←──────────── │ (CDP) │
│ tools │ JSON response │ │ events │ │
└─────────────┘ └──────────┘ └─────────┘
│ │
│ --json flag │ manages
▼ ▼
Структурированный Browser lifecycle
JSON-вывод для агентов Изоляция сессий
Page/frame routing CLI парсит команды и делегирует daemon'у через локальный HTTP-канал. Daemon поддерживает persistent CDP-соединение с Chrome, управляет lifecycle браузера, маршрутизирует команды к нужной странице/фрейму. Daemon стартует автоматически при первом использовании и сохраняется между командами для быстрого выполнения.
08JSON-вывод
Каждая команда поддерживает --json для структурированного вывода:
$ gsd-browser navigate https://example.com --json # {"title":"Example Domain","url":"https://example.com/","status":"ok"} $ gsd-browser find --text "More information" --json # {"elements":[{"role":"link","name":"More information...","selector":"a"}]} 09Для AI-агентов
gsd-browser шипится с SKILL.md и AGENTS.md для автоматического discovery агентами. Агенты могут:
1. Прочитать SKILL.md
Полный command reference и workflow-паттерны для агента.
2. JSON-парсинг
Использовать --json output для структурированного парсинга данных.
3. Refs для стабильности
snapshot → click-ref / fill-ref для детерминистичного взаимодействия с элементами.
4. Intent resolution
find-best / act для предопределённых intent (8 встроенных) — без знания селекторов.
5. Async-надёжность
wait-for для надёжной работы с асинхронными состояниями страницы.
6. Интеграция с GSD
Работает в связке с get-shit-done и gsd-2 для тестирования UI-фаз.
10Глоссарий
@v1:e1. Команда snapshot присваивает их всем элементам страницы для стабильного последующего взаимодействия.find-best и act.mock-route перехватывает, block-urls блокирует, har-export сохраняет в HAR.vault-save сохраняет, vault-login делает replay для авторизации в новой сессии.