Обзор
Как устроен AI Core - репозитории, сборка, правила, которым следует каждый скрипт.
AI Core целиком написан на TypeScript. Каждый ресурс следует структуре overextended/fivem-ts; Lua используется только для моста ESX / QB / Qbox внутри ai-core и для Lua-части ai-lib.
Репозитории
| Репозиторий | Что |
|---|---|
| Папка сервера | server.cfg и другие cfg-файлы, recipe/ (txAdmin), tools/, template/, правила и документация для ИИ-инструментов. Это также корень bun workspace. |
ai-core и каждый ai-* | Один репозиторий на скрипт. Сборка (dist/, fxmanifest.lua) хранится в репозитории, поэтому серверы работают без инструментов сборки. |
packages | npm-пакеты: @aicore-fivem/lib (вспомогательные функции), @aicore-fivem/mysql (движок базы данных), @aicore-fivem/shared (контракты между ресурсами), @aicore-fivem/build (шаги сборки). |
Сборка
bun install # в папке сервера: связывает пакеты и все ресурсы
bun run build # все ресурсы (около 40 с), или: bun run build ai-core ai-fuel
bun run typecheck
bun run lintВнутри ресурса те же скрипты работают только для этого ресурса; bun run dev следит за изменениями. fxmanifest.lua генерируется из package.json: никогда не редактируйте его вручную. После сборки перезапустите ресурс (bun tools/rcon.ts "ensure ai-fuel") или всё, что идёт после ai-core (bun tools/restart.ts).
Правила, которым следует каждый скрипт
- Решает сервер. Каждый запрос клиента проходит через шлюз библиотеки (
onClientEvent/onClientCallback): проверка, что это настоящий игрок, ограничение частоты, условия доступа (администратор, есть персонаж, рядом с точкой), парсер аргументов. Деньги, предметы и права никогда не меняются на клиенте. - Снимок и дельта. Живые данные уходят клиентам одним снимком, затем только изменения и только тем, кому они нужны. Никакого опроса, никаких сигналов «изменилось, загрузи заново».
- Сначала библиотека. Точки взаимодействия, блипы, зоны, привязки клавиш, команды, меню, прогресс, транспорт, state bags и периодическая работа берутся из
@aicore-fivem/lib; вторая копия, написанная вручную, считается дефектом. - Всё в панели. Настройки, которые меняет владелец сервера, находятся в админ-панели (
schema.ts+data/*.json), а не в конфиг-файле. - Через AI Core. Предметы, ключи от транспорта, вызовы, телефон, погода, тюрьма, одежда и смерти проходят через слои AI Core, а не через экспорты конкретного скрипта.
- Сначала масштаб. Коллекции рассчитаны на миллионы записей и измеряются бенчмарками.
Полные правила лежат в папке сервера: CLAUDE.md и .claude/rules/.