RubinEagle

Автономный AI-агент · настоящий Chromium · ноль селекторов

EagleEye

EagleEye рулит настоящим Chromium через Playwright. Читает страницы как accessibility-дерево, думает LLM-ом и действует через крошечный набор инструментов — никаких скриптов под сайт, никаких хрупких XPath, никаких ручных сценариев.

Playwright + a11y-деревоClaude · GPT · OpenAI-совместимыеDocker + noVNC

Что внутри

Маленький ReAct-цикл, настоящий браузер и аккуратная обвязка.

Фазы 1–5 уже в проде: скелет, полный набор инструментов, компрессия контекста, scratchpad, рефлексия после действий, детектор повторов, Docker + noVNC + постоянный профиль + мастер логина, Web UI со встроенным noVNC.

  • 01

    Настоящий Chromium через Playwright

    Агент видит страницу как aria_snapshot(mode="ai") — YAML-дерево доступности с метками [ref=eN] — и действует через click / type, которые разрешаются селектором aria-ref=. Никаких CSS-селекторов и кода под сайт.

  • 02

    LLM-ядро без привязки к провайдеру

    Подключайте Anthropic Claude (по умолчанию claude-sonnet-4-6) или любой OpenAI-совместимый эндпоинт — OpenAI, OpenRouter, DeepSeek, локальный Ollama. Prompt caching в адаптере Anthropic из коробки.

  • 03

    Docker + noVNC, профиль живёт

    docker compose up -d --build поднимает Chromium + Xvfb + x11vnc + noVNC + Web UI. Профиль браузера лежит на именованном томе — логинитесь один раз, сессия переживает рестарты.

  • 04

    Контекст, который не взрывается

    Старые observe()-снепшоты автоматически сжимаются в одну строку; scratchpad переживает компрессию; рефлексия отмечает «клик ничего не сделал»; детектор повторов срабатывает после трёх одинаковых вызовов инструмента.

ReAct-цикл

Observe → think → act → reflect. Пока не вызовется done().

Каждый шаг агент получает свежий снепшот страницы, выбирает инструмент, выполняет его, читает телеметрию и либо решает следующий ход, либо завершает задачу. Бюджеты: MAX_STEPS=60, MAX_COST_USD=2.0 — мягкий abort при превышении.

  1. 01 · observe1

    Снимаем страницу

    Playwright aria_snapshot(mode="ai") возвращает YAML-дерево доступности с [ref=eN]. Старые снепшоты в истории сжимаются в одну строку — токены платим только за свежий.

  2. 02 · think2

    Планируем LLM-ом

    В Claude или GPT уходит системный промпт + описания инструментов + история + scratchpad. Модель отдаёт блоки tool_usenavigate, click, type, extract, ask_user, done, …

  3. 03 · act3

    Запускаем инструменты

    Обработчики резолвят refs через aria-ref=, выполняют действие, фиксируют URL+title+длину body до и после и кидают события в шину — Web UI рисует их как живой timeline.

  4. 04 · reflect4

    Ловим пустые действия

    Если меняющее действие не задело ни URL, ни title, ни длину body — в результат подмешивается [reflection]. После трёх одинаковых вызовов (tool, args) подряд системная заметка просит сменить тактику.

Запустить у себя

Поднимается двумя командами.

Рекомендуемый путь — Docker: Chromium + Xvfb + x11vnc + noVNC + Web UI одним compose-файлом. Web UI на http://localhost:8000, голый noVNC на http://localhost:6080.

Quick startzsh
              
$ cp .env.example .env
# заполните LLM_PROVIDER + API-ключ
$ docker compose up -d --build
# открыть http://localhost:8000
Открыть README

Учебный проект · Playwright + LLM · Anthropic · OpenAI · OpenRouter · DeepSeek · Ollama

RubinEagle

Лаборатория громких идей в тихом репозитории.

hello@rubineagle.ru · абсолютно реально (нет)

© 2026 RubinEagle. Топливо: , кривые Безье и «ещё один фикс» в два ночи.