Opinion

33 agents IA sur une seule image sans toucher au noyau : où tracer la frontière entre code et modèle

Une flotte de 33 agents IA autonomes (du coach d'échecs pour enfants au calcul de postes de transformation 10/0,4 kV et de dormitoires modulaires) tourne sur une image unique et immuable, où chaque agent n'est défini que par un volume de données monté. Après la troisième dizaine d'outils, les schémas JSON du préfixe dépassent le prompt système en poids : chez l'administrateur CRM, 331 outils pèsent 302 Ko (environ 75 000 tokens par requête), tandis que le resserrement du profil et la désactivation du raisonnement superflu compriment le prompt de 15 266 à 1 424 tokens et font passer la réponse de 17 à 7,7 secondes. Le véritable carrefour architectural de tout agent reste la frontière entre code déterministe et génération de texte : là où le coût d'une erreur est élevé, le modèle ne reçoit qu'un contrat JSON de faits déjà calculés et n'a le droit d'inventer aucun chiffre.

33 agents IA sur une seule image sans toucher au noyau : où tracer la frontière entre code et modèle
Hamidun News.
Écouter l'article
Fiche synthèse et chiffres clés
ParamètreDonnées
Rédacteur en chef
Échelle de la flotte33 agents autonomes sur une image unique et immuable, sans fork du noyau
Économie sur le profil d'outilscompression du préfixe de 15 266 à 1 424 tokens et réduction de la médiane de réponse de 17 à 7,7 s
Plafond des schémas JSON302 110 octets (~75 000 tokens) pour 331 outils connectés chez l'agent CRM interne
Précision du périmètre d'ingénierieécart entre la surface calculée et le plan Revit de référence — 267,46 contre 267,20 m² sur 20 pièces
  • Échelle de la flotte : 33 agents autonomes sur une image unique et immuable, sans fork du noyau
  • Économie sur le profil d'outils : compression du préfixe de 15 266 à 1 424 tokens et réduction de la médiane de réponse de 17 à 7,7 s
  • Plafond des schémas JSON : 302 110 octets (~75 000 tokens) pour 331 outils connectés chez l'agent CRM interne
  • Précision du périmètre d'ingénierie : écart entre la surface calculée et le plan Revit de référence — 267,46 contre 267,20 m² sur 20 pièces

Quand plus de trente agents IA tournent en production — du simulateur d'échecs pour enfants aux calculateurs de bâtiments modulaires et de postes de transformation —, une vérité simple apparaît vite. La qualité du travail d'un agent se joue sur une seule décision : quelle part de la tâche a été reprise à la main par du code Python, et quelle part a été laissée au modèle de langage pour la restituer d'une voix humaine.

En un an, j'ai déployé 33 agents sur un même moteur, sans jamais forker le dépôt de base. Le code du runtime reste immuable ; l'individualité de chaque bot vit uniquement dans le volume de données monté : le fichier de personnalité `SOUL.md`, la configuration déclarative `config.yaml`, le dossier de plugins applicatifs `plugins/`, la base d'état `state.db` en SQLite avec FTS5, et les plannings `cron/jobs.json`. Lors de la migration depuis l'ancien framework, 233 des 558 sessions conversationnelles ont été transférées par simple copie de répertoire : la mémoire et le caractère appartiennent aux données, pas au moteur.

Pourquoi les schémas d'outils consomment-ils plus de contexte que le

prompt système ?

La mesure instrumentale sur les conteneurs en production montre que la « taxe moteur » plafonne à 8 656 caractères (~2,2 k tokens), et descend à 5 000 caractères quand mémoire et compétences sont désactivées sur les modèles Gemini. La date dans le préfixe système est fixée à la journée, pas à la seconde — sinon chaque requête casse le cache de préfixe du fournisseur.

La véritable explosion se produit dans le bloc de déclaration des fonctions. Le bot de conférence, avec 3 outils, consomme 1 995 octets de schémas JSON pour un prompt de 10 687 caractères. L'agent métallurgique sectoriel, avec 36 outils, voit ses schémas atteindre 59 121 octets.

Et notre administrateur CRM, avec 331 outils connectés, affiche 302 110 octets de schémas JSON — environ 75 000 tokens dans le préfixe de chaque tour. Pour le tuteur linguistique, en réduisant le jeu d'outils à un canal précis, en désactivant le sondage initial de l'environnement et en supprimant une étape de raisonnement superflue, le prompt d'entrée est passé de 15 266 à 1 424 tokens, et la médiane de réponse a chuté de 17 à 7,7 secondes.

Où placer la frontière entre calcul en code et génération par le modèle ?

Même dans un bot familial avec un long fichier de personnalité (jusqu'à 20-23 k tokens), l'arithmétique ne doit jamais être confiée au LLM : lorsque le décompte des étoiles bonus a été laissé comme règle textuelle dans le prompt, trois sources de données ont vite divergé — le solde affichait 461, la somme du tableau donnait 466, et le journal des transactions indiquait 457. Une règle dans le prompt est un souhait ; une règle dans le code est une garantie.

Dans le simulateur d'échecs, le modèle n'évalue jamais la position lui-même. Deux processus Stockfish (l'un joue avec un budget de nœuds `nodes` et une probabilité de bévue enfantine `blunder_p`, l'autre analyse le coup), associés à quatre détecteurs basés sur `python-chess` (pièces en prise, fourchettes avec coût d'échange, clouages `pin-aware`, mat en 1 coup), produisent un contrat JSON strict :

```json { "played_move": {"san": "Фg4"}, "verdict": {"label": "blunder", "win_before_pct": 55.0, "win_after_pct": 4.0}, "best_move": {"san": "Фe2", "line_san": ["Фe2", "d6", "d3", "Сe6"]}, "punishment_line_san": ["Кxg4"], "tactics_against_student": [ {"motif": "hanging_piece", "fact_ru": "ферзь на g4 под боем коня f6 без защиты"} ] } ```

Le modèle traduit ce paquet en réplique de coach, et en sortie, 342 lignes d'expressions régulières vérifient chaque champ et chaque coup par rapport à une liste `allowlist`, écartant les coordonnées inventées comme `Qz9` ou les homoglyphes cyrilliques.

Comment fonctionnent les agents industriels sans RAG, et quelles

vulnérabilités apparaissent à la jonction des plugins ?

Dans les projets de conception de bâtiments modulaires à partir de conteneurs et de calcul de postes de transformation 2KTP-400/10/0,4 kV, il n'y a aucun RAG vectoriel : les normes de construction (SP, GOST, PUE) et les barèmes de calibres sont codés en dur dans des fonctions Python. Pour une requête du type « dormitoire pour 42 personnes, trois par chambre », la géométrie des travées, le calibrage des surfaces (panneaux sandwich de 100 mm, cloisons de 80 mm), la génération d'une feuille A3, l'export DXF pour AutoCAD et la vérification des normes (à partir de 6 m² par personne, couloir à partir de 1 400 mm) sont exécutés par le code en 40 secondes, contre trois jours sous Revit. Sur un référentiel de 20 pièces, le code a donné 267,46 m² contre 267,20 m² pour l'architecte, et a détecté une erreur sur un plan manuel (4,17 m² par personne contre une norme de 6 m²).

Dans l'énergie, le statut `PASS` n'est attribué qu'après vérification par formule (disjoncteur d'entrée de 1000 A pour un courant de transformateur de 909 A), tandis que les mesures de terrain (mise à la terre jusqu'à 4 Ohms, parafoudres ОПН) reçoivent obligatoirement le statut `INFO`.

Les dysfonctionnements les plus subtils surviennent quand le modèle tente de « contourner » le validateur. Après un `FAIL` sur une surcharge de transformateur sur deux lignes de 600 A chacune, le modèle a lui-même réduit les courants à 2×385 A (ramenant la charge de 1 200 à 770 A), les a fragmentés en `200 + 200 + 185 + 185 A`, et a obtenu `OK`. Nous avons depuis introduit une vérification de chaque paramètre par rapport au cahier des charges d'origine.

Un incident sur un stand de démo, où le bot, avec une copie scannée du cahier des charges, a lui-même créé un `venv`, installé `pymupdf` et converti 13 pages en PNG, nous a appris à verrouiller `terminal`, `code_execution`, `delegation` et les profils `cron`.

Ces invariants ont servi de fondation à [Nomad AI](https://nomadnet.ai) et au runtime [agent.nomadnet.ai](https://agent.nomadnet.ai). La pratique de construction de tels systèmes est accessible via [Hamidun Academy](https://academy.hamidun.com) (essai de 72 heures), et plus de 370 compétences sont disponibles dans [Vibe Club](https://hamidun.com/club).

Dossier

Questions clés sur cet article

Pourquoi les schémas d'outils consomment-ils plus de contexte que le prompt système ?

La mesure instrumentale sur les conteneurs en production montre que la « taxe moteur » plafonne à 8 656 caractères (~2,2 k tokens), et descend à 5 000 caractères quand mémoire et compétences sont désactivées sur les modèles Gemini. La date dans le préfixe système est fixée à la journée, pas à la seconde — sinon chaque requête casse le cache de préfixe du fournisseur. La véritable explosion se produit dans le bloc de déclaration des fonctions. Le bot de conférence, avec 3 outils, consomme 1 995 octets de schémas JSON pour un prompt de 10 687 caractères. L'agent métallurgique

Où placer la frontière entre calcul en code et génération par le modèle ?

Même dans un bot familial avec un long fichier de personnalité (jusqu'à 20-23 k tokens), l'arithmétique ne doit jamais être confiée au LLM : lorsque le décompte des étoiles bonus a été laissé comme règle textuelle dans le prompt, trois sources de données ont vite divergé — le solde affichait 461, la somme du tableau donnait 466, et le journal des transactions indiquait 457. Une règle dans le prompt est un souhait ; une règle dans le code est une garantie. Dans le simulateur d'échecs, le modèle n'évalue jamais la position lui-même. Deux processus Stockfish (l'un joue avec un

ZK
Zhemal Khamidun — CPO d'Alpina Digital, product manager d'AlpinaGPT. Conçoit des produits IA depuis 2019. Hamidun News est un projet personnel devenu un agrégateur en production avec plus de 6 000 lecteurs.
✦ Hands-On AI Engineering · Hamidun Academy

Build & Ship Production AI Agents Without Boilerplate Code

Start your free 72-hour trial at Hamidun Academy (academy.hamidun.com) — interactive lessons on Claude Code & Cursor, live Tech Radar, and production agent templates.

Start 72h Free Trial →Vibe-Coding Intensive
Qu'en pensez-vous ?
Chargement des commentaires…