> · · 6 мин

Plasmate — браузерный движок на Rust, который режет токены AI-агентов на 94%

Plasmate — браузерный движок на Rust, который режет токены AI-агентов на 94%

Когда Claude Code или Cursor лезут в веб через Playwright или Puppeteer, происходит абсурдная штука. Chrome парсит страницу, рендерит DOM на 589 KB, и весь этот суп из <div class="container__inner">, рекламных скриптов, GDPR-баннеров и трекинговых пикселей улетает в LLM. Модель тратит 22 000 токенов, чтобы понять, что на главной Hacker News лежит 30 ссылок.

David Hurley устал смотреть, как его агенты задыхаются от HTML-мусора, и сделал Plasmate. Это браузер, который не отдаёт DOM. Он компилирует страницу в Semantic Object Model.

TL;DR: Plasmate — headless-браузер на Rust под Apache-2.0, который превращает HTML в структурированный JSON для LLM. На 1000 страниц в день уходит $5.69 токенов вместо $99 у Chrome. Подключается к Claude Code, Cursor, Windsurf через MCP в одну строку. v0.5, 21 звезда, проект одного человека.

Что такое Semantic Object Model

DOM показывает каждый тег. SOM показывает, что на странице важно агенту: что можно кликнуть, что можно ввести, что там написано. Всё остальное стрипается ещё на этапе компиляции.

Вот примерно как выглядит SOM-вывод плазматовского fetch_page:

{
  "version": "0.1",
  "url": "https://example.com",
  "title": "Page Title",
  "meta": {
    "html_bytes": 589546,
    "som_bytes": 56625,
    "compression_ratio": 10.4
  },
  "regions": [
    {
      "id": "r_navigation",
      "role": "Navigation",
      "elements": [
        { "id": "[3]", "role": "link", "name": "About", "href": "/about" }
      ]
    },
    {
      "id": "r_main",
      "role": "Main",
      "elements": [
        { "id": "[12]", "role": "heading", "text": "Welcome" },
        { "id": "[15]", "role": "input", "type": "email", "name": "Email" }
      ]
    }
  ]
}

Кликабельные элементы пронумерованы. Агент не пишет CSS-селектор, он говорит click [15]. Никаких [backend_node_id]<input> соплей — агент видит структуру страницы вместо вёрстки.

Структурированные данные (JSON-LD, OpenGraph, Twitter Cards) Plasmate тоже вытаскивает в отдельный блок. То, что ты раньше парсил руками через regexp.

Цифры, которые трудно игнорировать

По бенчмарку Plasmate Labs на 98 реальных сайтах:

  • 4-5 мс на страницу против 252 мс у Chrome headless и 23 мс у Lightpanda
  • 28 MB памяти на 100 параллельных страниц против 20 GB у Chrome
  • 94% экономии на токенах в среднем, медиана сжатия 9×, на тяжёлых SPA до 1544×
  • $5.69 vs $99 за обработку 1000 страниц в день при ставках Claude Sonnet

Цифры от авторов, но методология опубликована и совпадает с протоколом Lightpanda — то есть проверяется одной командой ./run-benchmark.sh. Покрытие парсера тоже не приукрашено: 94 из 98 топовых сайтов работают, остальные четыре сломались на JS-тяжёлых SPA с кастомным рендерингом.

Бинарник плазматы — 45.8 MB. Chrome в комплекте с Puppeteer-кешем — 300-500 MB.

Установка и MCP за 30 секунд

Plasmate ставится из четырёх каналов одновременно:

# pip, cargo, npm или brew — на выбор
pip install plasmate
cargo install plasmate
npm install -g plasmate
brew tap plasmate-labs/plasmate && brew install plasmate

# Проверка
plasmate fetch https://example.com

Подключение к Claude Code в одну строку:

claude mcp add plasmate -- npx plasmate-mcp

После этого Claude получает 16 MCP-инструментов: fetch_page, extract_text, extract_links, open_page, navigate_to, click, type_text, select_option, scroll, toggle, clear, evaluate, close_page, get_cookies, set_cookies, clear_cookies. Хватает для агента, который сам логинится, листает выдачу и вытаскивает данные.

Для Cursor и Windsurf конфиг тот же:

{
  "mcpServers": {
    "plasmate": {
      "command": "npx",
      "args": ["-y", "plasmate-mcp"]
    }
  }
}

Совет из доков: на тяжёлых страницах добавляй selector="main", чтобы плазмата выкинула шапку и подвал ещё до того, как LLM их увидит.

Подводные камни

Технология сырая, и Hurley это не скрывает.

Скриншотов нет. Совсем. Если твой агент решает CAPTCHA по картинке, парсит визуальный layout или работает с canvas-элементами, Plasmate не подходит. Ставь Playwright MCP. SOM описывает только семантику, не пиксели.

Никаких кликов по координатам. Только по SOM-индексу элемента. Это удобно для агента, но если у тебя есть legacy-код с page.click({x: 540, y: 320}), переписывать всё.

Загрузка файлов не поддерживается. Action upload_file отсутствует. Для сценариев типа «загрузить PDF в форму» снова придётся брать Playwright.

Одна вкладка на сессию. Каждый PlasmateBrowser держит ровно один контекст. Multi-tab воркфлоу нужно собирать через несколько инстансов вручную.

Bus factor = 1. Plasmate Labs пока что состоит из одного человека (David Hurley, dbhurley.com/plasmate). 25 тысяч строк Rust, 230 тестов, 98.9% покрытия выглядят солидно. Но если автор завтра выгорит, проект встанет. На главном репо 21 звезда, на plasmate-mcp ноль на момент проверки. Ставить Plasmate в продакшн на критичный пайплайн прямо сейчас — авантюра.

Pre-1.0. Текущая версия v0.5.1 от 5 апреля. SOM Spec помечен как v1.0, AWP-протокол ещё в драфте. До GA можно ловить breaking changes между минорными релизами.

Альтернативы

  • Lightpanda — самый близкий конкурент. Rust, headless, выдаёт сырой HTML. На 5× медленнее Plasmate (23 мс против 4-5 мс), нулевая экономия токенов. Главный косяк — лицензия AGPL-3.0: используешь в продукте, и весь твой стек обязан стать open source. Уже писал про него.
  • Playwright MCP — Microsoft, MIT, использует настоящий Chrome. Зрелый, поддерживает скриншоты и file uploads, всё то, чего Plasmate не умеет. Платишь за это 252 мс на страницу и 20 GB памяти на 100 вкладок.
  • Browser Use — Python-фреймворк поверх Playwright. Удобный API для агентов, но скорость и токены ровно как у Chrome. Кстати, у Plasmate есть готовая интеграция с Browser Use, которая просто заменяет Playwright-бэкенд на SOM.
  • Browserbase — managed cloud-сервис от $49 в месяц. Сильный анти-бот стек, но это другой жанр: облако вместо локального бинарника.

Вердикт

Если у тебя AI-агент жуёт веб-страницы пачками и счёт за токены пугает — ставь Plasmate в тестовую среду уже сегодня. 94% экономии переводит проект из категории «не масштабируется» в «можем себе позволить».

Если агент рассчитывает на скриншоты, кликает по координатам или грузит файлы, Plasmate не для тебя. Оставайся на Playwright MCP.

Для продакшн-критичного workflow дождись v1.0 или хотя бы появления второго мейнтейнера. Технически проект сильный, но bus factor единицы остаётся главным риском, и 230 тестов это не лечат.

Как попробовать

  1. Поставь движок: pip install plasmate (или cargo/npm/brew)
  2. Подключи MCP к Claude Code: claude mcp add plasmate -- npx plasmate-mcp
  3. В чате попроси: «Используй plasmate_fetch и собери три топовые истории с news.ycombinator.com со ссылками»
  4. Сравни число потраченных токенов с тем же запросом через Playwright MCP — разница покажется в /cost
  5. Для Python-агента: гайд по research-агенту в 50 строк — реальный кейс, не марковский псевдокод

MCP Registry с автоустановкой, бенчмарки с воспроизводимыми скриптами, W3C Community Group по агентским браузерам, куда Hurley тащит SOM как открытый стандарт.

$ ls ./related/

Похожие статьи

kimi-k3-redis-zero-days.md
Иди проверь версию Redis: майский патч не спасает, PoC уже в открытом гите. А дыры нашёл рой агентов на Kimi K3
> · 8 мин

Иди проверь версию Redis: майский патч не спасает, PoC уже в открытом гите. А дыры нашёл рой агентов на Kimi K3

23 июля Redis выпустил семь релизов безопасности после публикации рабочих RCE-цепочек против стоковых 6.2.22, 7.4.9, 8.6.4 и 8.8.0. Майские «безопасные» версии пробиты, CVE на новые баги нет, поэтому сканеры молчат. Что проверить прямо сейчас и почему релиз-ноты 8.6.4 вводят в заблуждение.

ai llm security redis
claude-opus-5-real-price.md
Claude Opus 5: «вдвое дешевле» — это не про твой счёт. Цена та же, что у Opus 4.8, а изменилась цензура
> · 8 мин

Claude Opus 5: «вдвое дешевле» — это не про твой счёт. Цена та же, что у Opus 4.8, а изменилась цензура

Anthropic выпустила Claude Opus 5 24 июля: 43,3% на Frontier-Bench против 33,7% у Fable 5. Но цена осталась ровно как у Opus 4.8 — $5/$25. Разбираем, где реальная экономия, почему кибер-классификаторы теперь срабатывают на 85% реже и что не так со сноской под главным бенчмарком.

ai agents llm claude
claude-code-fresh-info.md
Claude советует код, которого уже нет. Как научить его искать самое свежее
> · 11 мин

Claude советует код, которого уже нет. Как научить его искать самое свежее

Claude по умолчанию отвечает из обучающих данных с отсечкой (у Fable 5 это январь 2026) и советует снятые API и несуществующие версии. Собрал рабочие приёмы, чтобы он лез в актуальные доки и веб: встроенный поиск с датовой привязкой, MCP context7, правила в CLAUDE.md, своя команда /latest, субагенты и хуки. Плюс честно про то, где это окупается, а где только жжёт токены.

ai claude-code mcp productivity
subscribe.sh

$ cat /dev/blog/updates

> Свежие заметки о программировании,

> DevOps и AI — прямо в мессенджер

./subscribe