Взял 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