Aller au contenu

Création assistée par IA

Utilisez des agents IA pour créer des modèles twin et des templates de plante physiquement réalistes. Installez le skill model-author et laissez votre agent gérer la recherche, la conception et la validation.

Les agents IA peuvent créer des modèles .twin.yaml et des templates .miravo.yaml depuis une description en langage naturel. Le skill model-author enseigne le workflow complet de modélisation à tout agent compatible.

Agent Skills CLI :

Fenêtre de terminal
npx skills add amine-amaach/miravo/skills/model-author

Claude Code :

Fenêtre de terminal
ln -s /path/to/miravo/skills/model-author ~/.claude/skills/model-author

Codex :

Fenêtre de terminal
ln -s /path/to/miravo/skills/model-author ~/.codex/skills/model-author

Pas de dépendances. Fonctionne avec tout agent supportant Agent Skills.

Crée un modèle twin pour un variateur de fréquence contrôlant un ventilateur industriel
Modélise une pompe centrifuge avec réponse hydraulique et pannes de cavitation
Écris un template pour une station de traitement d'eau avec 3 étages de pompage

L’agent suit un workflow en 8 étapes : rechercher l’actif physique, définir les paramètres, ordonner les membres par dépendance, composer les chaînes de générateurs, concevoir le cycle de vie et les pannes, puis auto-valider contre une checklist de 25 points.

Le skill associe la physique réelle au type de générateur approprié :

Phénomène physiqueGénérateurExemple
Consigne / programmetimetable ou stepProfil de vitesse journalier
Accélération moteurslew-rate-limiter200 rpm/s montée, 320 rpm/s descente
Inertie thermiquefirst-order-lagTemp palier suit la vitesse (tau 120s)
Couplage de processcorrelatedDébit carburant = 0.19 * charge + 8
Charge stochastiquemean-reverting-noiseFacteur de charge oscille autour de 0.72 pu
Tout-ou-rien avec hystérésishysteresis-relayCharge/décharge compresseur
Combinaison multi-signauxweighted-sumCourant = vitesse*k1 + charge*k2
AccumulationintegratorTotalisateur kWh, niveau de cuve
Lié à l’usurehealth-dependentVibration augmente avec le cycle de vie

Une chaîne de contrôle de vitesse produite par l’agent pour une pompe :

speed_setpoint:
kind: variable
data_type: Double
access: readwrite
unit: rpm
eu_range: [0, 3600]
generator:
type: timetable
repeat: true
interpolation: step
points:
- { time: 0, value: 0 }
- { time: 21600, value: 1200 }
- { time: 64800, value: 900 }
- { time: 79200, value: 0 }
speed_reference:
kind: variable
data_type: Double
access: read
unit: rpm
generator:
type: gate
enabled_member: run_command
input: { member: speed_setpoint }
disabled_value: 0
speed_feedback:
kind: variable
data_type: Double
access: read
unit: rpm
eu_range: [0, 1850]
generator:
type: slew-rate-limiter
input: { member: speed_reference }
rate_up: 220
rate_down: 320
min: 0
max: 1850

Les moteurs n’atteignent pas leur pleine vitesse instantanément (slew-rate-limiter). Les signaux de process sont à zéro quand l’actif est arrêté (gate).

L’agent vérifie chaque modèle contre ces règles :

  • schema_version: "2" présent, les membres ne référencent que des membres déclarés avant eux
  • Pas de températures instantanées — doit utiliser first-order-lag (tau 60-600s)
  • Pas de changements de vitesse instantanés — doit utiliser slew-rate-limiter
  • Effets du cycle de vie observables au-dessus du bruit (multiplier >= 1.3)
  • gain * entrée_nominale + bias produit la sortie attendue
  • factor * plage_source reste dans eu_range

Les générateurs utilisent des mathématiques linéaires. La physique non linéaire (loi cubique de puissance, racine carrée du débit) est approximée avec des facteurs linéaires ajustés pour la plage de fonctionnement principale. L’agent documente ces simplifications avec des commentaires YAML.