Ngày 9 tháng 9, Mistral công bố một bài tổng kết dự án khách hàng, kể lại cách hãng dùng agent AI của mình để chuyển bộ mô phỏng bể chứa dầu khí của một công ty năng lượng châu Âu từ Fortran 77 sang C++. Toàn bộ codebase có 300.000 dòng, lần này chỉ động đến 40.000 dòng. Khi dự án bắt đầu, gần như không có gì trong tay: không bộ kiểm thử, cũng không tài liệu được tập hợp ở một chỗ.
Những khó khăn của Fortran 77 được liệt kê rõ trong báo cáo: không có module, không có namespace, không có kiểu dữ liệu có cấu trúc; trạng thái chương trình được lưu trong các COMMON block, tương đương một vùng nhớ toàn cục dùng chung cho cả chương trình; biến được định kiểu ngầm định theo chữ cái đầu; tên biến giới hạn 6 ký tự, đọc code gần như phải đoán.
Lần thử đầu tiên là giao thẳng toàn bộ tác vụ cho agent tự chạy, mất một tuần và thất bại. Sau đó Mistral chuyển sang cách làm có con người tham gia, chia theo từng module, mỗi module giao cho bốn vai trò: lập kế hoạch, viết code, kiểm thử và rà soát chất lượng code, theo quy trình "lên kế hoạch → triển khai → kiểm thử → lặp lại". Vai trò chính của con người trong vòng lặp là gỡ agent ra khi nó bị kẹt.
Bổ sung tài liệu trước, đụng vào code sau
Khâu tài liệu được thực hiện bằng cách khởi động song song hơn một trăm agent qua Vibe CLI. Mỗi agent có thể kéo các file PDF liên quan vào đọc thông qua kho tài liệu và Mistral OCR — các giả định vật lý trong phần mềm công nghiệp thường chỉ được ghi trong báo cáo giấy hoặc bản scan, đây là phần tốn công nhất khi dự án không có tài liệu tập trung.
Việc chia module được đặt một ngưỡng kinh nghiệm: mỗi module Fortran giữ ở khoảng 10.000 dòng trở xuống.
Lấy sự khớp số liệu làm tiêu chí nghiệm thu
Thứ giữ cho dự án này đứng vững là một bộ công cụ đối chiếu song song. Nó gồm ba phần: một nhóm subroutine để xuất trạng thái chạy của codebase Fortran, một framework kiểm thử để nạp các checkpoint đó vào C++, và một số file Skill.md hướng dẫn agent dùng đúng hai phần trên.
Ví dụ trong báo cáo khá cụ thể: agent chèn một dòng vào code Fortran để in ra giá trị biến RHOG, lần chạy đó cho ra 42,71834; sau đó lấy đúng con số này làm checkpoint tham chiếu để kiểm tra module C++ sau khi chuyển đổi.
"Numerical agreement is the cheapest, most convincing proof that a module is done."
Số liệu khớp nhau là cách rẻ nhất và thuyết phục nhất để chứng minh một module đã chuyển xong.
Điểm đáng chú ý với người đọc ở nhiều nơi có lẽ không nằm ở việc Mistral dùng model nào. Trong các ngành điện lực, dầu khí, khí tượng, hàng không, code tính toán lõi vẫn còn rất nhiều Fortran từ thập niên 1970-1980, cũng ở tình trạng không kiểm thử, không tài liệu, tác giả gốc đã nghỉ hưu từ lâu. Suốt hơn chục năm qua, nói đến "viết lại" thường vướng ở khâu nghiệm thu: không có baseline, code viết lại xong thì ai ký duyệt. Cách làm của Mistral trao quyền ký duyệt cho các checkpoint số liệu, và bước này không liên quan gì đến việc dùng agent của hãng nào — chỉ cần có code cũ chạy được là có thể tự dựng lấy.
Tiền đề cũng được nêu rõ trong báo cáo. Mistral thừa nhận điều kiện khởi đầu lần này khá thuận lợi: codebase Fortran tự chứa và chạy được. Báo cáo gốc liệt kê ba nhóm trường hợp sẽ khó hơn rõ rệt: codebase phụ thuộc hệ thống bên ngoài, không có baseline chạy được, và các giả định vật lý hoàn toàn không được ghi lại ở đâu cả. Còn nhanh hơn viết lại thủ công bao nhiêu thì báo cáo không đưa ra con số.
Nguồn tham khảo: blog chính thức của Mistral, CocoLoop; số dòng code, ngưỡng chia module, cách phân vai trò agent và giá trị checkpoint RHOG đã được đối chiếu theo bài tổng kết chính thức.