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 — набор веб-сред и задач для оценки действий агентов.
Источники
- 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 — проверка, сохранение и выбор навыков.
- Официальная страница SkillWeaver. Описание цикла и примеры освоения навыков; проверена 16 октября 2026 года.
- Официальный репозиторий SkillWeaver. Документация исполнения и оценки; проверена 16 октября 2026 года. Наличие кода не заменяет его независимый запуск и проверку.
Все материалы по теме: «Организационная и агентская память».
Хотите внедрить это у себя?
Помогаю командам перейти на агентную разработку: как советник, через обучение команды или внедрение изменений с проверкой эффекта по данным. Короткие заметки между статьями выходят в Telegram-канале.