Перед тем как писать код, я захотел проверить одну вещь: способна ли языковая модель принимать связные стратегические решения на протяжении десятков ходов — или это иллюзия?
Взял Ollama, llama3.1-uncensored, поднял в Open WebUI. Зашил системный промпт в Modelfile. Стал сам играть Game Master: вручную передавал состояние мира в виде JSON, получал обратно решение агента в виде JSON.
Одна модель, одна роль, 12 ходов.
Сеттинг
Планета. Четыре фракции с ресурсами, армиями, технологиями и дипломатией. Агент управляет Северным Регионом. Каждый ход он получает текущие цифры по всем фракциям и список последних событий. Отвечает строго объектом:
json
Разрешённые действия: build_farm, build_factory, build_barracks, research, trade, spy, diplomacy, declare_war, idle.
Лог
T12. Армия Юга - 820. Наша - 340. Советники говорят строить казармы. Агент выбирает research.
T13. Наука поглотила 250 gold, прогресс 50%. Юг вырос до 950, форпосты на границе. Агент строит завод.
T14. Завод обошёлся в -200 gold и -60 materials. Юг 980. Учения на границе. Агент строит казармы.
T15. Восток разорвал договор, требует 100 gold иначе отключит энергию. Казна - 240. Агент платит.
T16. Армия выросла до 490. Казна 160. Запад предлагает научное партнёрство за материалы. Агент соглашается, отдаёт последние 80 единиц.
T17. Tech 3 → 4. Юг в панике от союза с Западом: армия 1050, тяжёлая артиллерия на границах.
T18. Казна 60 gold, materials 20. Строить нечего. Запад предлагает бесплатную шпионскую операцию. Агент берёт.
T19. Шпионаж успешен: координаты складов боеприпасов. В случае атаки эффективность обороны x2. Армия 640.
T20. Глобальное событие: найдена нефть. Wealth 80 → 1200, materials +400. Южный Союз объявляет тотальную мобилизацию 1250. Разведка предупреждает о блицкриге в этот же ход. Агент строит казармы.
T21. Юг атакует всеми 1250. Наша армия успела вырасти до 990. Данные шпионажа удвоили оборону. Юг потерял 740, отступает с 510. Наши потери - 170. Агент объявляет войну.
T22. Южный Союз уничтожен. Аннексия. Запад предлагает Планетарную Федерацию. Агент выбирает дипломатию.
T23. United Planetary Federation. Population 3.1M, tech 6, happiness 90. Восток просит о мирном вхождении.
Что удивило
Агент дважды жертвовал краткосрочной стабильностью ради tech_level в моменты, когда это выглядело нелогично. В T12 при двукратном военном отставании выбрал науку. В T18 при нулевых ресурсах выбрал единственное бесплатное действие из всех доступных. После победы в T22 не пошёл добивать Восток, а выбрал дипломатию.
100% валидный JSON на каждом ходу.
Один неожиданный эффект. Web search был включён. Модель не нашла «Северный Регион» в поисковой выдаче. Вместо ошибки она начала анализировать стратегии Пентагона на 2026 год, уроки Гражданской войны в США, доктрины советско-афганского конфликта. И адаптировала их к симуляции.
Это не баг. Это механика разведки.
Одна проблема
По умолчанию Qwen3 8B включает thinking mode. Один ход занял 56 секунд - модель писала внутренний монолог на 1700 токенов прежде чем выдать 60 токенов JSON. С флагом /no_think в конце user message - 2–3 секунды. Для 4 параллельных агентов это принципиальная разница.
Что дальше
Цель - автоматизировать Game Master: tick.js с логикой потребления ресурсов, разрешением конфликтов и строительными очередями. WebSocket-сервер, 4 агентных setInterval, HTML-дашборд с карточками агентов и event log в реальном времени.
Тик каждые 30 секунд. 4 Modelfile в Ollama с изолированными персонажами.
MVP - 1-2 дня работы.
Полный лог симуляции: https://github.com/IlyaVorozhbit/llm-planet-sim/blob/main/log.md
