Опубликовано
Нужна ли модели зрение, чтобы добыть алмаз?
Автор: Гусев Николай [портфолио]
Нужна ли модели зрение, чтобы добыть алмаз?
Сложность: средняя
Недавно пролетела новость: человек попросил GPT-6 Astra добыть алмаз в Minecraft через computer use и ушёл спать. Шесть часов агент играл сам, по пути решая побочные задачи - кончилась древесина, поднялся на поверхность, нарубил деревьев, вернулся в шахту. Утром алмаз лежал в инвентаре. Красиво. Но если копнуть, оказывается, что computer use здесь - самый дорогой и ненадёжный путь из возможных. И это имеет значение не только для игр.
Два канала восприятия
Computer use - это цикл "скриншот → vision-модель → клик по координатам". Модель смотрит на пиксели и угадывает, что происходит. Инвентарь Minecraft на скриншоте - это "кажется, там алмаз". Здоровье - "полоска вроде ещё длинная". Каждый кадр - это токены, каждая догадка - шанс ошибиться. На шестичасовом горизонте ошибка накапливается: агент кликнул мимо, сломал верстак, свалился в лаву.
Второй путь - не смотреть на экран вообще. Minecraft это позволяет, потому что у игры открытый протокол сервера. Библиотека mineflayer подключается к серверу как обычный игрок и отдаёт состояние в виде данных: точные координаты, инвентарь с точностью до единицы, здоровье, блоки вокруг, события. Модель шлёт обратно команды: dig, craft, equip, goto. Никакой картинки в цикле нет.
Так работает Voyager (NVIDIA, 2023): GPT-4 без всякого зрения дошёл до алмазной эры, причём по пути написал библиотеку скиллов на JavaScript - код, который можно переиспользовать. Это ровно сценарий из твитa: "кончилась древесина" - вызвал скилл collectWood - вернулся в шахту. Только событие "кончилась древесина" приходит как поле в JSON, а не как догадка по пикселям.
Почему данные дешевле и точнее зрения
Три причины, и все инженерные.
Точность. Инвентарь в протоколе - это числа. 3 алмаза - это 3, а не "похоже на 3". Vision-модели на мелких деталях интерфейса регулярно галлюцинируют - у меня в практике были случаи, когда модель "видела" пункты меню, которых в приложении не было. На шестичасовой сессии каждая такая галлюцинация - потенциальная катастрофа.
Цена и скорость. Скриншот - это тысячи визуальных токенов на каждый шаг. JSON-состояние - сотни текстовых. Разница в стоимости на порядок, в латентности - тоже. Для агента, который делает сотни действий в час, это не оптимизация, а необходимость.
Детерминизм. События из протокола не зависят от освещения в кадре, ракурса, скинов и ночи в игре. "Здоровье 4 из 20" - это факт. "Похоже, персонаж ранен" - это интерпретация.
Что говорит история
Паттерн проверен много раз за последние годы, и почти всегда там, где ИИ играл сильно, был структурированный интерфейс вместо пикселей.
AlphaStar (DeepMind, 2019) играла в StarCraft II через pysc2 - структурированные наблюдения и действия. OpenAI Five (2018) в Dota 2 вообще не получала пиксели - только структурированные данные через Bot API от Valve. Factorio Learning Environment (2025) - свежий бенчмарк, где LLM-агент строит фабрики, читая состояние игры через RCON и Lua. Даже роглайк NetHack с его NLE отдаёт агенту текстовое состояние, и боты там играют лучше людей. В обратную сторону: почти все сильные игровые ИИ с пикселями (Atari из DeepMind 2015, VPT в Minecraft от OpenAI) - это либо RL с миллиардами шагов обучения, либо дорогие мультимодальные модели. Для LLM-агента на подсказках данные - единственный практичный канал.
Отдельный вопрос - Roblox, который часто спрашивают рядом с Minecraft. Ответ для чужих игр - нет. Open Cloud REST API у платформы есть, но это админский слой: датасторы, инвентарь аккаунта, управление серверами. Игровое состояние он не отдаёт. Клиент закрытый, протокол не документирован, инжекторы - это бан и нарушение правил. Но если игра твоя, всё меняется: в Roblox Studio пишешь Luau-скрипт, который сериализует позицию, инвентарь и цели в JSON, а HttpService гоняет его на внешний LLM-эндпоинт и обратно. Мост строится за вечер, и агент играет изнутри игры, без единого скриншота.
Когда зрение всё-таки нужно
Это не манифест против vision. Есть три сценария, где пиксели - единственный вариант.
Первый: игра или приложение без API. Закрытый клиент, античит, веб-игра, старый софт. Computer use - универсальный ключ, поэтому его и демонстрируют на Minecraft: работает везде. Просто "везде" почти всегда хуже, чем "в правильном месте правильно".
Второй: неструктурированная информация. Какой биом вокруг, стало ли темнее, где враг в поле зрения. Часть этого в протоколе Minecraft есть, но в общем случае - нет.
Третий, самый интересный: зрение как аудитор. Гибрид, где состояние течёт через данные, а раз в N шагов агент делает скриншот и проверяет: а то, что говорит JSON, похоже на реальность? Текст говорит "стою у верстака", картинка подтверждает или ловит рассинхрон. Дёшево, потому что редко, и ценно, потому что ловит именно те ошибки, которые текстовый канал пропускает.
Что это значит вне игр
Minecraft здесь - удобный стенд, но вывод переносится на любую агентную работу. Computer use - это интерфейс последней инстанции: для софта без API, для легаси, для всего, что не отдаёт состояние структурированно. Но в каждой системе, где есть API, протокол или хотя бы база данных, агент должен работать через них, а vision оставлять как редкую проверку.
Формула простая: данные - для основного цикла, зрение - для спорадического контроля. Скриншот в каждой итерации - это не современная архитектура агента, это дорогая имитация человеческого способа взаимодействовать с компьютером. У нас есть способ лучше, и он старше, чем кажется.
Astra в той истории пошёл через computer use не потому, что это оптимально для Minecraft, а потому что это демонстрация универсальности: тот же агент завтра откроет Excel, терминал и чужой сайт. mineflayer-бот алмаз бы добыл быстрее и дешевле, но умеет только в алмазы.