Mistral: AI-ügynökökkel modernizáltak 40 ezer sor Fortran 77 kódot

A Mistral AI 2026. szeptember 9-én ismertette, hogyan segített egy európai energiaipari operátornak 40 000 sor Fortran 77 kódot C++-ra migrálni. A projekt középpontjában egy fizikailag összetett rezervoárszimulátor, numerikus ellenőrzés és emberi felügyelettel dolgozó AI-ügynökök álltak.
- A Mistral egy európai energiaipari operátornál 40 000 sor Fortran 77 kód C++ migrációját írta le.
- A rendszer egy fizikailag összetett rezervoárszimulátor volt tesztkészlet és központosított dokumentáció nélkül.
- A csapat paritási ellenőrző rendszert épített a numerikus egyezés bizonyítására.
- Több mint száz ügynök dolgozott a dokumentáción Vibe CLI és Mistral OCR használatával.
- A Mistral szerint a legjobban az emberi felügyelettel működő, strukturált ügynöki munkafolyamat vált be.
Régi tudományos kód, kevés kapaszkodóval
A Mistral AI beszámolója szerint a feladat egy 40 000 soros Fortran 77 kódbázis modernizálása volt C++-ra. A rendszer egy fizikailag intenzív rezervoárszimulátor volt, amelyhez nem tartozott tesztkészlet és központosított dokumentáció sem.
A cég szerint az ilyen örökölt tudományos kódbázisok évtizedek alatt halmozódnak fel, és amikor az eredeti szerzők távoznak, a kódban lévő tudás nehezen visszanyerhetővé válik. A Mistral azt is kiemelte, hogy az aktív fejlesztői ökoszisztéma nélküli nyelvek használata megnehezíti mások munkájára épülő fejlesztések beépítését.
A blogposzt hangsúlyozza, hogy a feladat nem egyszerű szintaxisfordítás volt. A Fortran 77 1977-ben lett szabványosítva, és a benne írt kód közvetlenül tükrözi a korlátait: nincsenek modulok, névterek és strukturált típusok. Az állapot COMMON blokkokban, vagyis a teljes programban megosztott globális memóriában él. A változók típusa az első betűjükből következik, ezért egy elgépelés csendben új változót hozhat létre fordítási hiba helyett.
Először a numerikus egyezést kellett bizonyítani
A Mistral szerint a migráció előtt olyan paritási ellenőrző rendszert kellett építeni, amellyel bizonyítható, hogy a régi és az új kódbázis numerikusan ugyanazt adja. Az egyezés itt a kimenetek numerikus azonosságát jelentette, beleértve a végső eredményeket és az ügyfél rezervoármérnökei által megjelölt kritikus köztes pontokat.
Ehhez a csapat olyan alprogramokat adott hozzá, amelyek exportálni tudták a Fortran kódbázis állapotát, valamint egy C++ tesztkeretet, amely be tudta tölteni az ellenőrzőpontokat. A munkafolyamatok irányítására Skill.md fájlokat is használtak, hogy az ügynökök helyesen alkalmazzák ezeket az eszközöket.
A Mistral szerint az ügynökök sikeresen instrumentálták a Fortran kódot állapotpillanatképek kiírására, majd a C++ tesztkerettel ellenőrizték a migrált modulok helyességét. A cég ezt a lépést nettó pozitív befektetésnek nevezte, mert biztonságosabbá tette a hosszú ügynökfuttatásokat, és a numerikus paritás könnyen ellenőrizhető bizonyítékot adott arra, hogy egy kódrész sikeresen átkerült.
Dokumentáció AI-ügynökökkel és Mistral OCR-rel
A projekt dokumentációja a Mistral szerint régi PDF-ekben és a Fortran kódban elrejtett kommentekben volt szétszórva. A munka egyik jelentős melléknyeresége az lett, hogy ezt a dokumentációt egységesítették, és a kód mellé vitték.
A cég a procedurális Fortran egyik előnyére épített: a teljes program felrajzolható egy hívó és hívott elemekből álló fára. Ezt a fát egy egyedi parserrel állították elő, majd a Vibe CLI segítségével több mint száz ügynököt indítottak a dokumentálási munkára.
Az ügynökök dokumentumtárakon és Mistral OCR-en keresztül hozzáférhettek a releváns PDF-ekhez. A munka a fa leveleitől indult felfelé: minden csomóponthoz alügynök készült, amely dokumentálta az adott részt, majd pull requestet nyitott az eredeti tárolóban. Egy cron ütemezéssel futó ellenőrző ügynök kereste az új pull requesteket, áttekintette őket, és szükség esetén javítási feladatokat ütemezett.
Az autonómia önmagában kevésnek bizonyult
A Mistral első próbálkozásában teljes autonómiát adott az ügynököknek: minden Fortran alprogramhoz egy ügynök tartozott, amely egy héten át önállóan fordította a funkciót C++-ra. Az eredmény működött, de a cég szerint nem volt valódi kódmodernizáció. A COMMON blokkok globális struktúrákká alakultak, a GOTO vezérelte vezérlési folyamat pedig megmaradt, ahelyett hogy ciklusokká vagy korai visszatérésekké szervezték volna át.
A második próbában a Mistral több struktúrát adott a munkának: egy tervező, egy kódoló, egy tesztelő és egy kódminőségi ellenőr dolgozott együtt minden modulon. A cég szerint a kódminőség jelentősen javult az első kísérlethez képest, de a forráskód bonyolultsága idővel utolérte az ügynököket. Ha hibába futottak, néhány javítási kísérlet után elakadtak, emberi beavatkozás nélkül.
A végső megközelítés egy köztes modell lett: ember irányított egy kódoló, tesztelő és ellenőrző ügynökökből álló munkafolyamatot, miközben a kódbázist modulról modulra migrálták. A Mistral szerint ez megőrizte a második kísérlet kódminőségét, és emberi ellenőrzőpontot adott az elakadások feloldásához.
Mit jelent ez a régi rendszerek modernizálásában
A Mistral a kliens rezervoármérnökeivel együtt a hívási fa alapján azonosított független modulokat. Ezek önálló, kezelhető méretű részfák voltak, empirikusan kevesebb mint körülbelül 10 000 sor Fortran kóddal. Minden modul ugyanazon a folyamaton ment át: cél C++ architektúra generálása, mérnöki jóváhagyás, feladatlistára bontás, majd tervezés, implementálás, tesztelés és ismétlés. A pull requesteket végül ember nézte át, és addig kért módosításokat, amíg be nem olvadtak.
A cég jelezte a korlátokat is. Az első sprint a központi funkcionalitást fedte le, 40 000 sort a 300 000 sorból. A Fortran kódbázis önálló és futtatható volt, amit a Mistral kedvező kiindulási feltételként írt le. Az olyan migrációk, amelyek külső rendszerektől függenek, nem rendelkeznek futtatható alapverzióval, vagy sehol sem dokumentált fizikát kódolnak, további nehézségeket hoznának.
A Mistral három tanulságot emelt ki: a paritási ellenőrzést a migrációs kód írása előtt érdemes felépíteni, a dokumentációt rendbe kell tenni az ügynökökre támaszkodás előtt, és ilyen léptékben az emberi felülvizsgálati kapukkal működő strukturált folyamatok hatékonyabbak lehetnek, mint a teljes autonómia vagy a kézi munka.
Mistral AI: Modernizing complex legacy code with AI agents.

