ego (lite) is just a browser, ego is your personal agent across devices.
Join waitlist
Русский

Snapshot

Как агент читает страницу как структурированный снимок и как работают ссылки @N.

llms.txt

Snapshot — это способ, которым агент читает веб-страницу. Он превращает текущую страницу в компактный структурированный текст и присваивает временные номера (@1, @2, …) интерактивным элементам — кнопкам, полям, ссылкам. Дальше агент действует по этому снимку, а не по сырому HTML и не по экранным координатам.

Что это решает

Для человека веб-страница — это визуальный интерфейс. Для агента — десятки тысяч токенов HTML, скриптов, стилей и динамического состояния. Если отдать это LLM как есть, получаем два привычных расхода:

  • Высокий расход токенов. Обычная админская страница спокойно весит 30k токенов, и её нужно перечитывать перед каждым действием.
  • Шум вместо сути. Большая часть DOM (стили, скрипты, скрытые узлы) к решению отношения не имеет и только сбивает.

Snapshot строится по accessibility tree браузера — семантическому представлению страницы, которое браузер ведёт для скринридеров — и сжимает страницу до нескольких сотен токенов:

  • Заголовок страницы и текущий URL.
  • Видимый текст и основная структура.
  • Кликабельные, заполняемые и выбираемые элементы с их ролями и именами.
  • Временный @N для каждого интерактивного элемента.

Этого хватает, чтобы агент решил, какую кнопку нажать и какое поле заполнить — без сырого HTML и без координат.

Как работают ссылки @N

Каждому интерактивному элементу в снимке выдаётся временный номер:

@1 [input]  "Поиск"
@2 [button] "Отправить"
@3 [link]   "Следующая страница"

Агент действует по этим номерам, например await click('@2').

@N действителен только для текущего снимка. После изменения страницы (переход, обновление, диалог, отправка формы, переключение вкладки, динамический ререндер) старые номера могут указывать в никуда. Надёжно — после каждого изменения брать новый snapshot, а не запоминать @N надолго.

Если на элемент нужно ссылаться стабильно через много шагов, используйте селектор loc=... из вывода snapshot или напишите CSS-селектор напрямую. См. ego-browser.

Когда вы заметите snapshot

В большинстве случаев вы snapshot не трогаете — агент читает его сам. Вы можете встретиться с ним в двух ситуациях:

  1. Агент говорит «новый snapshot» или «снимок страницы» — значит он заметил изменение и перечитывает текущее состояние.
  2. В результате задачи приведён фрагмент snapshot как подтверждение.

Описание задачи для агента

Snapshot помогает агенту видеть страницу; границы задачи задаёте вы. Хорошее описание содержит:

  • Целевую страницу или сайт.
  • Что нужно прочитать, заполнить, кликнуть, скачать.
  • Чего делать нельзя (удалять, публиковать, оплачивать, отправлять письма и т. п.).
  • Нужно ли останавливаться на капче, оплате, авторизации.
  • В каком виде ждёте результат (таблица, сводка, скриншот, локальный путь к файлу).

Примеры:

Открой мои GitHub Notifications, выбери PR, ждущие моего ревью, и выведи их: репозиторий, заголовок, ссылка.
Не архивировать и не отмечать прочитанным.
Открой страницу заказов в админке, отфильтруй вчерашние и скачай CSV.
Если упрёшься в логин или подтверждение экспорта — останавливайся, передавай мне и пиши, где лежит файл.

Проверить результат

Когда задача завершена, проверяйте по этим признакам:

  • Сказал ли агент, какие страницы открывал и какие ключевые действия совершил.
  • Есть ли в ответе то, что можно сверить (заголовки, идентификаторы, ссылки, суммы, даты).
  • Для скачивания указан ли локальный путь к файлу.
  • Для изменений или отправки — остановился ли он перед последним подтверждением.
  • Открыты ли соответствующие страницы в Space, чтобы туда зайти и посмотреть.

Если что-то выглядит неверно, попросите агента не «додумывать» дальше, а заново снять snapshot текущей страницы.

Частые вопросы

Почему агент говорит, что ref недействителен?

После прошлого snapshot страница изменилась. Попросите взять новый snapshot.

Snapshot читает всё содержимое?

Не всегда. Контент вне экрана, текст в картинках, сложные canvas, ограниченные cross-origin iframe могут попасть в snapshot не полностью. В таких случаях агенту имеет смысл сочетать snapshot со скриншотом, извлечением текста или ручной проверкой.

Меняет ли snapshot что-то на странице?

Нет. Snapshot только читает структуру. Реально меняют состояние последующие клики, заполнения, отправки, загрузки, удаления.

Мне нужно запоминать @1, @2?

Нет. Воспринимайте их как «временные номера для текущей страницы». Их использует агент; ваше дело — ставить цель и границы.