Visión general
Cómo está construido AI Core - repositorios, la compilación, las reglas que sigue cada script.
AI Core es TypeScript de principio a fin. Cada recurso sigue la estructura de overextended/fivem-ts; Lua solo se usa para el puente ESX / QB / Qbox dentro de ai-core y para la parte Lua de ai-lib.
Repositorios
| Repositorio | Qué |
|---|---|
| Carpeta del servidor | server.cfg y los demás archivos cfg, recipe/ (txAdmin), tools/, template/, las reglas y la documentación para herramientas de IA. También es la raíz del workspace de bun. |
ai-core y cada ai-* | Un repositorio por script. La compilación (dist/, fxmanifest.lua) se incluye en el repositorio, así que los servidores funcionan sin herramientas de compilación. |
packages | Los paquetes npm: @aicore-fivem/lib (utilidades), @aicore-fivem/mysql (motor de base de datos), @aicore-fivem/shared (contratos entre recursos), @aicore-fivem/build (pasos de compilación). |
Compilación
bun install # en la carpeta del servidor: enlaza los paquetes y cada recurso
bun run build # cada recurso (unos 40 s), o: bun run build ai-core ai-fuel
bun run typecheck
bun run lintDentro de un recurso, los mismos scripts se ejecutan solo para ese recurso; bun run dev vigila los cambios. fxmanifest.lua se genera a partir de package.json: nunca lo edites a mano. Tras una compilación, reinicia el recurso (bun tools/rcon.ts "ensure ai-fuel") o todo lo que va después de ai-core (bun tools/restart.ts).
Reglas que sigue cada script
- El servidor decide. Cada petición del cliente pasa por la puerta de la lib (
onClientEvent/onClientCallback): comprobación de jugador real, límite de frecuencia, guardas (administrador, tiene personaje, cerca de un punto), un parser de argumentos. El dinero, los objetos y los permisos nunca cambian en el cliente. - Snapshot y delta. Los datos en vivo llegan a los clientes como un snapshot y después solo los cambios, solo a quien los necesita. Sin polling, sin señales de "cambió, vuelve a pedirlo".
- Primero la lib. Los puntos de interacción, blips, zonas, keybinds, comandos, menús, progreso, vehículos, state bags y el trabajo periódico salen de
@aicore-fivem/lib; una segunda copia escrita a mano es un defecto. - Todo en el panel. Los ajustes que afina el dueño del servidor están en el panel de administración (
schema.ts+data/*.json), nunca en un archivo de configuración. - A través de AI Core. Los objetos, las llaves de vehículos, las alertas, el teléfono, el clima, la prisión, la ropa y las muertes pasan por las capas de AI Core, nunca por los exports de un script concreto.
- Escala primero. Las colecciones se planifican para millones de registros y se miden con benchmarks.
Las reglas completas están en la carpeta del servidor: CLAUDE.md y .claude/rules/.