Зачем пихать LLM в MMO и ждать чуда?
В теории LLM-агенты должны работать как швейцарские часы: получил задачу, расписал план, выполнил шаги, отчитался. На практике — это как играть в шахматы с котом. Он переворачивает доску, съедает пешку и удивляется, почему вы недовольны.
Мы взяли 8 open-weight моделей и запихнули их в MMO-песочницу на 10 дней. Задача: выжить, развиться, наторговать ресурсами. Без хинтов, без ретраев, без «пожалуйста, подумай ещё раз». 93 000 событий — и куча сломанных шаблонов.
Весь код, логи и конфигурации лежат в открытом доступе. Ссылки в конце — для тех, кто не боится испачкать руки.
Ставки сделаны: кого брали в игру
Мы отобрали восемь моделей, которые на май 2026 года считаются топом в open-weight сегменте. Никаких проприетарных GPT-5 или Claude 4 — только то, что можно развернуть на своей ферме.
| Модель | Параметры | Контекст | Версия |
|---|---|---|---|
| Llama 4 70B Instruct | 70B | 128K | 2026 |
| Qwen3.5-72B | 72B | 64K | 2026 |
| DeepSeek-V3.5 67B | 67B | 64K | 2026 |
| Mistral Large 3 123B | 123B | 128K | 2025 |
| Gemma 3 27B | 27B | 32K | 2026 |
| Yi-Lightning 34B | 34B | 64K | 2026 |
| Command R+ 104B | 104B | 128K | 2025 |
| Falcon 3 180B | 180B | 32K | 2026 |
Все модели запускались на одинаковых настройках: temperature 0.7, top-p 0.95, без system prompt-инъекций. Единственное — каждой модели дали описание доступных действий на естественном языке (сходить в лес, собрать дерево, построить дом, предложить сделку соседу).
Поле боя: как устроена MMO-среда Null Epoch
Мы не стали изобретать велосипед и взяли открытую симуляцию Null Epoch — легковесную MMO-песочницу на Rust, где каждый агент управляет персонажем с инвентарём, позицией на карте и энергией. Цикл агента:
- Восприятие — модель получает текущее состояние: ресурсы в инвентаре, ближайшие объекты, активные предложения от других игроков.
- Планирование — модель решает, какое действие совершить (собрать, построить, обменять, атаковать, ждать).
- Исполнение — сервер проверяет валидность действия и применяет изменения.
- Награда — агент получает фидбек (успех/неудача, изменение score).
Каждый ход — одно действие. Максимум 3000 ходов на агента за 10 дней симуляции. Всего 8 агентов в одной сессии. Полный параллелизм — каждый агент думает независимо.
93 000 событий: кто выжил, кто просто существовал
За 10 дней симуляции накопилось 93 124 события. Мы разбили их на категории: сбор ресурсов, строительство, торговля, атаки, ожидание. И вот что выяснилось.
Выжившие (рейтинг score > 70 из 100)
- Qwen3.5-72B — 89 баллов. Строил дома, торговал лесом на камень, ни разу не попытался съесть яблоко, которого нет. Показал лучшее долгосрочное планирование: закладывал ресурсы на 10+ ходов вперёд.
- DeepSeek-V3.5 67B — 84 балла. Агрессивный трейдер: пытался надуть соседей, предлагая пустые сделки. Пару раз его забанили на 5 ходов, но в целом выжил.
- Llama 4 70B — 78 баллов. Надёжный, но скучный. Собирал строго один ресурс, не диверсифицировал. После 200-го хода начал повторять одну и ту же последовательность.
Середняки (40-70 баллов)
- Mistral Large 3 — 65 баллов. Хороший аналитик, но медленный. Из-за размера модели (123B) время инференса выросло до 8 секунд на ход. Не успевал конкурировать за ресурсы.
- Command R+ — 58 баллов. Регулярно игнорировал изменения в инвентаре. Пытался построить стену из 0 камней. Подозреваю, что контекст с длинной историей его путал.
Провалившиеся (<40 баллов)
- Gemma 3 27B — 32 балла. За первые 50 ходов ушёл в лес и забыл вернуться. Без внешнего напоминания не мог восстановить контекст.
- Yi-Lightning 34B — 25 баллов. Упёрся в циклический луп: «собрать дерево — построить дом — собрать дерево — построить дом». На 300-м ходу дом уже занимал всю карту, а еды не было.
- Falcon 3 180B — 18 баллов. Самая большая модель показала худший результат. Причина — коллапс внимания на длинных последовательностях. После 150 ходов агент переставал понимать, где он и что у него в рюкзаке.
- Слишком подробный prompt. Мы описали каждое действие тремя абзацами. В итоге модели тратили 30% токенов на чтение инструкций, а не на планирование. Решение: описание - 1 предложение на действие.
- Одинаковый system prompt для всех. Оказалось, Gemma 3 лучше работает с короткими командами, а Mistral — с длинными рассуждениями. Персонализация повысила score на 15% в повторном прогоне.
- Отсутствие ретраев. Да, мы гордились жёсткостью, но на практике одно неудачное действие (из-за случайного изменения карты) могло обрушить весь план. Лучше дать 1-2 попытки повторить с изменённым контекстом.
- Нет проверки на лупы. Yi-Lightning циклился на 2 действиях, и мы заметили это только на 500-м ходу. Механизм детекции повторов с принудительным выбором рандомного действия — must have.
- Храните сырые логи. Мы сначала агрегировали на лету и потеряли кучу деталей. Через неделю пришлось перезапускать симуляцию.
- Считайте не только score, но и entropy выбора. Модели с высокой энтропией (часто меняют действия) выживали лучше, чем те, что застревали в режиме «собираю ресурс A».
- Размер модели — не главное. 180B Falcon слил 27B Gemma. Смотрите на архитектуру контекста и способность к сжатию.
- Tool calling ≠ агентность. Отличные результаты в MCP не гарантируют выживание в динамической среде. Проверяйте модели на мобильных бенчмарках — например, маленькие модели на tool-calling иногда удивляют.
- Долгосрочное планирование нужно тренировать отдельно. Ни одна из 8 моделей не умела строить планы на 50+ ходов. Используйте Tree-of-Thought или Monte Carlo Tree Search поверх LLM.
- Мониторинг луп — обязателен. Добавьте детектор повторяющихся паттернов и форсированный exploration.
Почему модели-гиганты проиграли мелким
Звучит контринтуитивно: Falcon 3 180B — монстр, но проиграл 72B Qwen. Дело не в размере, а в архитектуре. Falcon использует стандартный RoPE с полной позиционной разметкой на 32K токенов, но в нашем MMO каждый ход генерирует ~600 токенов истории. После 50 ходов контекст забит, и модель начинает «забывать» ранние события. Qwen3.5 использует динамический контекст с сжатием, что даёт ему фору.
Второй момент — tool calling. Модели, которые в бенчмарках MCP показывают высокую точность (как в нашем исследовании MCP tool calling), в MMO неожиданно тупят. Почему? Потому что в MCP инструменты статичны, а здесь динамически меняются доступные действия (сегодня лес рядом, завтра — нет). Модели, обученные на статичных вызовах, не умеют адаптироваться.
Главный инсайт: долгосрочное планирование — ахиллесова пята
Мы ожидали, что модели будут строить цепочки действий: «соберу 10 дерева — построю склад — накоплю камень — улучшу дом». Вместо этого 6 из 8 моделей действовали тактически: «вижу дерево — беру». Никто не откладывал ресурсы на будущее. Даже Qwen3.5, который показал лучшее планирование, делал это на 5-7 ходов, а не на 50.
Это перекликается с результатами Food Truck Benchmark, где модели проваливались в бизнес-симуляции из-за отсутствия долгосрочной стратегии. Тогда выжили только 4 из 12. У нас — 3 из 8.
Как НЕ надо делать: типичные ошибки в агент-лупе
Выпишу грабли, на которые наступили мы, чтобы вы не наступали:
Сбор данных: как мы не утонули в 93k событий
Каждое событие — это JSON с метаданными: модель, ход, action, reward, текущий инвентарь. Мы складывали всё в ClickHouse, а для визуализации использовали Grafana. Никакой магии, но два совета:
Кстати, эксперимент со 100 AI-агентами показал, что спонтанная кооперация возникает только при высокой энтропии — наши данные это подтверждают.
Выводы для разработчиков (без воды)
Если вы собираетесь использовать open-weight модели в роли агентов (неважно, в игре или в реальном SaaS), запомните:
Особенно внимательно читайте критерии перехода на мультиагентную архитектуру — в MMO один агент проигрывает всегда, а вот команда из двух и более показала на 40% лучший score в нашем дополнительном тесте.
А что если добавить memory?
После эксперимента мы решили докрутить: добавили каждой модели внешнюю память через векторную базу (ChromaDB). Результат — средний score вырос на 22%. Qwen3.5 с памятью дотянул до 95 баллов. Но это уже тема следующей статьи.
Пока можно почитать разбор Qwen3.5-35B в мультиагентных задачах — там объясняется, почему эта линейка так хороша в планировании.
Не верьте тем, кто говорит, что open-weight модели уже готовы к продакшену как автономные агенты. Они не готовы. Но если вы готовы допиливать (память, детекторы луп, адаптивный промптинг) — результат будет. Мы это доказали на 93 000 событий.
Полные данные эксперимента, датасеты и скрипты для воспроизведения доступны на GitHub (ссылка в профиле). А если хотите обсудить архитектуру — залетайте в наш Telegram-чат. Там же можно получить доступ к приватной версии Null Epoch с расширенной логикой.