Новый фреймворк cua-bench решает проблему хрупкости ИИ-агентов для управления компьютером
Автономные агенты, способные взаимодействовать с компьютером — нажимать кнопки, печатать текст, выполнять рабочие процессы — сегодня демонстрируют шокирующую непоследовательность. Исследование Ullrich et al оказало, что успешность выполнения одной и той же задачи может различаться более чем в 10 раз из-за незначительных изменений в интерфейсе: темы оформления, шрифта или языка системы. Агент, идеально работающий на чистом рабочем столе Windows 11, проваливается на Windows XP или при включении режима высокой контрастности. Ключевая проблема — недостаток визуального разнообразия в обучающих данных.
Ограничения текущих подходов
Существующие бенчмарки, такие как OSWorld и Windows Agent Arena, опираются на статические снапшоты виртуальных машин с фиксированными настройками. Это создает целый ряд ограничений:
- Статичность: Задачи «запекаются» в компоненты bench-server, а загрузка может занимать до 20 минут.
- Фиксированный набор приложений: Виртуальные машины поставляются с предустановленным софтом.
- Ограниченные определения задач: Задачи описываются через JSON с ограниченным словарем.
- Медленная итерация: Обновление задач требует пересборки целых образов виртуальных машин.
Новый фреймворк cua-bench, представленный в блоге Hugging Face, предлагает решение всех этих проблем.
Что такое Cua-Bench?
Cua-Bench — это гибкий и масштабируемый фреймворк для создания верифицируемых, динамических сред для работы с компьютером. Он поддерживает три ключевые функции:
- Масштабируемую генерацию разнообразных данных графического интерфейса (GUI).
- Генерацию траекторий для обучения агентов.
- Создание сред для обучения с подкреплением (RL).
Фреймворк работает с множеством платформ: macOS, Linux, Windows, Android, iOS, виртуальными машинами и веб-интерфейсами.
Масштабируемая генерация GUI-данных
Cua-Bench генерирует реалистичные и разнообразные данные интерфейса, которые можно настраивать по множеству параметров:
- Различные программы и приложения.
- Расположение окон и покрытие экрана.
- Графические стили, цвета и контрастность.
- Разные платформы и устройства.
- Разрешения от 640×480 до 3440×1440.

Источник: huggingface.co
Примеры данных, сгенерированных Cua-Bench для разных тем ОС и приложений
Помимо скриншотов, система захватывает полные HTML-снапшоты каждого окна вместе с координатами ограничивающих рамок, метками доступности и CSS-стилями. Это позволяет воспроизводить состояния офлайн и кросс-платформенно.

Источник: huggingface.co
Особенность фреймворка — генерация данных не только для современных систем, но и для старых версий ОС, что снижает смещение моделей в сторону актуальных визуальных стилей. Охват разрешений также впечатляет — от низкого (640×480) до сверхвысокого (3440×1440).
Генерация траекторий для агентов
Cua-Bench предоставляет Python API, похожий на Playwright, для определения эталонных решений — программных реализаций, которые выполняют задачи шаг за шагом.
Каждая задача может определить эталонное решение с помощью декоратора @cb.solve_task. Пример кода для создания плейлиста в Spotify:
@cb.tasks_config
def config():
return {
"scenarios": [
{"playlist_name": "Workout Mix", "song": "Eye of the Tiger"},
{"playlist_name": "Chill Vibes", "song": "Weightless"},
# ... тысячи вариаций из одного шаблона
]
}
@cb.setup_task
async def setup(env, scenario):
await env.spotify.open()
await env.spotify.create_playlist(scenario["playlist_name"])
@cb.solve_task
async def solve(env, scenario):
await env.spotify.search(scenario["song"])
await env.spotify.add_to_playlist(scenario["playlist_name"])
@cb.evaluate_task
async def evaluate(env, scenario):
playlist = await env.spotify.get_playlist(scenario["playlist_name"])
return scenario["song"] in playlist.songs
При выполнении Cua-Bench записывает каждое действие вместе с состоянием среды, захватывая HTML-снапшоты, скриншоты и входные события, чтобы создать полные многошаговые траектории для обучения с учителем.
Ключевая возможность — перепроецирование траекторий. Одна записанная демонстрация человека может быть повторно отрендерена в 10 разных темах ОС, что дает 10 обучающих траекторий. Одинаковые действия, разные визуальные представления — так создаются надежные кросс-платформенные обучающие данные в масштабе.
Рабочий процесс разработки задач строится вокруг четырех декораторов: @tasks_config (вариации сценариев), @setup_task (инициализация среды), @evaluate_task (верификация успеха) и @solve_task (эталонное решение).
Идея cua-bench одновременно проста и гениальна: вместо того чтобы пытаться запечатлеть все возможные состояния интерфейса в реальном мире, фреймворк генерирует их синтетически, но с учетом всех нюансов — от ретро-стилей Windows 98 до специфики мобильных iOS. Это подход, который давно назрел. Нынешние агенты вроде Claude Computer-Use или Gemini 2.5 Computer-Use напоминают стажеров-первокурсников: блестяще справляются с задачами в идеальных лабораторных условиях, но теряются при малейшем отклонении от шаблона. Проблема не в «интеллекте» модели, а в банальном недостатке тренировочного разнообразия. Cua-bench предлагает «тренажерный зал» для таких агентов, где можно менять освещение, оборудование и правила игры, не выходя из кода. Успех этого подхода определит, станут ли компьютерные агенты универсальными цифровыми помощниками или останутся дорогими игрушками, работающими только в стерильных условиях демо-видео.
Представление разнообразия интерфейсов — от мобильных Android и iOS до настольных систем с разным уровнем «загромождения» рабочего стола — делает cua-bench мощным инструментом для создания действительно устойчивых ИИ-агентов. Вместо того чтобы собирать гигантские датасеты вручную, разработчики теперь могут программно генерировать необходимое разнообразие, что открывает путь к созданию агентов, которые будут работать одинаково хорошо независимо от того, какая версия Windows установлена у пользователя или какой размер шрифта он предпочитает.


