Как Jev играет в Doom и проходит викирейсинг: разбор демо TypeSafe
Кроме таблиц с цифрами, TypeSafe показала на запуске игры. Jev управляет ботом в Doom и соревнуется в викирейсинге по Википедии. Разбираем, как устроены эти демо, сколько стоит игровой цикл и что из них пригодится в обычном проекте.
Что показала TypeSafe
В посте о запуске Jev 15 сентября 2026 года TypeSafe выделила два развлекательных демо, которые, по словам компании, больше всего нравятся самой команде. В первом Jev управляет ботом в Doom. Во втором проходит викирейсинг: добирается от одной статьи Википедии до другой только по ссылкам. The Register вынес Doom прямо в заголовок новости о релизе.
Игры выбраны не случайно. В том же посте TypeSafe называет приложения реального времени одним из сценариев для Jev: при ответе порядка 100 мс модель можно ставить туда, где важен мгновенный отклик. Игра показывает это нагляднее всего, ведь решение нужно принять раньше, чем изменится ситуация на экране.
Оба ролика опубликованы в блоге TypeSafe. В разделе Demos документации пока описано только демо умного дома, а исходников игровых ботов в официальном GitHub-аккаунте компании на момент написания нет. TypeSafe обещала подробный разбор Doom-бота и мероприятия, на которых его можно будет дорабатывать вместе.
Doom: 10 запросов в секунду за $7 в час
Главное, что стоит знать об этом демо: Jev не смотрит на экран. По данным TypeSafe, бот получает структурированное состояние игры — данные с текстом, а не изображение. The Register описывает это так же: модель играет, когда ей передают структурированные данные о состоянии игры.
Цифры из поста компании:
- бот делает около 10 запросов к Jev в секунду;
- час игры обходится примерно в $7. Инженер, собравший демо, переживал, что 10 запросов в секунду обойдутся дорого, но остальная команда сочла сумму ниже ожидаемой.
Наш пересчёт: 10 запросов в секунду — это 36 000 запросов в час. $7 на 36 000 запросов дают около $0,0002 за решение. При цене $0,042 за миллион входных токенов это примерно 4,6 тыс. входных токенов в каждом запросе. Проверить такую арифметику для своего сценария можно в калькуляторе стоимости.
TypeSafe сама признаёт, что обычный бот без ИИ играл бы лучше. Цель была другой: бот должен реагировать на разные представления игрового состояния и выполнять инструкции на естественном языке. Демо показывает скорость и гибкость, а не игровое мастерство.
Как собрать такого бота самому
Код TypeSafe закрыт, но через два дня после релиза на GitHub появился открытый проект doom-jev. Он работает на движке ViZDoom и хорошо показывает, из каких частей складывается такой бот.
Два цикла вместо одного. Игра идёт со штатной частотой 35 тиков в секунду, а запросы к Jev уходят асинхронно, примерно 10 раз в секунду. Пока ответ в пути, бот продолжает последнее действие и подправляет его по геометрии. Сетевая задержка не останавливает игру.
Без такой схемы не обойтись. При 10 запросах в секунду на каждый приходится 100 мс, а TypeSafe указывает время ответа 70–500 мс. Часть ответов неизбежно приходит позже следующего шага, и синхронный бот замирал бы на месте.
Состояние готовит код. Программа анализирует буфер глубины, ищет стены лучами и оставляет только тех врагов, которых реально видно. Всё это превращается в текстовую сводку: здоровье, броня, оружие, патроны, видимые угрозы, препятствия.
Jev принимает решения верхнего уровня. На каждом шаге модель получает шесть вопросов: четыре Choice (общая цель, цель для стрельбы, движение, поворот) и два Noul (прыгать ли, стрелять ли). Точное наведение прицела считает тригонометрия в коде.
Приказы обычными словами. Во время игры в терминал можно написать, например, «отступай и ищи аптечки». Текст попадает в следующее состояние, и бот меняет поведение без перезапуска.
Упрощённый запрос по мотивам doom-jev:
{
"model": "jev-latest",
"state": "health: 42\nammo: 12\nvisible_enemies: [imp_1, zombieman_2]\nwall_ahead: true\norders: retreat and find medkits",
"questions": {
"macro_goal": {
"type": "choice",
"instructions": "What is the player's overarching objective right now?",
"criteria": {
"engage": "Push forward and eliminate enemies in line of sight",
"explore": "Navigate safely and find resources",
"flee": "Retreat to survive heavy incoming damage"
}
},
"target": {
"type": "choice",
"instructions": "Which visible enemy should the player aim at?",
"criteria": { "imp_1": null, "zombieman_2": null, "none": "No valid target" }
},
"firing": {
"type": "noul",
"instructions": "Should the trigger be held down right now?"
}
}
}
Обратите внимание на вопрос target: список вариантов собирается заново на каждом шаге из врагов, которые сейчас видны. Выбрать несуществующего противника модель не может. Инструкции оставлены на английском, как в исходном проекте: по данным TypeSafe, на английском Jev работает точнее всего.
Все шесть вопросов уходят одним запросом и считаются параллельно. По данным TypeSafe, дополнительные вопросы почти не увеличивают время ответа, поэтому бот задаёт их все на каждом шаге, а код сам решает, какие ответы использовать. Этот приём называется speculative fan-out, подробнее о нём — в отдельной статье.
Викирейсинг: выбор из сотен ссылок
Правила простые: вы стартуете на одной статье Википедии и должны добраться до заданной, переходя только по ссылкам на текущей странице. На каждом шаге приходится выбирать из сотен, а иногда тысяч ссылок.
По словам TypeSafe, демо проверяет ещё и устойчивость к ошибкам формата, которые копятся в длинной цепочке выборов. Языковая модель может вернуть название ссылки, которой на странице нет, и забег сломается. Jev так ошибиться не может: ответ всегда один из переданных вариантов. Это та же гарантия, что описана в статье о примитивах Jev, только в масштабе сотен вариантов.
Демо упирается в лимит: в одном Choice не больше 255 вариантов. Для страниц с большим числом ссылок TypeSafe использует два этапа — сначала оценивает ссылки по отдельности, затем делает явный выбор среди лучших. Отсюда, по словам компании, редкие замедления в ролике.
Даже без этого лимита длинный список пришлось бы резать. На запрос отводится до 64 тыс. токенов, а на состояние вместе с самым длинным вопросом — до 32 тыс. Тысяча ссылок с подписями легко съедает заметную часть этого бюджета, а TypeSafe предупреждает, что лишний текст в состоянии снижает точность.
Оговорки компания перечисляет сама:
- ускорение здесь заметно меньше, чем в других демо;
- LLM-соперники работали без режима рассуждений (кроме Astra с минимальной настройкой), чтобы ролик было не скучно смотреть;
- с включёнными рассуждениями LLM справляются с задачей заметно лучше, и именно из-за этой настройки Jev чаще доходила до цели за меньшее число шагов.
Что демо доказывают, а что нет
Доказывают:
- модель укладывается в игровой цикл: десяток запросов в секунду за несколько долларов в час;
- Choice с динамическим списком работает: цели и ссылки собираются из текущего состояния;
- выбрать несуществующий вариант нельзя, даже когда вариантов сотни.
Не доказывают:
- что Jev «видит» игру: распознавание делает код, который готовит состояние;
- что бот играет хорошо: TypeSafe сама пишет, что скриптовый бот сильнее;
- что Jev умнее LLM в викирейсинге: сравнение шло с моделями без рассуждений;
- надёжность: ни статистики побед, ни кода официальных демо пока нет.
Что взять в свой проект
- Развяжите циклы. Приложение живёт в своём темпе, модель отвечает асинхронно. Если ответ опоздал, действует последнее решение.
- Числа и геометрию считайте в коде. TypeSafe прямо пишет, что Jev — не калькулятор и с числами работает хуже, чем со смыслом.
- Собирайте варианты из состояния и всегда добавляйте вариант «ничего из этого».
- Больше 255 вариантов — два этапа: отдельная оценка, затем выбор из короткого списка.
- Считайте стоимость цикла заранее: запросы в секунду × токены в запросе × цена. Подробнее о тарифе — в статье о ценах Jev.
Другие сценарии, от модерации до ИИ-агентов, собраны в обзоре «Где применяют Jev».
Частые вопросы
Jev играет в Doom по картинке с экрана?
Нет. По данным TypeSafe, бот получает структурированное текстовое описание состояния игры, а не изображение. Картинки Jev пока не принимает вообще.
Сколько стоит час игры Jev в Doom?
TypeSafe оценивает своё демо примерно в $7 в час при 10 запросах в секунду. В вашем проекте сумма зависит от того, сколько токенов состояния уходит в каждом запросе.
Можно ли запустить Doom-бота на Jev самому?
Код своего бота TypeSafe пока не опубликовала, компания обещала подробный разбор. Есть независимые проекты на ViZDoom, например doom-jev на GitHub. Для запуска нужен свой API-ключ.
Как Jev выбирает ссылку, если на странице их больше 255?
В одном Choice не может быть больше 255 вариантов. Для больших страниц TypeSafe сначала оценивает ссылки по отдельности, а затем делает явный выбор среди лучших.