← К публикациям

SkillWeaver: как опыт работы с сайтом становится вызываемым навыком

Последовательность действий на сайте превращается в вызываемую программную функцию

Чтобы найти семинар в каталоге, агент может каждый раз заново разбираться с городом, датами, фильтрами и страницами выдачи. Другой вариант — сохранить уже освоенную последовательность как функцию и вызывать её с новыми параметрами. SkillWeaver исследует именно такой переход от опыта к программному действию.

Авторский пример От поиска семинара к повторному вызову Что должно произойти, чтобы процедура нашего условного каталога стала полезным навыком?
От поиска семинара к повторному вызову Практика на сайте → Функция с параметрами; Функция с параметрами → Испытание функции; Испытание функции → Функция с параметрами; Испытание функции → Библиотека навыков; Библиотека навыков → Выбор и входы; Новый запрос → Выбор и входы; Выбор и входы → Вызов функции; Вызов функции → Полнота результата. Практика насайтеФункция спараметрамиИспытаниефункцииБиблиотеканавыковНовый запросВыбор и входыВызов функцииПолнотарезультата
Вся схема
Связи и обратные переходы

Стрелки показывают, откуда берётся следующий шаг. Условия и ограничения разобраны в статье.

Основной источник — SkillWeaver: Web Agents can Self-Improve by Discovering and Honing Skills, Boyuan Zheng, Michael Y. Fatemi, Xiaolong Jin и соавторы, arXiv:2504.07079v1 от 9 апреля 2025 года. Здесь разбирается работа о веб-агентах — программах, которые выполняют задачи в браузере. История с каталогом и предложенные проверки придуманы для этого текста; эксперименты авторов самостоятельно не воспроизводились.

Какая память получается на выходе

Официальный проект описывает цикл: агент осматривает сайт, предлагает действия для практики, выполняет их и превращает успешный опыт в функции Python. Затем проверяет и исправляет функции. Накопленная библиотека расширяет набор действий агента без изменения весов модели — численных параметров, полученных при обучении.

Словом «интерфейс программирования приложений» (API) авторы здесь называют функцию с кодом Playwright, библиотеки управления браузером. Это определение дано в §2. Функция по-прежнему работает через страницы сайта. Её описание включает условия вызова и историю использования; при новой задаче агенту выбирают подходящие навыки (§2.2 и §3.3).

Для читателя это важная смена единицы памяти. Запись «сначала выстави фильтры» ещё надо преобразовать в действия. Вызов готовой функции запускает уже описанную последовательность. Поэтому качество сохранённой памяти теперь зависит и от рассуждения, и от поведения программы на конкретной странице.

Условный пример: найти семинары в Казани

Представим учебный портал с открытым каталогом. Нужно собрать семинары в Казани за ноябрь: название, дату и ссылку. Пользователь выбирает город, ставит диапазон дат, нажимает «Применить» и просматривает выдачу. Это наш вымышленный сайт, не площадка из исследования.

При первом освоении агент замечает, что смена города сбрасывает даты. Успешная последовательность поэтому выглядит так: сначала город, затем даты, потом применение фильтров. Сохранить только последний снимок экрана недостаточно: по нему не восстановить, почему важен порядок.

Мы могли бы описать навык найти_семинары(город, начало, конец). Название показывает назначение, параметры отделяют конкретную Казань и ноябрь от общей процедуры. Внутри остаётся взаимодействие с элементами сайта. Подпись к функции должна объяснять, какие значения она принимает и что возвращает.

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

Следующая таблица — предложенный мной договор о поведении навыка для этого примера. Она не воспроизводит внутренний формат SkillWeaver.

Вопрос Что фиксируем для условного каталога
Для чего предназначен навык Найти семинары заданного города за период
Что принимает Город и две даты; заранее определяем включение граничных дней
С какого состояния работает Открыт нужный сайт, каталог доступен, фильтры можно изменить
Что возвращает Название, дату и ссылку для каждого подходящего семинара
Как понимать пустой результат Подтверждённое отсутствие семинаров отличается от незагрузившейся выдачи
Что известно о проверке Какие периоды, города и варианты количества результатов уже проверены

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

Проверять навык отдельно от выбора навыка

В SkillWeaver исходную попытку оценивает модель по задаче, ходу действий и наблюдениям; затем функции тестируются и отлаживаются (§2.2–2.3, приложение A.5). Это полезные проверки, но конечное число попыток не устанавливает правильность для любых будущих входов.

В документации реализации отдельно описан флаг допуска функций, ещё не исполнявшихся без ошибки времени выполнения. Уже этот критерий стоит читать буквально: отсутствие программного исключения не удостоверяет полноту списка семинаров.

Для нашего каталога я разделил бы проверку на три части. Первая — функция правильно работает при известных параметрах. Вторая — агент выбирает её для подходящего запроса. Третья — результат отвечает исходному вопросу пользователя. Эти части можно испытывать независимо и затем соединять.

Предположим, навык безупречно собирает городские семинары. Пользователь просит «все онлайн-занятия вечером». Выбор той же функции с пустым городом может оказаться ошибкой: онлайн-формат представлен другим разделом. Проблема возникла ещё до исполнения. Исправлять переход по страницам в таком случае бессмысленно — нужно менять описание или выбор навыка.

Другой вариант: функция выбрана верно, но агент поменял местами начало и конец периода. Тогда требуется проверка входных значений. Третий вариант: входы верны, сайт изменил фильтры, и код больше не получает прежний результат. Каждая ситуация требует своего исправления; общий ярлык «память не сработала» скрывает это различие.

Что измерили авторы

В таблице 1 указаны 22,6% успешных задач для базового агента GPT-4o и 29,8% с навыками на WebArena. Библиотеку предварительно выращивали за 160 итераций на каждом сайте. Отдельная проверка на живых сайтах охватила 57 задач четырёх выбранных сайтов (§3.2–3.4). Это определённые среды, модели и бюджеты, а не обещание такого же роста на любом портале.

Итоговый успех на WebArena определяют автоматические проверки среды; на живых сайтах авторы вручную сверяют выполнение требований задачи (§3.1–3.2). Это отдельная оценка, отличная от модельного сигнала при освоении навыка.

Важен также характер переноса: библиотека создаётся для сайта. Для нашего каталога это означает самостоятельную инженерную проверку после изменения интерфейса. Успех на другом сайте не подтверждает ни правильность фильтра города, ни понимание календарной границы в нашей системе.

При оценке затрат я учитывал бы подготовку библиотеки, её исправления и последующие вызовы. Если процедура используется два раза, стоимость освоения может оказаться существеннее экономии. Если она повторяется часто и стабильна, появляется другой баланс. Конкретный порог надо измерять на своём потоке задач; в этом разборе расчёта окупаемости нет.

Небольшая проверка для своего каталога

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

  • Один экран и несколько страниц. Сравнить полный ожидаемый список с результатом функции; проверить отсутствие пропусков и повторов.
  • Граничные даты. Добавить семинары в первый и последний день периода и убедиться, что правило включения соблюдается.
  • Нет подходящих семинаров. Отличить пустую выдачу от ошибки загрузки. Агент должен сообщить разные результаты.
  • Изменившийся интерфейс. Переименовать кнопку или добавить второй похожий фильтр. Посмотреть, замечает ли система расхождение или продолжает с неверным состоянием.
  • Задача вне назначения. Попросить онлайн-занятия, если функция знает только городские мероприятия. Проверить, что агент выбирает другой путь.

После каждого испытания сохранять входы, наблюдаемый результат и версию функции. Когда меняется код, повторять связанные проверки. Так библиотека получает историю подтверждённого поведения; прежнее успешное выполнение остаётся свидетельством о конкретной версии и условиях.

Идея SkillWeaver помогает увидеть в памяти агента исполняемую процедуру. Для нашей условной команды следующий шаг — выбрать один часто повторяемый поиск, определить полный ожидаемый результат и проверить, что функция сохраняет его при смене параметров. Тогда решение о расширении библиотеки опирается на наблюдаемую пользу конкретного навыка.

Термины

  • Веб-агент — программа, которая выбирает и выполняет действия в браузере для решения задачи.
  • Навык в SkillWeaver — вызываемая функция Python, сохраняющая процедуру работы с сайтом.
  • Интерфейс программирования приложений (API) — способ программного вызова; в этой работе так назван интерфейс функции браузерного навыка.
  • Playwright — библиотека для программного управления браузером.
  • WebArena — набор веб-сред и задач для оценки действий агентов.

Источники

  1. Boyuan Zheng, Michael Y. Fatemi, Xiaolong Jin, Zora Zhiruo Wang, Apurva Gandhi, Yueqi Song, Yu Gu, Jayanth Srinivasa, Gaowen Liu, Graham Neubig, Yu Su. SkillWeaver: Web Agents can Self-Improve by Discovering and Honing Skills, arXiv:2504.07079v1, 9 апреля 2025 года. Основной источник: §2 — метод, §3–4 — оценка, приложения A.5–A.8 — проверка, сохранение и выбор навыков.
  2. Официальная страница SkillWeaver. Описание цикла и примеры освоения навыков; проверена 16 октября 2026 года.
  3. Официальный репозиторий SkillWeaver. Документация исполнения и оценки; проверена 16 октября 2026 года. Наличие кода не заменяет его независимый запуск и проверку.

Все материалы по теме: «Организационная и агентская память».

Хотите внедрить это у себя?

Помогаю командам перейти на агентную разработку: как советник, через обучение команды или внедрение изменений с проверкой эффекта по данным. Короткие заметки между статьями выходят в Telegram-канале.

Работать со мной или канал «Жизнь стартапа в стране ИИ»