본문 바로가기
원문
Mistral AI News·· 2026년 9월 9일AI 점수52

Mistral, 복잡한 레거시 코드 개편을 위한 AI 에이전트 기법 소개… Fortran 77에서 C++로의 마이그레이션 사례

Modernizing complex legacy code with AI agents.

AI 요약

Mistral는 유럽의 한 에너지 사업자가 보유한 Fortran 77 기반 저류층 시뮬레이터 4만 줄을 C++로 옮긴 사례를 바탕으로, AI 에이전트를 활용한 레거시 코드 현대화 진행 방식을 소개했다. 수치 일치를 확인하는 검증 기반을 먼저 구축하고, 문서를 정비하며, 사람의 검토를 포함한 구조화된 워크플로를 교훈으로 제시했다. 첫 스프린트의 대상은 30만 줄 가운데 4만 줄이다.

자세히

테스트 스위트나 중앙 관리되는 문서가 없는, 물리 계산 중심의 저수층 시뮬레이터가 대상이다. Fortran 77에는 모듈, 네임스페이스, 구조화 타입이 없고, 상태는 COMMON 블록의 전역 메모리에 놓이며, 변수 타입은 이니셜에 따라 암묵적으로 정해진다. 문법을 번역하는 것 자체는 어렵지 않지만, 절차형에서 객체지향 C++로 옮기려면 아키텍처를 재설계해야 하고, 줄 단위 대응이 없어 마이그레이션을 검증하기 어렵다고 한다.

가장 먼저 만든 것은 검증 기반(parity harness)이다. Fortran 쪽에는 상태를 내보내는 서브루틴을 추가하고, C++ 쪽에는 체크포인트를 읽어 들이는 테스트 프레임워크를 마련했으며, 에이전트를 올바르게 이끄는 Skill.md 파일도 정비했다. 비교 대상은 최종 결과와, 고객인 저수층 엔지니어가 지정한 주요 중간 지점의 수치다. 에이전트는 Fortran에 출력 줄을 삽입해 상태를 얻고, 그 체크포인트로 C++ 모듈을 검증했다. 이를 통해 장시간 에이전트 실행이 안전해졌다고 밝혔다.

문서는 오래된 PDF와 코드 내 주석에 흩어져 있었다. 호출하는 쪽과 호출되는 쪽의 트리 구조를 커스텀 파서로 생성하고, Vibe CLI로 100개가 넘는 에이전트를 띄워 문서화했다. 각 에이전트는 문서 라이브러리와 Mistral OCR로 PDF를 참조했고, 트리의 잎에서 위쪽으로 서브 에이전트가 PR을 만들었다. 리뷰 담당 에이전트는 cron으로 새 PR을 순회하며 필요하면 수정 작업을 할당했다.

마이그레이션은 세 가지 방식을 시도했다. 서브루틴마다 에이전트를 하나씩 두는 완전 자율형은 약 1주일 만에 동작했지만, COMMON 블록이 그대로 전역 구조체가 되고 GOTO 제어도 남아 있어 쇄신이라고 하기 어려운 결과였다. 계획, 구현, 테스트, 품질 리뷰 역할을 나눈 구조화 타입 방식은 품질은 올랐지만, 버그로 멈췄을 때 개입할 사람이 없었다. 결국 사람이 코더, 테스터, 리뷰어 에이전트 그룹을 운용하며 모듈 단위로 진행하는 방식으로 정착했다.

모듈은 경험상 약 10,000행 미만의 Fortran으로 자체 완결되는 부분 트리로 잘라낸다. 목표 C++ 아키텍처를 생성해 엔지니어가 확인하고, 승인되면 작업 큐로 분해해 계획, 구현, 테스트를 반복하며, 사람이 PR을 검토해 통합한다. 이번 조건은 자체 완결적이고 실행 가능한 코드베이스였으며, 외부 시스템 의존이나 실행 가능한 기준이 없는 마이그레이션, 문서화되지 않은 물리를 포함하는 마이그레이션은 대상이 아니라고 명시했다.

출처: Mistral AI News · mistral.ai