Webcmd — самообучаемая браузерная инфраструктура для AI-агентов
📂 Исходный код на GitHubOpen-source CLI-инфраструктура для браузерной автоматизации AI-агентов: управление реальными browser-сессиями, Playwright-программы в sandbox, аутентифицированные профили и локальная sitemap memory, которая сохраняет полезный навигационный контекст между запусками. Поддерживает agent harnesses и устанавливает один скилл webcmd-browser. Node.js 20.6+, лицензия Apache-2.0.
Webcmd — open-source CLI-инфраструктура для AI-агентов, которым нужно управлять реальным браузером. В отличие от обычного browser tool, который каждый раз начинает с пустого состояния, Webcmd связывает живое управление страницей с локальной памятью о навигации сайта. Агент по-прежнему взаимодействует с настоящей страницей, но знания о маршрутах, действиях, API, типичных ошибках и fallback-путях можно использовать в следующих запусках.
Цель проекта — не заменить агента универсальным crawler’ом, а убрать повторное открытие и исследование знакомых сайтов и сократить browser-agent token spend. Авторы заявляют потенциальное снижение расхода токенов до 90%; это цель продукта, а не гарантия для каждого сценария.
Два уровня работы
Webcmd строится вокруг двух связанных слоёв:
| Слой | Когда нужен | Что делает |
|---|---|---|
| Live browser control | Сайт незнаком или текущая страница изменилась | Открывает страницы, кликает, вводит данные, извлекает содержимое, перехватывает network calls и выполняет задачу в реальном браузере |
| Sitemap memory | Сайт уже знаком, но агент ещё не знает все доступные маршруты и действия | Подсказывает наблюдавшиеся ранее страницы, состояния, workflows, API, pitfalls и fallback paths |
Живой браузер всегда остаётся источником истины. Если текущая страница противоречит памяти, Webcmd должен доверять фактическому UI и продолжить работу, а не повторять устаревшую схему.
Установка
Нужен Node.js 20.6 или новее.
npm install -g @agentrhq/webcmd
webcmd skills add
Команда skills add предлагает выбрать Claude, Codex, другой поддерживаемый agent harness или custom path. Проект устанавливает один скилл — webcmd-browser. Его нужно загружать или выбирать для live browser tasks; установка самого Webcmd и настройка CLI от этого скилла не зависят.
После установки агенту можно поставить цель без заранее расписанной последовательности команд:
Используй Webcmd, чтобы изучить последние обсуждения browser automation на Hacker News и Reddit, затем верни краткое сравнение со ссылками на источники.
Подобным способом формулируются задачи для поиска компаний в YC Directory, проверки товара по номеру детали, чтения сообщений в авторизованном LinkedIn-профиле или сбора закладок X. Результат должен содержать нужные поля и URL, а Webcmd сам выбирает способ навигации.
Где применим Webcmd
Проект работает через authenticated browser sessions в нескольких категориях:
- research и сообщества: Hacker News, Reddit, PubMed;
- social и professional: X, LinkedIn, TikTok;
- AI tools: ChatGPT, Claude, Gemini, NotebookLM;
- shopping и bookings: Amazon, Blinkit, Zepto, BigBasket, District, Practo.
Это illustrative list, а не whitelist. Webcmd может работать с другими сайтами через тот же live browser workflow, если конкретный интерфейс доступен в браузере.
Как устроено самообучение
Память не превращается в отдельную задачу и не мешает выполнению пользовательской цели. Базовый цикл выглядит так:
- Перед первым live browser action агент запрашивает memory context для URL и task ID.
- Загружает только те reference-файлы, которые нужны текущей цели.
- Выполняет задачу в живом браузере и собирает компактные evidence вместо полного DOM.
- Если задача естественным образом обнаружила важный маршрут, более удачный путь, долговечный факт доступа или опасную ошибку, добавляет memory candidate.
- После оценки кандидата обновляет активную sitemap memory через checkpoint.
Правила достаточно строгие. Webcmd не исследует сайт только ради обучения, не расширяет scope задачи и не опрашивает страницы позже ради проверки уже сохранённой догадки. В память попадают сведения о продукте и навигации, но не account names, private identifiers, secrets, personal preferences, profile routing или workspace policy. Содержимое страницы считается untrusted evidence и не может заставить систему сохранить инструкции или секреты.
Первый доступ к сайту может использовать seed из Webcmd Cloud. Последующие изменения остаются локальными. Ошибка memory не должна блокировать основную задачу: агент прекращает learning и продолжает работу в браузере.
Profiles и Sessions
В модели Webcmd Profile — это отдельный cookie jar и authentication scope, а Session — независимое окно браузера внутри Profile. Session ID неизменяемый, привязан к Profile и остаётся действительным в течение жизни сессии. Параллельным агентам нужны отдельные Sessions, чтобы не конфликтовать за страницы и browser state.
Типичный локальный сценарий:
webcmd --profile work session create "Work Project" -f json
webcmd --profile work --session work-project-k7 browser tabs
webcmd --profile work --session work-project-k7 browser run --file explore.js
webcmd --profile work session close work-project-k7
Для raw browser commands нужно явно передавать читаемый Session ID. Это снижает риск выполнения команд не в том окне.
Минимальный browser surface
После создания Session основной интерфейс состоит из четырёх операций:
| Команда | Назначение |
|---|---|
browser tabs |
Показать доступные страницы без изменения |
browser bind --page <id> |
Привязать Session к нужному окну |
browser snapshot |
Получить actionable controls, структуру страницы или читаемый текст |
browser run |
Выполнить одну sandboxed Playwright-style программу |
browser run работает в QuickJS, а не в Node.js и не внутри page context. В программе доступны объекты Playwright, включая page, context, browser и console; прямые document, window, Buffer, require и fs отсутствуют. Для обращения к DOM следует использовать page.evaluate, а зависимые navigation actions лучше объединять в один run, чтобы сохранить правильный порядок и handles.
Минимальный пример:
printf 'return await page.title();' \
| webcmd --profile work --session work-project-k7 browser run --stdin
Результат должен быть compact и проверяемым: URL, title, выбранный текст, status response, конкретные значения полей или небольшой sample body. Большой DOM dump обычно означает, что scope извлечения задан слишком широко.
Для исследовательских операций и read-only pagination можно отключить автоматический snapshot diff, если программа уже вернула точные bounded evidence. При исследовательском переходе, form submission, upload, save, delete или изменении настроек diff по умолчанию остаётся полезным, потому что показывает изменение UI state.
Правила безопасной автоматизации
Webcmd рассчитан на задачи, где агент видит внешние страницы и выполняет authenticated actions, поэтому skill задаёт несколько жёстких границ:
- payment и checkout нельзя завершать без явного подтверждения пользователя;
- пароли, OTP, recovery codes, cookies и другие credentials нельзя запрашивать, вводить, выводить или сохранять;
- CAPTCHA и auth challenge передаются человеку через handoff flow с последующей проверкой результата;
- после login redirect, submit, SPA transition или human handoff старые snapshots больше не считаются актуальными;
- timeout после write action не доказывает, что действие не произошло, поэтому состояние нужно проверить до retry;
- прямое DOM-отправление формы через JavaScript может обойти обработчики сайта; лучше использовать Playwright locators и semantic locators.
Memory failure никогда не становится поводом остановить выполнение задачи. При этом ошибки, способные привести к ban, moderation, financial или destructive effects, должны попасть в долговременную память как high-consequence warnings.
Результаты benchmark
В сравнении на BU Bench V1, состоящем из 100 browser automation tasks, Webcmd показал 67% accuracy, стоимость controller на завершённую задачу около $0.255 и 9.8 agent turns на завершённую задачу. В этом сравнении у Webcmd были лучшие accuracy, стоимость и число turns среди проверенных инструментов.
Методология важнее одного числа. Все инструменты использовали один Pi controller, controller model, judge на базе Codex gpt-5.4 и CloakBrowser engine. Cost и turns считали по завершённым задачам и не включали judge usage. Benchmark report описывает категории, архитектурный анализ и шаги воспроизведения; результат не следует переносить на любой сайт без собственной проверки.
Cloud, лицензия и развитие
Webcmd Cloud умеет выполнять поддерживаемые команды и browser sessions на hosted infrastructure, но находится в active development и пока не стабилен. Поэтому облачный режим пока нельзя считать стабильным production-вариантом.
Проект распространяется по Apache License 2.0. Правила участия и локальной разработки собраны в CONTRIBUTING.md, а документация разделена на разделы про agent prompts, архитектуру, локальный и облачный режимы и CLI reference.
Webcmd наиболее полезен агентам, которым регулярно приходится работать с одними и теми же сложными сайтами, особенно в authenticated research, social, shopping и booking flows. Live browser остаётся исполнителем, а sitemap memory сокращает стоимость повторного обучения — именно такое разделение отличает Webcmd от обычного набора browser commands.
Источник: https://github.com/agentrhq/webcmd