Mes projets personnels

Visionnage synchronisé, jeu de rôle narratif, développement depuis un téléphone : voici les usages, les choix techniques et l’état de chaque projet.

7 projetsProduction, développement et lancement

MÉTHODE DE DÉVELOPPEMENT ASSISTÉ PAR IA

  1. 1. Cadrer

    Avec un agent conversationnel, je définis le besoin, les contraintes et les critères d’acceptation. Je transmets aux agents les spécifications, le contexte et les accès aux outils de développement et de test.

  2. 2. Développer

    Codex et Claude Code implémentent les tâches avec les instructions, rôles et skills que j’ai préparés. Je garde les arbitrages et les revues.

  3. 3. Tester

    Les agents manipulent réellement l’application, dans le navigateur, sur appareil ou via la CLI selon le projet. Ils observent les résultats, diagnostiquent les écarts et retestent après correction.

  4. 4. Valider

    Je teste personnellement l’application, vérifie les critères d’acceptation et donne la validation finale.

Développement et tests se répètent jusqu’à validation des critères définis au cadrage.

Technologies des projets

Des projets liés à mes usages

Regarder plusieurs streams ensemble, jouer avec une IA maître de jeu ou développer depuis un téléphone : mes projets partent de ces besoins.

7 projets3 en productionprojets personnels

Outils de développement :Claude CodeCodexCursor

Voir toute la stack technique

Technologies utilisées dans mes projets, regroupées par domaine.

Frontend & UI
Angular 21Angular SignalsAngular SSGAstro 5Fuse.jshls.jsJavaScriptjsPDFNode.jsPostCSSPySide6 (Qt)React 18RxJSSCSSTailwind CSSTailwind CSS 4TypeScriptViteVite 8
Backend & APIs
AxumFastAPIJWT + bcryptOBS WebSocketPydantic v2PythonPython 3.12RustTyper + RichWebSocket
IA, voix & ML
ChatGPT (OpenAI)Claude (Anthropic)CUDAGemini (Google)Ollama / llama.cpp / vLLMOpenAIPyTorchQwen-TTS (Alibaba)Whisper (OpenAI)
Mobile & multiplateforme
AndroidFlutterLinux (X11 / Wayland)PipeWireRustDesk (fork)
Intégration & DevOps
DockerEd25519FFmpegNDI SDKOpenCVSQLiteSQLite asynchrone
Autres
CargoCloudflare PagesMCP (Model Context Protocol)Media3 / ExoPlayerMineflayerngx-translatepnpmPWA / Service WorkerSolid 1.9Tauri 2VitestWASMWeb Workers
Projet 01

MultiPOV — visionnage multi-POV synchronisé YouTube, Twitch & Kick

En production

Plusieurs points de vue YouTube, Twitch et Kick synchronisés dans une même régie. Le web est public ; l’app Android est testée sur appareil et partage le cœur Rust/WASM.

  • Web public en productionwatchmultipov.app est en ligne : sessions multi-POV partageables, PWA Solid + TypeScript et interface bilingue FR/EN.
  • Cœur média Rust/WASMUn moteur Rust commun porte les règles de sync, de clock, d'offsets, de liveness et de fallbacks ; il est exposé en WASM côté web et compilé en natif côté Android.
  • Session encodée dans l'URLToute la configuration tient dans le chemin /s/, sans compte ni backend de session : un lien collable en commentaire ou en message privé.
  • App Android et contrôles sur appareilL'app Tauri 2 embarque la régie web avec un cœur Rust partagé, des players natifs Media3/ExoPlayer et une sync live instrumentée pour les contrôles sur appareil.
RustWASMTauri 2AndroidMedia3 / ExoPlayerSolid 1.9TypeScriptVite 8Cloudflare Pageshls.jsWeb WorkersPWA / Service WorkerVitestCargopnpm

À voir en pratique

Régie multi-POV en production

Ouvrez l’application web pour créer une session partageable et comparer les points de vue YouTube, Twitch et Kick.

Comment je l’ai développé

  1. Implémenter le changement

    Modifier le code selon la tâche et les critères définis.

  2. Tester la WebView

    Piloter le parcours via MCP/CDP sur un build identifié.

  3. Observer le natif

    Consulter les logs ADB si le diagnostic l’exige.

  4. Corriger l’écart

    Traiter la cause identifiée et revoir le correctif.

  5. Retester le parcours

    Répéter les contrôles adaptés au scénario.

Le rendu vidéo natif se vérifie séparément du DOM, avec des captures et les mesures SyncBench adaptées au scénario.

Outillage :
CodexClaude CodeMCP WebView / CDPADBSyncBench

Mon rôle Je prépare le workflow sur téléphone, les instructions et skills, les scénarios et les critères ; je revois les correctifs et les outils de test avant de qualifier la version.

Comment ça marche

MultiPOV rassemble plusieurs points de vue YouTube, Twitch et Kick pour les sessions Discord et les événements. En VOD, la synchronisation audio mesure les décalages ; une horloge et des offsets maintiennent ensuite l’alignement. Le web est en production sur watchmultipov.app (Solid, TypeScript, Vite, PWA et hls.js). Le moteur Rust commun est exposé en WASM sur le web et compilé en natif dans l’app Android Tauri 2. Celle-ci embarque la régie web, des lecteurs Media3/ExoPlayer et une synchronisation live instrumentée pour les tests sur appareil.

  • Sync VOD web : GCC-PHAT mesure les décalages audio, puis une horloge maître et des offsets maintiennent les POV alignés après pause, seek ou changement de layout
  • Cœur Rust commun : moteur média partagé, exposé en WASM côté web et compilé en natif côté Android pour centraliser le timing, les offsets, les capacités provider, les erreurs et les fallbacks
  • YouTube, Twitch et Kick dans une même vue, avec une couche provider commune pour gérer les différences entre plateformes
  • Sessions partageables sans compte, encodées dans le chemin de l'URL (/s/), portables en commentaire ou en message privé
  • Moteur de disposition configurable : grille auto, spotlight, theater et empilements ; glisser, redimensionner et dispositions sauvegardées (localStorage)
  • Mode plein écran immersif : Fullscreen API sur toute la régie, avec verrouillage de l'orientation paysage et Wake Lock pour garder l'écran allumé pendant la lecture
  • Overlay de chat unifié (Twitch/YouTube/Kick) : superposition éphémère repositionnable par POV ou dock latéral, messages fusionnés avec une pastille de couleur par plateforme et alignés sur la timeline en VOD
  • App native Android : Tauri 2, régie web embarquée, cœur Rust commun, players natifs Media3/ExoPlayer et sync live instrumentée pour les contrôles sur appareil
  • Développement assisté par Claude/Codex : spécifications, implémentation, revue et vérifications en production et sur appareil, avec commits délimités
Projet 02

Aidventures — jeu de rôle narratif multijoueur avec une IA maître de jeu

Lancement production

Une IA mène la partie ; le moteur résout les règles et contrôle les changements d’état. Les joueurs créent et partagent leurs univers.

  • Un système de jeu pensé pour le LLMMécaniques originales (2d6+stat, Vœux & Horloges, GM Moves) et moteur déterministe (HP, momentum, checkpoints) : le modèle reçoit les résultats des règles pour construire la narration.
  • Drift gate à 19 invariants19 invariants contrôlent chaque sortie du LLM ; les valeurs hors limites sont bornées avant application à l’état du jeu.
  • Des modèles selon la tâcheHaiku valide et extrait, Sonnet joue le récit, Opus tranche les dilemmes — le tout basculable vers Gemini, OpenAI ou un modèle local.
  • Un cap pour le joueurVœux & Horloges tracent un chemin clair, et à chaque tour le jeu propose trois pistes d'action — ou laisse écrire une réponse en texte libre.
Python 3.12FastAPIWebSocketPydantic v2Claude (Anthropic)Gemini (Google)OpenAIOllama / llama.cpp / vLLMSQLite asynchroneViteDockerQwen-TTS (Alibaba)JWT + bcryptTyper + Rich

À voir en pratique

Lancement de production

Explorez le jeu narratif : l’IA mène la partie et le moteur contrôle les règles et l’état du jeu.

Comment je l’ai développé

  1. Implémenter le moteur

    Traiter le cœur complexe avant l’interface.

  2. Exécuter un parcours

    Manipuler le jeu via la CLI partagée.

  3. Diagnostiquer l’écart

    En audit, comparer état du jeu, échanges LLM bruts et anti-drift.

  4. Corriger la cause

    Modifier le moteur ou les outils selon le diagnostic.

  5. Rejouer et vérifier

    Rejouer le scénario et contrôler les régressions.

La CLI partage le moteur du web ; le replay relit une trace sans nouvel appel LLM. Les échanges bruts sont capturés dans les parcours d’audit instrumentés.

Outillage :
CodexClaude CodeCLI Typer / RichpytestTraces JSONL / replay

Mon rôle Je définis les règles et l’ordre de développement, rends le moteur accessible aux agents et prépare le contexte ; je revois les diagnostics, les traces et les critères de test.

Comment ça marche

Plateforme web de TTRPG textuel multijoueur où une IA générative incarne le maître de jeu. Système de jeu original (2d6+stat, GM Moves, Trait Cards, Vœux & Horloges, 5 modes de pacing) sécurisé par une « drift gate » de 19 invariants qui valide chaque sortie du LLM avant application de l'état. Pensée pour Claude (Anthropic) en première intention, l'application reste utilisable avec Gemini, OpenAI ou un modèle local (Ollama, llama.cpp, vLLM via API OpenAI-compatible) grâce à une architecture d'adaptateurs. La communauté crée ses propres univers via un wizard 11 étapes en 4 phases (import Fandom, génération assistée par IA, profils vocaux, lore par saison/épisode, traduction) et publie après modération. Backend Python 3.12 / FastAPI + WebSocket, SQLite asynchrone, frontend Vite, pool TTS multi-conteneurs Qwen et tier gratuit avec monnaie virtuelle Flares.

  • Système de jeu original « dice-first » : le lancer 2d6+stat est résolu par le moteur AVANT l'appel au LLM (jet figé transmis comme fait établi), Position & Effect déterministes, 5 modes de pacing, Bold Move, HP/Momentum gérés à 100 % côté moteur (jamais par le LLM)
  • Objectifs & horloges pilotés par le LLM : l'agent Architect définit les Vœux (objectifs de 0 à 10) et des Horloges à 4, 6 ou 8 segments — au lancement ou créées dynamiquement en partie — que le moteur fait progresser et agrège de façon déterministe
  • Drift gate à 19 invariants : chaque réponse de l'IA est validée avant patch d'état (clamp automatique en cas de dérive sur HP, momentum, pacing, position, effets)
  • Multi-provider via adaptateurs : optimisé pour Claude (Sonnet pour les tours, Haiku pour la validation et l'extraction, Opus pour les dilemmes moraux), aussi compatible Gemini, OpenAI et modèles locaux (Ollama, llama.cpp, vLLM) via API OpenAI-compatible
  • Création communautaire d'univers : wizard 11 étapes en 4 phases avec import Fandom (scraping → extraction Haiku → builder Sonnet), boutons « AI Generate » par étape, profils vocaux WAV par personnage/langue, enrichissement de lore par saison/épisode et traduction EN ↔ FR
  • Cycle de vie & modération : draft → pending → published → flagged → removed, signalements utilisateurs, procédure de takedown DMCA/LCEN/DSA, notifications email aux créateurs
  • Landing publique + SPA authentifiée : galerie d'univers servie en HTTP cache 60 s, redirection auth sur /app, comptes utilisateurs (JWT, bcrypt, OAuth, magic-link)
  • Tier gratuit avec monnaie virtuelle Flares : crédit à l'inscription, claim quotidien, publicités récompensées (CSP dynamique par utilisateur, exclusion service worker)
  • Audio immersif à voix clonées : pool TTS Qwen multi-conteneurs Docker synthétisant une voix clonée par personnage et par langue (à partir d'un échantillon de référence), avec dispatch least-connections, semaphore par utilisateur, cache LRU des profils vocaux, intro musicale par univers et catalogue de pistes classées par humeur
  • Outils d'observabilité : traces JSONL, replay 0-API, audit narratif/mécanique, tracker de coûts par session, panel admin avec auth HMAC
Projet 03

Nomad — Bureau à distance Joy-Con + voix pour le codage mobile sous Linux

Accès sur demande

Depuis un téléphone Android, pilotez Claude Code ou Codex sur votre machine Linux distante. Dictez vos prompts ; le Joy-Con contrôle la souris et les raccourcis, sans clavier physique.

  • Le téléphone comme poste nomadeL'Android affiche la machine Linux distante ; le Joy-Con tenu dans l'autre main pilote la souris avec son stick et déclenche les raccourcis CLI par combinaisons de boutons.
  • Dictée vocale vers le terminalDepuis l'Android, un clic lance la dictée : le STT local transcrit la parole et l'injecte directement dans Claude Code, Codex ou un autre CLI sur la machine Linux.
  • Orchestration côté LinuxDès qu'un client RustDesk se connecte, l'écran, l'audio et la transcription vocale sont orchestrés automatiquement côté Linux.
  • Écosystème conçu en soloFork RustDesk adapté, serveur de licence Ed25519 autonome et site bilingue de distribution.
RustAxumSQLiteEd25519RustDesk (fork)FlutterAstro 5Tailwind CSS 4Linux (X11 / Wayland)PipeWire

À voir en pratique

Demander un accès à Nomad

Envoyez un message via le formulaire sur nomadrust.dev pour obtenir un accès. Le site présente le fonctionnement Android/Linux, la dictée et les commandes Joy-Con.

Comment je l’ai développé

  1. Cadrer le retour d’usage

    Définir le comportement attendu et la tâche du rôle concerné.

  2. Implémenter l’adaptation

    Confier la partie Rust, Flutter ou patches à Claude Code.

  3. Contrôler le composant

    Exécuter les tests adaptés ; tests Rust et Clippy côté Rust.

  4. Corriger et retester

    Traiter les écarts, puis relancer les contrôles.

  5. Revoir l’intégration

    Vérifier la cohérence du parcours Android/Linux.

Claude Code intervient sur les adaptations Rust, Flutter, patches et distribution autour du socle RustDesk.

Outillage :
Claude CodeRôles spécialisésTests RustClippyGitHub Actions

Mon rôle Je définis le parcours Android/Linux, prépare le contexte de chaque rôle et arbitre les adaptations à RustDesk ; je vérifie l’intégration et les comportements attendus à partir de mon usage.

Comment ça marche

Nomad permet de développer depuis un téléphone Android connecté à un poste Linux via RustDesk. Le téléphone affiche le bureau distant et sert à la dictée ; un Joy-Con Nintendo Switch, tenu dans l’autre main, contrôle la souris et les raccourcis avec des profils configurables pour Claude Code, OpenCode ou Codex. Un daemon Linux orchestre écran, audio et transcription à la connexion du client mobile. Le projet comprend un fork RustDesk adapté (gamepad, voice call, identité visuelle), un serveur de licence Axum + SQLite + Ed25519 avec grâces hors-ligne et d’expiration, et le site bilingue nomadrust.dev. L’accès se fait sur demande via le formulaire du site.

  • Conception du concept : utiliser un Android comme terminal vocal pour piloter un poste Linux distant via RustDesk
  • Intégration Joy-Con Nintendo Switch : périphérique d'appoint qui libère le téléphone pour la dictée — déplacement souris via stick analogique et raccourcis clavier déclenchés par combinaisons de boutons
  • Profils de touches configurables (Claude code, Open code, codex...) offrant un nombre d'actions suffisant pour piloter ces CLI sans clavier physique
  • Dictée vocale pour parler au LLM : l'appli Android ouvre un appel vocal (voice call RustDesk) vers le daemon, qui transcrit la voix en local (Voxtype / Whisper large-v3-turbo) et injecte le texte comme frappe clavier (wtype sur Wayland, xdotool sur X11) directement dans le CLI voulu (Claude Code, Codex…) — on parle, le texte s'écrit dans le terminal
  • Daemon Linux orchestrant automatiquement écran, audio et transcription dès qu'un client mobile se connecte
  • Fork RustDesk avec patches dédiés (mapping gamepad Joy-Con, voice call, rebrand)
  • Serveur de licence autonome (Axum + SQLite + Ed25519) avec grâces hors-ligne et expiration
  • Site web bilingue FR/EN (Astro 5 + Tailwind CSS 4) pour la distribution
  • Tarification prévue : 5 €/mois ou 50 € pour une licence à vie, sans essai gratuit ; V1.0 limitée à Linux
Projet 04

Portfolio bilingue — Angular 21 et génération statique

Production

Un site FR/EN pré-rendu avec Angular, un CV PDF généré depuis les données du portfolio et un fond astronomique animé.

  • Lighthouse 100/100Angular 21 avec génération statique. Indicateurs Core Web Vitals annoncés : LCP < 2,5 s, INP < 200 ms, CLS < 0,1.
  • Sélection astronomique quotidienneChaque jour, le pipeline sélectionne une vraie image astronomique de NASA APOD, ESA/Hubble, ESA/Webb ou ESO, puis écarte les visuels plats, annotés ou répétés grâce à des filtres dédiés.
  • Fond animé en couchesFragments Voronoi, scintillements, champ d’énergie et étoiles filantes animent le fond. Les couleurs de l’image alimentent les surfaces, les cartes et les accents.
  • Easter egg stellaireUne étoile filante traverse parfois l'écran, avec une couleur prélevée dans les zones lumineuses et une légère traînée répercutée dans les fragments.
Angular 21TypeScriptTailwind CSS 4Angular SSGngx-translateRxJSAngular SignalsSCSSPostCSSjsPDF

À voir en pratique

Le fond animé, en direct

Comparez l’image source avec le fond animé et ses effets.

Comment ça marche

Portfolio FR/EN développé avec Angular 21 et pré-rendu en HTML statique. Il combine routes canoniques par langue, métadonnées SEO et partage social, mise en page responsive Tailwind CSS 4 et génération de CV PDF. Le fond astronomique est sélectionné quotidiennement ; son animation en couches dispose d’un rendu statique selon les capacités et les préférences de l’appareil.

  • Génération statique Angular 21 : HTML pré-rendu pour les routes publiques
  • Core Web Vitals : LCP < 2,5 s, INP < 200 ms, CLS < 0,1
  • Score Lighthouse 100/100 sur performance, accessibilité, bonnes pratiques et SEO
  • Switch bilingue FR/EN via routes canoniques : FR sur /, EN sur /en/*
  • Fond cosmique quotidien multi-sources : un script (images:fetch via GitHub Actions) sélectionne chaque jour une vraie image issue de NASA APOD, ESA Hubble, ESA Webb ou ESO Picture of the Week ; filtres de luminosité et d'entropie, garde OCR, whitelist des hôtes, denylist et garde anti-stagnation écartent les images plates, annotées ou répétées, avec fallback sur cache local
  • Fond animé en couches : environ 300 fragments Voronoi modulés par un champ d'énergie, scintillements détectés sur les zones lumineuses et étoiles filantes occasionnelles
  • Animation sous contrainte : boucle d'énergie plafonnée à 30 FPS, calcul des fragments déporté dans un Web Worker, chargement différé et désactivation sur les profils mobiles ou à faible capacité
  • Design glassmorphism : surfaces translucides en backdrop-filter (blur + saturate), rotation de teinte par carte et échantillonnage du fond (photo-tint) pour des reflets cohérents
  • Animations CSS progressives entre les pages et au scroll, avec respect du mouvement réduit
  • Générateur de CV PDF : création à la demande depuis les données du portfolio avec jsPDF
  • Tailwind CSS 4 pour la mise en page responsive et les animations
  • Images WebP et chargement différé pour réduire les temps de chargement
  • Métadonnées dynamiques : Open Graph, Twitter Cards et JSON-LD
  • CI/CD GitHub Actions : build statique pré-rendu et déploiement SFTP automatiques sur chaque push
  • Angular Signals, composants standalone, pré-rendu statique et cache HTTP
Projet 05

Analyseur Intelligent de Podcast — IA générative et transcription multi-moteurs

En développement

Transformer des heures de podcast en données structurées et cherchables, avec un budget d'API maîtrisé.

  • Anti-hallucination WhisperDétection et correction des erreurs de transcription qui réduisent de 55 % les appels à l'API tout en préservant la précision.
  • Métadonnées extraites par IAInvités, sujets et moments clés sortis automatiquement avec des timestamps précis, prêts pour une recherche floue en temps réel.
PythonReact 18TypeScriptChatGPT (OpenAI)Whisper (OpenAI)PyTorchFFmpegCUDAViteTailwind CSSFuse.jsSQLite

À voir en pratique

Démo en développement

Ouvrez la démo pour rechercher dans les transcriptions et les métadonnées extraites des podcasts.

Comment ça marche

L’analyseur transcrit les podcasts avec Whisper, puis extrait avec ChatGPT des invités, sujets et passages horodatés. La recherche se fait dans une interface React. Le traitement demande environ 2 h par heure d’audio. Ce projet personnel a traité 20 % du catalogue Floodcast et 10 % de celui de TFTC.

  • Transcription multi-moteurs : Whisper local (GPU/CPU) + API OpenAI avec découpage automatique des gros fichiers
  • Système anti-hallucination : détection/correction erreurs Whisper (-55% appels API)
  • Extraction métadonnées IA : invités, sujets, moments clés avec timestamps précis
  • Interface React 18 + TypeScript mobile-first avec recherche floue Fuse.js temps réel
  • Accélération GPU CUDA automatique (8-15x plus rapide sur RTX)
  • Widget Spotify intégré avec lecture synchronisée sur timestamps
  • CLI : 25+ commandes avec mode batch pour traitement en lot
  • Architecture Clean : services découplés, factory pattern, injection de dépendances
Projet 06

Système d'automatisation vidéo NDI — Détection visuelle temps réel et pilotage OBS Studio

En développement

Automatiser une régie de stream en temps réel : la vidéo déclenche elle-même les changements de scène OBS.

  • Détection visuelle : environ 100 msUn pipeline OpenCV accéléré CUDA repère des patterns dans des zones configurables et pilote OBS via WebSocket, sans intervention.
  • Zones en glisser-déposerL'opérateur dessine ses zones de détection et leur mapping vers les actions OBS dans l'interface, sans toucher au code.
PythonPySide6 (Qt)OpenCVNDI SDKOBS WebSocketCUDA
Comment ça marche

Application d’automatisation pour mes streams Call of Duty sur TikTok. Des patterns visuels détectés dans les flux NDI déclenchent des actions OBS Studio, avec une latence d’environ 100 ms. L’interface PySide6 configure les zones de détection ; OpenCV traite les images avec accélération GPU CUDA.

  • Capture de flux vidéo NDI haute performance sur réseau IP
  • Détection de patterns visuels avec OpenCV et CUDA
  • Automatisation d'OBS Studio (changements de scènes, contrôle de sources)
  • Interface graphique avec prévisualisation temps réel
  • Système de zones de détection personnalisables par glisser-déposer
  • Support GPU CUDA pour traitement d'images haute performance
Projet 07

Bot Minecraft autonome — comprendre comment donner des règles et du contexte à un LLM

Bac à sable

En faisant jouer un LLM à Minecraft pour le plaisir, j'ai compris comment lui donner des règles et le bon contexte — la base que j'ai reprise dans Aidventures et dans ma façon de développer avec Claude Code.

  • LLM = cerveau, bot = bras muetLe bot n'exécute que des actions atomiques et ne décide rien ; toute la stratégie vit dans le LLM. Aucune logique de décision cachée dans le code.
  • Des senseurs, pas des ordresÀ chaque bloc cassé, on renvoie le contexte brut — nouveaux blocs, eau, vide, dangers — et le LLM raisonne sur ces données plutôt que sur des instructions figées.
  • La qualité tient aux règlesFaire des escaliers, miner une veine sans perdre les drops : le résultat dépend de la justesse des règles fournies au modèle.
Node.jsMineflayerMCP (Model Context Protocol)Claude (Anthropic)SQLiteJavaScript
Comment ça marche

Bot Minecraft autonome piloté par un LLM via le Model Context Protocol (MCP). Architecture « atomique » volontairement stricte : le bot Mineflayer n'est qu'un bras exécuteur (actions unitaires, aucune décision), tandis que le LLM raisonne sur des données brutes remontées par des senseurs (blocs découverts, dangers, inventaire, niveaux Y) pour décider quoi miner, construire ou fuir. Trois serveurs MCP séparent les actions, la connaissance Minecraft (recettes, Y-levels, outils) et une mémoire spatiale persistante en SQLite. Projet d'apprentissage qui m'a fait comprendre, par le jeu, comment formuler des règles explicites et fournir le bon contexte à un LLM — une compétence directement réinvestie dans la drift gate d'Aidventures et dans ma manière de cadrer le développement assisté par Claude Code.

  • Architecture atomique : le bot exécute des actions unitaires (creuser, poser, équiper) et ne prend aucune décision — tout le raisonnement est délégué au LLM
  • Senseurs renvoyant des données brutes (blocs autour, eau/vide, dangers, niveaux Y optimaux, inventaire) plutôt que des ordres, pour que le LLM raisonne sur le contexte réel
  • Trois serveurs MCP séparés : actions, connaissance Minecraft (recettes, Y-levels, outils) et mémoire spatiale persistante en SQLite (escaliers, maisons et veines déjà connus)
  • Règles de gameplay explicites (ordre de minage d'une veine, technique d'échafaudage pour ne pas s'enfermer) montrant que la qualité du résultat dépend de la qualité des règles données
  • Agents parallèles (perception, sécurité, raisonnement) qui collectent et analysent l'état du monde avant chaque action