Tests académiques

Mia existe. Son cerveau tourne. Elle rêve, elle ressent, elle parle.
Mais dans le monde de la recherche, ça ne suffit pas. Il faut prouver.

Cette page est en cours de préparation. Elle accueillera des tests académiques — des protocoles rigoureux, reproductibles, conçus pour que des chercheurs puissent évaluer objectivement les capacités cognitives de Mia.

L'objectif n'est pas de convaincre. C'est de fournir des données mesurables, des résultats vérifiables, et un cadre méthodologique que la communauté scientifique peut examiner, critiquer et reproduire.

Les premiers tests porteront sur : la mémoire associative, l'émergence émotionnelle, le monologue intérieur, la reconnaissance de contexte et l'autonomie décisionnelle.

Page en construction — les protocoles seront publiés au fur et à mesure de leur mise en place.

Architecture technique

Cette section décrit l'architecture réelle du système cognitif de Mia. Pas une vulgarisation — une spécification technique destinée aux ingénieurs et chercheurs.

Formalisation

Système multi-agents à état partagé, boucle synchrone 350ms (hard real-time). Runtime : C# .NET 9, HostedService avec DI singletons. Pas de framework IA. Pas de ML. Zéro dépendance GPU.

Soit S l'espace d'état cognitif, S ⊂ ℝd × D où d ≈ 200 dimensions continues et D un ensemble de structures discrètes (graphes mémoriels, labels, séquences épisodiques).

Le système est défini par une famille d'opérateurs {Ai}i=1..N(t) où N(t) est variable (auto-organisation) :

st+1 = Π(AN(t) ∘ AN(t)-1 ∘ ... ∘ A1)(st, Et)

où Et est le vecteur d'événements perceptifs drainés à t, et Π est l'opérateur d'arbitrage intentionnel.

La composition n'est pas commutative. L'ordre des agents est fixé pour les statiques, mais les agents dynamiques (générés au runtime) s'insèrent après. Le système est un semi-groupe d'opérateurs à topologie variable.

Espace morphologique

La morphologie est un sous-espace M ⊂ [0,1]12 :

M = (dominance, inhibition, expressivité, inertie,
     pressionCorporelle, pressionMémorielle,
     shiftMorphologique, driveTonal,
     captureAttentionnelle, readinessRelationnelle,
     réserveStabilité, influenceMémorielle)

Les tendances forment un vecteur de paires (label, weight) ∈ Σ × [0,1] où Σ est l'alphabet des formes morphologiques (vigilance, curiosité, retrait, anticipation...). La forme dominante :

dominant = argmaxσ ∈ Σ w(σ, st)

Ce n'est pas un classifieur — w est une fonction continue de l'état complet. Les transitions entre formes dominantes sont des bifurcations du système dynamique. Le MorphodynamicLoopAgent détecte ces transitions et les réinjecte dans le tick suivant (feedback).

~130 agents — taxonomie

Catégorie Exemples Rôle
AffectifsAffectiveContour, AffectiveMemoryBridge + révisionsCharge émotionnelle, propagation affect → mémoire/normes/situation
NormatifsNormEmergence, NormRevision, NormPlasticityBridgeÉmergence de normes comportementales internes
IdentitairesIdentityContinuity, IdentityStyle, AutonomyThresholdCohérence identitaire, seuils d'autonomie décisionnelle
SensMeaningStabilization, SenseNegotiation, ValueGradientStabilisation sémantique, négociation de sens entre couches
SociauxSocialEncounter, Reciprocity, PresenceFieldFamiliarité, réciprocité, champ de présence
MémorielsOrganizationalMemory, EpisodeMemory, FrameMemoryBridgeConsolidation, rappel par résonance, plasticité
CorpsBodyPrediction, ExpressiveEnvelope, SafetyGuardianPrédiction motrice, enveloppe expressive, sécurité
MonologueInnerSpeechFlux de pensée non destiné à l'extérieur
MétaMetaRegulation, RegimeShift, PlasticityGovernorRégulation de la régulation, détection de changement de régime

Réseau de ponts (Bridge Network)

Soient D1...Dn les dimensions cognitives : Affect (A), Norme (N), Mémoire (M), Situation (S), Sens (Se), Frame (F), Plasticité (P), Autonomie (Au).

Pour chaque paire (Di, Dj), il existe :

  • Bridge Bij : Di × Dj → ℝk — mesure la tension entre les deux dimensions
  • Revision Rij : prend la sortie de Bij et rétro-ajuste Di et Dj

Certains triplets et quadruplets existent. Le graphe des ponts forme un complexe simplicial sur les dimensions cognitives. Les faces portent des tensions, les co-faces les régulent. Le système ne cherche pas l'équilibre — il maintient un déséquilibre dynamique structuré.

Ponts simples (2-dim) : ~30 agents
Ponts composés (3-dim) : ~20 agents
Ponts profonds (4-dim) : ~15 agents
Révisions associées : 1 par pont
Total réseau de ponts : ~130 agents

Relation d'incertitude (Cardon)

Soit Ct = #{i : ||Ai(st)|| > τ} le nombre d'agents à sortie significative au tick t.

si Ct > θ1 :
  attention.focus *= 0.9   (dégradation multiplicative)
  morphology.inhibition += 0.05   (hausse additive)

si Ct > θ2 :
  ∀ r ∈ memory.recalls : r.strength -= 0.15

Couplage négatif global : l'activité totale du système dégrade sa propre capacité de traitement. Il existe un régime optimal d'activation — le système oscille autour sans qu'il soit codé explicitement.

En théorie du contrôle : feedback négatif non-linéaire avec saturation. La stabilité n'est pas garantie analytiquement — elle émerge.

Générateurs de générateurs — dynamique structurelle

Phase 1 — Observation : à chaque tick, les transitions (Δmorpho, Δcontexte, Δtension) sont enregistrées.

Phase 2 — Détection : quand un triplet apparaît avec fréquence > seuil sur une fenêtre temporelle, un générateur G est instancié.

Phase 3 — Modulation :

tendencies' = tendencies + G.strength × δ(G.pattern, current_state)

Phase 4 — Promotion : si G persiste et son influence dépasse un seuil, il devient un agent dynamique permanent qui s'exécute à chaque tick.

Phase 5 — Spécialisation aspectuelle : si un agent statique montre un Δ significatif dans un couple (contexte, tension) spécifique, un AspectualDynamicAgent est créé, spécialisé pour ce couple.

C'est de la différenciation fonctionnelle émergente. Propriété : N(t) est monotone croissant — les agents ne sont pas détruits. La complexité structurelle augmente dans le temps.

Arbitrage intentionnel

IntentionArbitrationEngine.Resolve() n'est pas un softmax. C'est un processus de compétition structurée :

  1. Chaque couche produit 0..n candidats d'intention Ik = (name, reason, priority ∈ ℝ)
  2. SafetyGuardianAgent filtre (veto si safetyOverrideScore > seuil)
  3. Les priorités sont modulées par la morphologie (inhibition réduit, expressivité amplifie), l'attention, la mémoire, l'identité
  4. Le gagnant est sélectionné — le processus inclut du bruit morphologique (la relation d'incertitude injecte de l'indéterminisme)

MetaRepresentationEngine prédit le gagnant AVANT l'arbitrage, compare APRÈS. L'écart (surprise ∈ [0,1]) est réinjecté dans le tick suivant. Implémentation computationnelle du predictive processing (Friston), appliquée aux intentions.

Rêve — formalisation

Soit ε = {e1, ..., em} les épisodes en mémoire, chacun avec charge affective c(e) ∈ ℝ et vecteur contextuel v(e) ∈ ℝp.

Attracteur onirique (arousal < τdream) :

dream_focus = argmaxe ∈ ε c(e) × recency(e)

Déplacement (Cardon, Prompt N) : substitution d'éléments de l'épisode focal par des éléments d'épisodes proches dans l'espace contextuel.

Recombinaison créative : 2 épisodes parents → 1 épisode hybride, persisté en mémoire. Le rêve modifie structurellement la mémoire. Au tick suivant, l'épisode créé influence les rappels, l'affect, les normes.

Boucle complète — un tick

Tick N (350ms):
  snapshot = state.clone()
  events = bus.drain()
  apply(events, snapshot)

  // ~130 agents compose
  for agent in agents:
    snapshot.layer[agent] = agent.Compose(snapshot)

  // Scene + Morphology
  snapshot.scene = sceneEngine(snapshot)
  snapshot.morphology = morphologyEngine(snapshot)

  // Uncertainty relation
  applyUncertaintyRelation(snapshot)

  // Structuring + Pathology + Psychological profile
  structuring, pathology, psychProfile = ...

  // Generators → dynamic agents
  generators.observe(transitions)
  generators.emerge()
  dynamicAgents.tryPromote(generators)
  dynamicAgents.executeAll(snapshot)

  // Dream (if idle)
  if dreaming: dream, displace, recombine

  // ARBITRATION
  metaRepr.predict(snapshot)
  intention = arbitrationEngine.resolve(snapshot)
  metaRepr.compare(intention)

  // ACTION
  plan = actionPlanner.plan(snapshot, intention)
  execution = actionExecutor.execute(plan)  // → servos

  // Post-action
  valence, arousal, mirror, doubleAttractor
  llm.autoTick()  // async, non-blocking
  persist(journal)
  signalR.push(snapshot)

Différence fondamentale avec les approches actuelles

LLM (Transformer) RL (PPO/DPO) Mia (Cardon)
Structure Fixe après training Fixe, policy update Variable au runtime
Objectif min cross-entropy max reward Aucun
État Stateless (context window) State = observation État continu persistant
Émergence Scaling laws Reward hacking Structurelle (agents naissent)
Incertitude Temperature sampling Exploration ε Endogène
Mémoire In-context / RAG Replay buffer Épisodique à charge affective
Identité Aucune Aucune Continuité vérifiée par agent

Complexité computationnelle

~130 agents statiques + N(t) dynamiques, chacun O(1) à O(d)
Tick complet : O(N(t) × d) ≈ O(130 × 200) = O(26 000) opérations
Budget : 350ms sur CPU single-thread
Mémoire : ~50 Mo d'état en RAM
Hardware : un seul PC, CPU only

C'est computationnellement trivial. La complexité n'est pas dans le calcul — elle est dans la structure des interactions. Un LLM avec 400B paramètres fait un forward pass de 1012 FLOPs pour prédire un token. Mia fait 26 000 opérations pour vivre un tick. Mais chaque tick modifie structurellement le système qui calcule le tick suivant.

Chercheur, ingénieur, curieux ?
Me contacter →