Проблема: ручное создание наград — это ад
Если вы когда-либо пытались написать функцию вознаграждения для RL-агента, вы знаете, что это похоже на попытку объяснить коту, как играть в шахматы. Вы описываете правила, кот смотрит на вас пустым взглядом, а потом идет спать. В обучении с подкреплением эта «награда» — единственный сигнал, который говорит агенту, что он делает что-то правильно. И обычно ее пишут вручную. Это долго, мучительно и почти всегда ошибочно.
Теперь представьте, что вы хотите обучить агента проходить Pokémon Red. Нужно учесть сотни событий: победы в битвах, получение предметов, движение по карте. Ручное кодирование этого — проект на несколько месяцев. Именно здесь появляется Tesserack.
На 28 января 2026 года инструмент Tesserack использует последние мультимодальные LLM, такие как Claude Vision 4.0 и OLMoCR-2, для анализа визуальных данных и текста. Это не старые модели вроде GPT-3 — речь идет о системах, которые понимают контекст игрового процесса почти как человек.
Tesserack: когда LLM становится компилятором
Tesserack — это открытый инструмент, который берет текстовые гайды (например, пошаговое руководство по прохождению игры) и превращает их в детерминированные тесты для функции вознаграждения. Он не просто генерирует код. Он создает компилятор, который преобразует человеческие инструкции в машиночитаемые проверки.
Вот как это работает: вы подаете на вход гайд по Pokémon Red. Tesserack с помощью LLM разбирает его на атомарные шаги. Каждый шаг — это потенциальный тест: «получите покемона в Паллет-Тауне», «победите Брока в Пьютер-сити». Затем он компилирует эти шаги в код на Python, который проверяет состояние игры (например, через скриншоты или эмулятор) и выдает награду.
Как из гайда по Pokémon Red выжали 675 тестов
В кейсе, который взорвал GitHub, разработчики взяли подробный текстовый гайд и пропустили его через Tesserack. На выходе — 675 детерминированных тестов. Каждый тест соответствует конкретному игровому событию. Например, тест «игрок получил Squirtle» проверяет, появился ли нужный покемон в инвентаре.
Это не случайные промпты. Tesserack использует многоуровневую архитектуру для извлечения смысла. Если вы думали о создании AI-агента для Pokémon Red, то теперь у вас есть готовый набор наград. Больше не нужно гадать, какую цифру поставить за победу над диким Раттата.
1 Три уровня тестов: от пикселей до логики
Tesserack генерирует тесты трех типов, что делает систему невероятно гибкой.
- Пиксельные тесты: Самые простые. Проверяют наличие определенных пикселей на экране. Например, появление диалогового окна «You got a Charmander!». Быстрые, но хрупкие.
- OCR-тесты: Используют модели вроде OLMoCR-2 (актуальной на 2026 год) для распознавания текста в игре. Проверяют, что на экране написано «HP: 20/20» или «Badges: 1». Надежнее пиксельных.
- Логические тесты: Самые сложные. Анализируют состояние игровой памяти или эмулятора. Проверяют флаги событий, количество покемонов в команде, пройденные локации. Почти неубиваемые.
Под капотом: мультимодальные LLM и детерминизм
Здесь кроется главная магия. Tesserack использует LLM не для прямого кодирования, а как интерпретатор спецификаций. Вы даете ему описание на человеческом языке, а он производит код, который всегда дает одинаковый результат для одинакового состояния игры. Это детерминизм, критичный для воспроизводимости экспериментов в RL.
Например, для шага «купить Poké Ball в магазине» LLM генерирует тест, который проверяет: уменьшилось ли количество денег, увеличилось ли количество Poké Ball в инвентаре, и было ли диалоговое окно покупки. Все это через анализ данных эмулятора. Это похоже на то, как работают AI-кодинг-агенты, но с фокусом на тестировании, а не генерации.
Важный нюанс: Tesserack не полагается на одну LLM. Он использует каскад моделей — одна разбирает текст гайда, другая (мультимодальная) анализирует скриншоты, третья валидирует логику. Это снижает риск галлюцинаций, которые убивают детерминизм.
А что с альтернативами? (Spoiler: их почти нет)
До Tesserack были попытки использовать LLM для генерации наград, но они упирались в два вопроса: как сделать это детерминированно и как масштабировать. Промпты вроде «напиши функцию награды для Pokémon» дают разный код каждый раз и полны ошибок.
| Инструмент/Подход | Детерминизм | Масштабируемость | Пример |
|---|---|---|---|
| Ручное кодирование | Да | Нет (месяцы работы) | Собственные проекты RL |
| Прямые промпты к LLM | Нет | Средняя | GPT-4o для генерации кода |
| Tesserack | Да (через тесты) | Высокая (гайды как вход) | 675 тестов для Pokémon Red |
Другие подходы, например, RAG-агенты для объяснения правил, хороши для извлечения знаний, но не для компиляции в код. Tesserack занимает уникальную нишу.
Где это работает, кроме покемонов?
Идея превращать гайды в тесты применима везде, где есть последовательность шагов и состояние, которое можно проверить.
- Другие видеоигры: От классических RPG до современных стратегий. Скорость обучения агентов взлетает, когда награды точные.
- Бизнес-процессы: Автоматизация софта через UI. Гайд «как оформить заказ в CRM» превращается в тесты для RPA-бота.
- Образовательные симуляторы: Проверка выполнения заданий в обучающих программах. Tesserack может генерировать тесты из учебных пособий.
- Тестирование ПО: Генерация интеграционных тестов из документации. Мечта QA-инженера, если инструмент адаптировать.
По сути, это следующий шаг после упаковки знаний для агентов в виде Skills. Не просто знания, а исполняемые спецификации.
Кому стоит попробовать Tesserack прямо сейчас?
Инструмент не для всех. Он требует технического бэкграунда, но окупается сполна.
- Исследователи в RL: Кто устал от ручного создания reward shaping. С Tesserack можно быстро прототипировать сложные сценарии.
- Разработчики игровых AI: Особенно те, кто работает с ретро-играми или эмуляторами. Получайте готовые функции награды за часы, а не недели.
- Инженеры по автоматизации: Которые видят потенциал в использовании LLM для генерации тестов. Tesserack дает рабочий пример.
- Энтузиасты AI-агентов: Которые собирают системы из компонентов как LEGO. Tesserack — это мощный блок для работы с наградами.
Но предупреждение: Tesserack не волшебная палочка. Он зависит от качества гайда и возможностей LLM. Если гайд расплывчатый, тесты будут такими же. И вам все равно нужно интегрировать сгенерированный код в свой эмулятор или среду. Это не плагин в один клик.
Что дальше? Я вижу, как подобные инструменты смещают фокус с «написания кода» на «написание спецификаций». В будущем мы будем описывать желаемое поведение агента на естественном языке, а компилятор (вроде Tesserack) будет превращать это в детерминированные тесты, код и даже бенчмарки для оценки. И самое интересное — это произойдет не через десятилетие, а в ближайшие пару лет. Pokémon Red был только разминкой.
Неочевидный совет: если вы экспериментируете с Tesserack, начните не с огромного гайда, а с одной главы. Например, с прохождения первой арены в Pokémon. Так вы поймете, как инструмент интерпретирует текст, и настроите пайплайн без лишней сложности. А потом масштабируйте. И да, обязательно загляните в исходники — архитектура того стоит.