Запускаю Age of Poleis, чтобы проверить одну мелочь: получилось ли в онбординге передать смысл продолжать разведку. И вот я уже исследую весь остров в поисках нужного для старта артефакта. Странное чувство. Игру придумал я. Я знаю, какие здания откроются следующими, где экономика начнёт скрипеть и к чему всё идёт. Спойлеров у меня больше, чем у кого угодно. И всё равно иногда закрываю чек-лист и продолжаю строить город — просто потому что хочется.
Age of Poleis — стратегия про древнегреческий полис. Строительство, ресурсы, рабочие и производство здесь сцеплены: поменяешь одну механику — поедут ещё три. Код пишет ИИ, а я придумываю, решаю и играю. Ниже — как я устроил процесс, чтобы агент работал почти без меня, и два случая из реального проекта. Первый — про правило, которое я устал повторять. Второй — про тридцать зелёных тестов, которые ничего не доказывали.
Как ИИ пишет код, а я проверяю механику
Мой процесс выглядит так: я формулирую задачу для агента, он генерирует код, я запускаю игру и смотрю, как это работает вживую. Часто вместо сухого тестирования я начинаю играть — и это не всегда плохо. С одной стороны, так я быстрее нахожу слабые места в геймплее. С другой — теряю время, которое мог бы потратить на автоматические проверки. Главная проблема — соблазн проверить «одну мелочь», которая превращается в час исследования острова.
Чтобы не уходить в игру с головой, я завёл правило: перед запуском игры всегда пишу список конкретных вопросов, на которые хочу получить ответ. Например: «Работает ли онбординг? Понятно ли, зачем продолжать разведку? Не ломается ли экономика на третьем ходу?» Если в процессе игры появляются другие вопросы, я записываю их и возвращаюсь к ним позже. Это помогает не отвлекаться, но всё равно требует дисциплины.
Правило, которое я устал повторять
Одно и то же правило я повторяю агенту каждый раз, когда он предлагает изменения: «Не трогай существующие тесты без необходимости. Если меняешь логику — обнови или добавь тесты, но не удаляй старые проверки просто потому, что они мешают». Звучит очевидно, но на практике ИИ склонен упрощать: увидел падающий тест — переписал его под новое поведение, вместо того чтобы разобраться, почему поведение изменилось. В итоге тесты перестают ловить регрессии.
Я устал повторять это в каждом промпте, поэтому добавил правило в системный промпт агента. Теперь он получает его автоматически. Это снизило количество случаев, когда агент «чинил» тесты вместо кода. Но полностью проблема не исчезла: иногда агент всё равно пытается обойти сложный тест, если считает, что тот устарел. Приходится проверять диффы вручную.
Тридцать зелёных тестов, которые ничего не доказывали
Второй случай — показательный. Я попросил агента покрыть тестами механику производства и рабочих. Он сгенерировал тридцать тестов, все зелёные. Я обрадовался, но решил проверить, что они реально проверяют. Оказалось, большинство тестов просто вызывали функции и убеждались, что те не падают. Никаких утверждений о результате, никаких проверок граничных случаев. Формально тесты есть, но толку от них ноль.
Пришлось переписывать. Я сформулировал критерии: каждый тест должен проверять конкретное поведение — например, что при нехватке ресурсов строительство не начинается, а при достатке — начинается и списывает нужное количество. Также важно проверять, что при изменении одной механики не ломаются смежные. Только после этого тесты стали полезными.
Вывод: не доверяйте зелёным тестам, если не уверены, что они проверяют. Особенно когда тесты пишет ИИ. Всегда просматривайте, что именно утверждает тест, и есть ли в нём хотя бы одно содержательное ожидание.
Что помогает не залипать и не терять контроль
Вот несколько практик, которые я выработал, работая с ИИ-агентом над игрой:
- Перед запуском игры — список вопросов. Запишите, что именно хотите проверить. Если по ходу появляются другие идеи, записывайте их отдельно и возвращайтесь позже.
- Системный промпт с правилами. Добавьте туда ключевые ограничения, которые не хотите повторять каждый раз. Например, запрет на удаление тестов без анализа.
- Проверяйте тесты на содержательность. Смотрите не на количество, а на то, какие утверждения они делают. Тест без ожиданий бесполезен.
- Разделяйте исследование и тестирование. Если хочется поиграть — играйте, но отдельно. Для проверки механик используйте автоматические тесты и короткие сессии с чёткой целью.
- Регулярно просматривайте диффы. Даже если агент работает почти без вас, контролируйте изменения в коде и тестах.
Главная сложность — баланс между свободой творчества и дисциплиной разработки. ИИ ускоряет рутину, но требует внимания к деталям. Если пустить всё на самотёк, можно получить тридцать зелёных тестов и ноль уверенности в коде. Если контролировать каждый шаг — потеряете преимущество в скорости. Ищите свою середину.