Alpha
Agressif et opportuniste
Faites pression sur le leader, prenez l'ouverture. Un parti pris de départ, pas un scénario.
Projet 04 · Systèmes multi-agents · Grok Bot · MCP · Agents IA · Simulation · Interface expérimentale
Dix agents. Un monde. Des objectifs différents.
Grok Arena est une expérience multi-agents qui donne des rôles aux agents d'IA autonomes, des capacités limitées et un environnement partagé où leurs décisions peuvent être observées comme des actions plutôt que cachées dans une conversation.

Le jeu est l'environnement observable. L'expérience est l'architecture d'agent qui l'entoure.
01 · La question
Que se passe-t-il lorsque les agents IA ne se contentent pas de répondre, mais agissent ?
L’interface montre comment les décisions de chaque agent changent le monde.
02 · Le casting
Agents de joueurs
Agressif et opportuniste
Faites pression sur le leader, prenez l'ouverture. Un parti pris de départ, pas un scénario.
Diplomatique, coopératif, défensif
Recherche des échanges, des alliances et de la protection. La coopération est une stratégie, pas une règle.
Exploratoire et expérimental
Essaie le mouvement sous-utilisé et teste de nouvelles mécaniques. Curieux exprès.
Adaptatif
Surveille ce qui fonctionne, puis le contrecarre, le copie ou le casse.
Parti pris de départ de la charte de chaque agent, servi au bot lors de la connexion. Ce sont des préjugés, pas des scénarios : la charte dit à chaque joueur que les préjugés sont un point de départ et que le monde peut changer.

Agents système
03 · Topologie
04 · La boucle des arènes
En mode GROK_BOT, une correspondance correspond à 20 tours de décision discrets. Chaque tour ouvre une fenêtre de décision de 30 secondes par défaut (configurable entre 3 et 120 secondes) et se résout tôt dès que les quatre joueurs se sont soumis.
TOUR 01 / 20fenêtre 30 s
05 · Le système d'action
COLLECT+3 ressources · −2 énergieATTACK−5 énergie · vole-en 3 en cas de succès · a besoin d'un objectifDEFEND−2 énergie · 50% de réduction des dégâts, maintenu 7 sTRADEressources d'échange · objectif et montantIDLE existe dans le moteur mais ne peut pas être choisi par un agent. La diplomatie (messages publics, offres commerciales, alliances, politiques permanentes) transite par des outils distincts et ne change jamais la donne par elle-même.
PlayerDecision action COLLECT | ATTACK | DEFEND | TRADE target player id | null amount integer | null publicReason string, max 140 chars + matchId, turnId (MCP)
Exemple · agent Bêta
DEFEND · “Holographic shield up”06 · Grok Bot
Le projet a été conçu autour de Grok Bot nommés et persistants, un par rôle d'arène, plutôt que d'une instance modèle prétendant être chaque acteur. Chaque bot possède une identité, une charte et un ensemble de capacités limité.




Dix clients OAuth, un par bot, avec PKCE, métadonnées de découverte et jetons signés sans état. Construit et testé unitairement. Le chat de bureau Grok Bot n'a pas exposé les outils d'arène de manière fiable, cette voie est donc restée expérimentale.
Le serveur Next.js réveille chaque agent en tant que processus Grok CLI sans tête dans son propre espace de travail isolé, inscrit sur la liste verte du serveur MCP de ce bot, avec une session pouvant être reprise par agent afin que la mémoire persiste au fil des tours et des générations. Il s’agit du runtime qui s’est réellement exécuté.
07 · État de la connexion
Moteur, serveur MCP de 30 outils, authentification par bot, OAuth avec PKCE, dix chartes, orchestrateur avec sessions persistantes, plugins de connecteurs, salle de contrôle 3D, enregistreur de replay, 125 tests.
Les dix Grok Bot ont atteint /api/mcp avec leurs propres informations d'identification, ont terminé l'initialisation et la liste d'outils ; au moins un joueur a exécuté une vraie lecture. Dix espaces de travail Grok CLI ont été provisionnés.
Matchs complets en mode local, y compris le pipeline de règles et le conseil d'évolution. Une campagne orchestrée par sept agents a exécuté la chaîne du conseil dans l'ordre prévu le 25 août 2026.
Un match complet de 20 tours piloté entièrement par des agents Grok externes n'a pas été préservé. Alpha, Beta et Atlas n'ont pas établi de sessions CLI lors de cette exécution. Aucun échange OAuth provenant d'un connecteur Grok n'a été capturé. Aucun journal d'exécution ne survit sur le disque.
08 · Protocole de contexte modèle
L'arène expose un serveur MCP écrit à la main : JSON-RPC sur HTTP diffusable, trois versions de protocole, pas de SDK. Une trentaine d'outils existent ; un bot ne voit que ceux que son rôle lui permet.
get_charterget_match_stateget_rulesget_recent_eventschoose_actionget_public_chatpost_public_messagepropose_tradeaccept_tradereject_tradepropose_alliancebreak_allianceset_policyreport_observationget_game_telemetryreport_difficultyget_reportspropose_interventionget_constitutionget_pending_proposaljudge_proposalget_match_summaryget_generation_historypropose_evolutionget_arena_statusget_agent_statusesget_wake_planstart_matchclose_match_phasestart_evolution_phaseLa capacité est explicite. Un agent ne reçoit pas d'accès car il est intelligent. Son rôle détermine ce qu'il peut appeler.
09 · Limites
Chaque requête adressée à /api/mcp comporte un identifiant par robot dérivé d'un secret principal (HMAC-SHA256, comparaison en temps constant). Les appels non authentifiés sont rejetés avant l'initialisation.
tools/list renvoie uniquement les outils du rôle de l'appelant ; outils/revérifications d’appels. Tout autre outil renvoie UNAUTHORIZED et est écrit dans le journal d’audit.
Choose_action rejette les arguments ActorId ou AgentId. Un bot ne peut pas prétendre être un autre bot.
Les changements de règles sont un DSL de type 12 avec des limites numériques strictes. Le modèle configure un mécanicien ; il ne soumet jamais de code.
Dix règles au-dessus de chaque agent, servies au juge. Règle 9 : les délais d'attente sont résolus comme NO_ACTION ; aucun agent ne peut être usurpé ou substitué.
Chaque appel d'outil est enregistré avec l'agent, l'outil, le tour, l'indicateur accepté et la latence, dans un tampon en anneau affiché dans le LAB. Aucun jeton n’y apparaît jamais.
Les décisions sont validées sur le serveur, dans la route xAI et à nouveau sur le client avant que le moteur ne les nettoie et les exécute.
La clé xAI est lue dans un module avec une protection de navigateur ; les tests affirment qu'il n'atteint jamais le bundle client.
10 · Moteur de jeu
La sortie du modèle ne fait jamais muter le monde. Cela devient une décision structurée qui passe la validation du schéma, la validation des règles et une désinfection finale avant qu'un moteur déterministe ne la résolve et n'émet des événements.
Ce que possède le moteur
11 · Le monde 3D
Enregistré depuis l'arène en local avec des agents fictifs. Chaque animation que vous voyez est un événement de moteur lu par le moteur de rendu.


12 · Observabilité
Rien sur cette page ne montre le raisonnement caché d’un modèle. Ce que l'arène enregistre, c'est ce qu'un observateur peut légitimement voir : les actions choisies pour une raison publique, les événements tournants, les transitions d'état, les appels d'outils, les résultats de validation, les interventions, les scores et les délais d'attente.

L’arène enregistre les actions des agents pour que je puisse étudier leur déroulement.
13 · Provocations
Un rôle système peut introduire des interventions limitées. Le Provocateur propose le plus petit changement temporaire par rapport à un DSL sur liste blanche ; le juge l'approuve ou le rejette ; le moteur l'active à travers le flux de mutation du monde.
Exemples DSL documentés
ACTION_COST_MODIFIER · action ATTACK · delta +3 · consecutiveOnlyRESOURCE_REWARD_MODIFIER · delta +1DEFENSE_MODIFIER · blockedStealDelta −1 · energyRefund 2RESOURCE_SPAWN_MODIFIER · capDelta +2 · intervalDelta −2Douze types d'effets avec des limites numériques strictes. En mode local, le pipeline est scripté à partir d'un pool de quatre interventions (Combat Fatigue, Greed Tax, Shield Surge, Overcharge) ; en mode GROK_BOT, les mêmes gestionnaires acceptent les propositions des robots.


14 · Juge et constitution
L’approbation nécessite la légalité, l’équité et la jouabilité pour réussir. Le juge ne peut pas jouer et ne peut pas réécrire une proposition. Règle 9 : les délais d'attente sont résolus comme NO_ACTION ; aucun agent ne peut être usurpé ou substitué. Règle 10 : toutes les activités des agents doivent être auditables et explicables publiquement.
15 · Évolution
Après MATCH_ENDED, Evolution peut proposer au plus une mécanique permanente pour la génération suivante, issue du même DSL, et le Juge doit encore dire oui. Les mécaniciens approuvés sont intégrés à la prochaine génération ; chaque résumé de match enregistre ses règles, ses tours et ses fenêtres afin que les générations restent comparables. La mémoire du joueur persiste tout au long des sessions CLI, une par agent et par expérience.
Statut : les outils d'évolution et l'historique des générations sont implémentés ; la surcouche « Evolution Council » en mode local est scriptée. Aucun mécanicien permanent créé par un bot et issu d'une génération externe terminée n'est enregistré.
16 · Architecture
MOCKPar défaut. Tous les agents simulés localement ; le scénario du conseil est scénarisé.
DIRECT_XAILes joueurs peuvent appeler l'API xAI directement avec un outil de choix_action forcé ; une nouvelle tentative, puis une simulation de repli pour cette seule décision. Sélection par défaut : Alpha uniquement.
GROK_BOTDix vrais robots via MCP. Les fournisseurs sont désactivés ; les décisions arrivent par le pont ; aucune solution de repli d'aucune sorte.
17 · Développement
Échafaudage Next.js, puis l'arène 3D d'abord : effets, environnement, nœuds de ressources, directeur.
Contrat de décision et validation, fournisseur xAI avec un outil de choix_action forcé, enregistreur de replay, routage du fournisseur et panneau LAB ; premiers essais.
Serveur d'autorisation OAuth avec PKCE et métadonnées de découverte, construit et testé en une seule session.
Exécuteur Grok CLI avec sessions persistantes par agent ; le guide du connecteur.
Orchestrator écrit et exécuté : sept agents sur dix ont établi des sessions dans l'ordre en chaîne prévu (joueurs, puis Observateur, Difficulté, Provocateur, Evolution, Juge).
Plugins de connecteur par bot et manifestes de marché ; dix Grok Bot connectés via MCP, statut visible dans le LAB.
Enregistrements, captures d'écran et l'article.
Passe de durcissement : repli de la CLI désarmé par défaut, secrets supprimés de l'exemple d'environnement, chartes et moteur affinés, tests pour les invariants d'honnêteté.
Reconstruit à partir de l'historique des fichiers : le référentiel contient une validation d'échafaudage et tout le reste non validé, donc l'ordre provient des horodatages, des marqueurs de session et des documents, et non de git.
18 · Ingénierie
La grande idée
Je voulais voir quels outils les agents utilisaient, s’ils respectaient les permissions et comment leurs décisions s’influençaient mutuellement.
Table de vérité
| Calque | Statut | Preuve |
|---|---|---|
| Interface utilisateur de l'arène (3D + HUD) | Démontré | Fonctionne localement ; chaque état de cette page en a été capturé. |
| Moteur de jeu | Démontré | Les correspondances complètes sont résolues de bout en bout en mode local ; 125 épreuves. |
| Agents de joueurs | Démontré / Construit | Heuristique simulée démontrée ; Chemin d'appel de fonction xAI construit et testé unitairement, aucun appel en direct capturé ; Soumissions GROK_BOT via MCP construites. |
| Agents système | Connecté / Scripté | Ensembles d'outils réels MCP connectés en mode GROK_BOT. En mode local, le scénario du conseil est scénarisé à partir d'un pool de quatre règles. |
| Outils MCP (30) | Démontré | Les dix robots se sont tous authentifiés, ont répertorié leurs outils de rôle et au moins un a exécuté get_match_state, comme indiqué dans le LAB. |
| Authentification | Démontré / Construit | Jetons de porteur par robot utilisés dans les connexions en direct. OAuth avec PKCE construit et testé ; aucun échange de jetons externe capturé. |
| Intégration Grok Bot | Expérimental | Dix robots nommés existent et sont connectés ; plusieurs ont signalé que le connecteur était en panne ou illisible. Le runtime stable est devenu l'orchestrateur Grok CLI. |
| Exécution en direct multi-agents | Expérimental | Sept des dix agents dirigeaient la chaîne du conseil le 25 août ; un match complet de 20 tours à entraînement externe n'a pas été préservé. |
| Replay / télémétrie | Construit | L'enregistreur, le journal d'audit et la télémétrie existent en mémoire ; la visionneuse de relecture n'est pas livrée et aucun journal d'exécution ne survit. |
| Déploiement en production | Aucun | Local uniquement, exposé via un tunnel temporaire lors d'expériences. |
CONSTRUIT : existe et fonctionne localement. CONNECTÉ : communiqué avec le système Grok externe. DÉMONTRÉE : exécuter bout à bout et observer. EXPÉRIMENTAL : partiel, échafaudé ou instable. Tous les identifiants, secrets et adresses de tunnel ont été exclus de cette page et de ses supports.