Screeps AI Architect

Screeps AI Architect · Профиль сборки

Разбор по файлам собственного репозитория: что реализовано, что частично, что осталось на бумаге.

Две половины: бот из 21 модуля CommonJS, склеенный в один main.js и исполняемый сервером игры, и портал React 19 плюс Vite 6 на Express-сервере. Из браузера как статический сайт ничего не работает.

2 реализовано · 3 частично · 1 не реализовано · 1 иллюстративно

Концептуальная иллюстрация: Screeps AI Architect. Не скриншот продукта

Что читается в коде

  • CANON.md объявляет канонической папку screeps-ai-architect v3; archive, rar и base помечены как старые снимки

    Файл CANON.md

  • Код бота: 21 модуль в screeps_runtime/modules, 16039 строк; крупнейший — static_creeps.js на 4324 строки

    Файл screeps_runtime/modules

  • Точка входа тика одна: module.exports.loop в main_entry.js; 20 модулей перечислены в ORCHESTRA_MODULES, 22 вызова kernel.registerProcess задают приоритеты (spawn 98, defense 100, wipe 105, labs 40, trade 30, visuals 20)

    Файл screeps_runtime/modules/main_entry.js

  • Константы CPU: лимит по умолчанию 20, коридор bucket 500–9500, целевой bucket 9000 на shard3, режимы cpuMode по порогам 700, 3500 и 9000

    Файл screeps_runtime/modules/bucket_governor.js

  • Доставка кода: POST на /api/user/code, ветка 1st, хост по умолчанию screeps.com; манифест последнего деплоя фиксирует 21 файл с sha256 и версию 2.12.177

    Файл server.ts

  • Живое состояние колонии по телеметрии: одна комната E22N53, ранг RCL1, 7 криперов, энергия 34 из 300, флаг голода, 192 простаивающих тика, нулевой прогресс

    Файл audit-results/telemetry/colony-watch.jsonl

  • Спавн ведёт 13 ролей с целями и весами: staticHarvester, puller, hauler, upgrader, builder, defender, scout, looter, guard, remoteHarvester, remoteHauler, reserver, claimer

    Файл screeps_runtime/modules/spawn_manager.js

  • Проверки: четыре tsx-скрипта (bootstrap, modules_syntax, export_formats, invariants) и один Playwright-тест; CI-конфигураций в репозитории нет

    Файл test_modules_syntax.ts

Состояние модулей

  1. реализовано

    Экономика, спавн ролей, стройка и оборона

    Реальные вызовы spawnCreep и createConstructionSite, башни и activateSafeMode, планировщик базы с поиском центра, контейнеров у источников, дорог и расширений.

    Файл screeps_runtime/modules/dt_planner.js

  2. реализовано

    Приоритетное ядро, CPU-говернор и память сегментов

    kernel.js сортирует процессы с запасом на обход, bucket_governor.js считает адаптивный целевой bucket и доли категорий, packer.js работает с RawMemory в лимите 95000 на сегмент.

    Файл screeps_runtime/modules/kernel.js

  3. частично

    Дальние операции: код есть, колония до них не дошла

    remote_ops и loot зарегистрированы и роли считаются, но на RCL1 признак готовности к дальним операциям никогда не наступает, поэтому путь не задействован.

    Файл screeps_runtime/modules/remote_logistics.js

  4. частично

    Лаборатории: реакции есть, производство нет

    runReaction и processPower настоящие; но chooseFactoryProduct и runFactory возвращают нуль, заявки на дозаправку пустые, а вызова boostCreep нет ни в одном из 21 модуля.

    Файл screeps_runtime/modules/lab_reactor.js

  5. не реализовано

    Рынок, межшардовая шина и CI/CD

    findHighlyProfitableDeals всегда возвращает нуль и рыночных вызовов нет; процесс шины включается флагом, который нигде не выставляется; файлов workflow не найдено.

    Файл screeps_runtime/modules/market_arbitrage.js

  6. иллюстративно

    Планировщик стен min-cut и Gantt-резервы

    generateMinCutBorders строит прямоугольную оболочку радиусом от 3 до 9: ни потока, ни Ford-Fulkerson, ни Dinic; GanttEngine держит не больше 24 задач и стирает их, реальной блокировки ресурсов нет.

    Файл screeps_runtime/modules/min_cut.js

  7. частично

    Портал-дашборд

    Десять экранов работают, но каждый обращается к bundled Express-серверу и требует токен; как статический сайт не публикуется, а документация архитектуры генерируется из реестра названий модулей.

    Файл src/App.tsx

Как это проверено

  • Робот работает на официальном MMO, не на приватном сервере

    Запись телеметрии содержит host screeps.com, shard3, лимит CPU 20 и владеемую комнату; отправка идёт на ветку 1st того же хоста.

    Файл docs/merged-from-optimizer/long-horizon-telemetry/screeps.com-shard3.latest.json

  • Колония в состоянии бутстрапа, а не развитой базы

    colony-watch.jsonl фиксирует RCL1, семь криперов, признак голода, 192 простаивающих тика, нулевой прогресс и предупреждение о неподключённых базовых модулях.

    Файл audit-results/telemetry/colony-watch.jsonl

  • Тесты не подтверждают игровое поведение

    test_bootstrap_contract.ts на 2170 строк не содержит ни одного вызова assert; test_modules_syntax.ts исполняет модули в vm с мок-глобалами, реальный сервер игры не задействуется.

    Файл test_bootstrap_contract.ts

  • Пороги простоя закреплены конфигм, а не прозой

    scripts/invariants.json задаёт controllerTicksToDowngradeMin 10000, constructionStallTicks 300, energyFullnessMin 0.9 и cpuBucketForGrowth 5000.

    Файл scripts/invariants.json

Границы утверждений

  • Портал нельзя опубликовать статически: интерфейс целиком зависит от серверных маршрутов и токена пользователя.
  • Токен аккаунта хранится в localStorage браузера, поэтому любой вынос интерфейста в сеть сделал бы его целью кражи через XSS.
  • Значительная часть алгоритмических модулей декоративна: min_cut, market_arbitrage, shard_bus и GanttEngine почти не выполняют полезной работы.
  • В main_entry.js остался устаревший жёстко заданный список дальних комнат, тогда как живая база находится в другой комнате.
  • Роль escort распознаётся, но отсутствует в таблице целей спавна, поэтому штатно не может быть создана.
  • Каноническим является только v3: корень папки и снимки base и archive не являются git-репозиториями, поэтому истории и диффов по ним нет.
  • Локальный симулятор выживания описан в документации, но в репозитории нет ни его конфигурации, ни артефакта запуска.

Почему живой сборки нет

Почему живой сборки нет

Публикация невозможна: весь интерфейс обращается к маршрутам /api/screeps/* bundled Express-сервера и требует токен аккаунта, который в текущем коде хранится в localStorage браузера. Статический хостинг дал бы мёртвый экран и открытую цель для кражи токена.

Назад к описанию проекта ↗