L’architecture du système
- Ce que beaucoup appellent un agent tient dans ce point. Le reste, c’est le système.Un modèle de langage branché sur une API avec un prompt : c’est ce point lumineux. Autour de lui, vous allez voir ce qui le gouverne : 23 agents répartis en 8 domaines, un orchestrateur, 4 validateurs et une mémoire. Chaque chiffre de cette page est recompté dans son code au moment où elle est construite.
- Le modèle n’est qu’un port.Un connecteur parmi 18, derrière une interface commune. Le système ne l’appelle qu’en dernier recours : avant lui, il y a des règles, une mémoire, un orchestrateur et un planificateur.
- Connecteurs
- 18 · 10 sortants, 8 entrants
- Interfaces communes
- 3
- Appel au modèle
- niveau 3 du routeur, le dernier
- 261 modules. 818 dépendances.Chaque point est un fichier Python que le serveur charge, chaque trait un import réel, suivi depuis api/server.py. Puis chaque module rejoint la couche qui l’héberge : la tour est faite de son propre code.
- Lignes
- 184 549
- Fonctions
- 4 175
- Classes
- 276
- Paquets
- 11
- La porte : 2 ports, pas un de plus.nginx est seul à répondre au monde. Le 80 renvoie vers le 443 ; derrière, TLS, 2 domaines, et 3 zones de débit comptées par adresse.
- Ports publics
- 80 · 443
- TLS
- 1.2 · 1.3
- Zones de débit
- api 30/min · site 300/min · admin 600/min
- Corps max · lecture max
- 100 Mo · 300 s
- Un seul processus. C’est voulu.uvicorn, 1 worker : l’ordonnanceur des tâches vit dans le processus de l’API, deux workers en feraient deux. Chaque requête traverse 4 middlewares, et 8 limiteurs de débit tiennent les points sensibles.
- Serveur
- FastAPI · uvicorn · asyncio
- Workers
- 1
- Middlewares
- CORS · no-store · audit · métriques
- Limiteurs applicatifs
- 8
- 548 routes. Une alvéole chacune.567 déclarées, 548 servies, en 74 familles : console d’administration, espace client, authentification, mémoire, acquisition, projets, agenda… Chaque couleur est une méthode HTTP.
- GET
- 277
- POST
- 239
- PATCH
- 17
- DELETE
- 12
- WebSocket
- 3
- Rien n’entre sans être validé.4 validateurs examinent chaque demande : sa logique, sa cohérence avec la mémoire, la stabilité du système, la gouvernance. Verdict : accepter, annoter ou refuser.
- Longueur
- 8 000 caractères au plus, alerte à 4 000
- Disjoncteur
- 3 échecs en 300 s · sortie après 2 succès
- Débit
- 30 demandes par 60 s
- Le modèle parle en dernier.Niveau 1 : le système répond seul. Niveau 2 : les règles déclarées par chaque agent, fortes puis faibles. Niveau 3 seulement : le modèle. Puis le gatekeeper classe le risque avant toute exécution.
- Confiance des règles
- fortes 0,97 · faibles 0,90
- Stratégies
- SINGLE · PARALLEL · SEQUENTIAL · DIRECT
- Gatekeeper
- 4 niveaux de risque · 8 motifs critiques, veto immédiat
- 8 domaines. 23 agents. Chacun son délai.Prospection, boîte de réception, planification, recherche, agenda, veille, finance, juridique… Chaque agent est enregistré avec ses capacités, ses règles de routage et un délai au-delà duquel il est coupé.
- Les plus longs
- prospector 600 s · planner, inbox 300 s · research, mobile 240 s
- Profil api_cloud
- 14 agents coupés à 45 s
- Un plan devient un graphe.Au plus 8 étapes. Tri topologique de Kahn : ce qui ne dépend de rien part ensemble, par lots. Une étape qui échoue est rejouée ; si elle casse, ses descendants sont bloqués, jamais exécutés sur un résultat faux.
- Tentatives
- 2
- Attente
- 1 s, ×2, plafond 5 s
- Délais
- 45 s par étape · 120 s par plan
- HEAM-MCAE : une mémoire qui calcule.Session, faits, épisodes, sens. Les souvenirs proches fusionnent, ceux qu’on rappelle se renforcent, les autres s’effacent selon une courbe d’oubli. L’oubli archive, il ne supprime pas.
- Rétention
- R = e−t/S, S = 1,8n · w
- Fusion
- similarité de Jaccard ≥ 0,55
- Oubli
- R < 0,20 après 3 jours
- Promotion
- 3 rappels · critique à 8
- 27 bases. 93 tables.SQLite, une base par sujet : acquisition, mémoire épisodique, tableau noir, gouvernance, file d’envoi, facturation, agenda… Chaque schéma est écrit dans le code et versionné avec lui.
- Bases
- 27
- Tables distinctes
- 93
- Déclarations CREATE TABLE
- 102
- 48 tâches. Personne ne les lance.Déclarées au démarrage, sur une horloge UTC : le moteur d’objectifs chaque minute, la surveillance toutes les 30 s, les relances, la relève des réponses, la consolidation de la mémoire, les rapports à heure fixe.
- À intervalle
- 15
- À heure fixe, UTC
- 33
- Verrou de tick
- en base ; s’il est illisible, le cycle saute
- Il agit dans le monde réel.18 connecteurs : e-mail, SMS, WhatsApp, CRM, agenda, paiement, sources publiques, transcription, modèle. Un e-mail de campagne passe 20 contrôles de rédaction, puis attend une validation humaine.
- Sortants · entrants
- 10 · 8
- Contrôles de rédaction
- 20
- Relances
- arrêtées dès qu’on leur répond
- Rien n’est livré sans preuve.Chaque mise en ligne reconstruit l’image depuis un clone propre, pose un filet de secours, interroge l’image neuve avant de basculer, puis vérifie le service en production.
- Témoins dans l’image
- 445
- Témoins en service
- 468
- Suites de tests par déploiement
- 10
- Tests dans le dépôt
- 3 311
- Tout ça tourne avant la première ligne de votre application.Une architecture écrite, mesurée, testée, déployée, et comptée ici depuis son propre code.
- Code261 modules, 818 imports, recomptés depuis api/server.py.
- Routes548 servies sur 567 déclarées.
- Agents23, dans 8 domaines.
- Tâches48 planifiées.
Pas un modèle branché sur une API.
Un système de 261 modules, 548 routes et 23 agents, que je conçois, écris et maintiens. C’est avec lui, et de cette manière, que je construis les applications de mes clients.
Sur mesure, sur vos règles, et vérifiable.
Et si on construisait la vôtre ?
Une heure d’entretien pour lister ce que votre application doit faire, et vous dire franchement ce qui vaut la peine d’être construit.
Réserver l’entretien d’une heure