Mistral เปิดเผยรายละเอียดการย้ายโค้ด Fortran กว่า 40,000 บรรทัดด้วยเอเจนต์ AI
Mistral says it helped a European energy operator migrate 40,000 lines of Fortran 77 to C++ using parity testing, documentation agents and structured human-reviewed workflows.
คำตอบโดยย่อ
Mistral ประกาศอะไรเกี่ยวกับการใช้ AI เอเจนต์เพื่อปรับปรุงโค้ดเก่าให้ทันสมัย
Mistral described a project with a European energy operator that migrated 40,000 lines of Fortran 77 from a physics-intensive reservoir simulator to C++. The company said it built a numerical parity harness, used agents to document the codebase, and settled on workflows combining coder, tester and reviewer agents with human checkpoints.
ประเด็นสำคัญ
- Mistral says it helped a European energy operator migrate 40,000 lines of Fortran 77 to C++ in a reservoir simulator with no test suite or centralized documentation.
- บริษัทได้สร้างระบบตรวจสอบความสอดคล้อง (parity harness) เพื่อเปรียบเทียบผลลัพธ์สุดท้ายและจุดตรวจสอบระหว่างขั้นตอนที่สำคัญระหว่างโค้ดเบส Fortran และ C++
- Mistral used Vibe CLI to deploy more than 100 agents to document the Fortran program and create pull requests for review.
- หลังจากทดสอบทั้งแนวทางที่ให้ระบบทำงานอัตโนมัติเต็มรูปแบบและแนวทางที่มีโครงสร้างรัดกุมกว่า มิสทรัลก็เลือกใช้กระบวนการทำงานที่ผสานเอเจนต์สามตัว ได้แก่ ผู้เขียนโค้ด ผู้ทดสอบ และผู้ตรวจทาน เข้ากับการแทรกแซงและจุดตรวจสอบโดยมนุษย์
Mistral ระบุว่าได้ช่วยผู้ให้บริการพลังงานรายหนึ่งในยุโรปแปลงโค้ด Fortran 77 จำนวน 40,000 บรรทัด ไปเป็น C++ ในระบบจำลองแหล่งกักเก็บ (reservoir simulator) ที่เน้นการคำนวณเชิงฟิสิกส์อย่างหนัก บริษัทได้อธิบายโครงการนี้ไว้ในโพสต์ที่เผยแพร่เมื่อวันพุธ โดยระบุว่าโค้ดเดิมไม่มีชุดทดสอบหรือเอกสารประกอบส่วนกลางใดๆ
การสร้างระบบตรวจสอบเชิงตัวเลข
Mistral ระบุว่าได้สร้างกลไกตรวจสอบความสอดคล้อง (parity harness) ขึ้นก่อนเริ่มการย้ายระบบ โดยออกแบบมาเพื่อพิสูจน์ความเท่าเทียมเชิงตัวเลขระหว่างโค้ดทั้งสองชุด ทั้งในแง่ผลลัพธ์สุดท้ายและจุดกลางทางที่สำคัญซึ่งวิศวกรแหล่งกักเก็บของลูกค้าเป็นผู้ระบุไว้
บริษัทได้เพิ่มซับรูทีนใน Fortran เพื่อส่งออกสถานะของโปรแกรม สร้างเฟรมเวิร์กทดสอบ C++ สำหรับโหลดจุดตรวจสอบเหล่านั้น และจัดทำไฟล์ Skill.md เพื่อใช้เป็นแนวทางให้กับเอเจนต์ Mistral ระบุว่าเอเจนต์ใช้ระบบดังกล่าวในการติดตั้งเครื่องมือวัดผลในโปรแกรม Fortran บันทึกภาพรวมของสถานะ (state snapshots) และตรวจสอบความถูกต้องของโมดูล C++ ที่ย้ายมาแล้ว ตัวอย่างหนึ่งคือการรัน Fortran ที่ส่งออกค่าตัวแปร RHOG ซึ่งภายหลังถูกนำไปใช้เป็นจุดอ้างอิงในการทดสอบ C++
การจัดทำเอกสารประกอบโค้ด
Mistral ระบุว่าเอกสารประกอบเดิมกระจัดกระจายอยู่ในไฟล์ PDF เก่าและคอมเมนต์ในซอร์สโค้ด Fortran บริษัทจึงใช้ตัวแยกวิเคราะห์ (parser) ที่พัฒนาขึ้นเองเพื่อประมวลผลโค้ดทั้งหมด และสร้างเป็นแผนภูมิความสัมพันธ์ระหว่างผู้เรียกกับผู้ถูกเรียก (caller-callee tree) ซึ่งแสดงโปรแกรมในรูปของซับรูทีนที่เชื่อมโยงกัน
ด้วยการใช้ Vibe CLI บริษัทได้เรียกใช้เอเจนต์กว่า 100 ตัวเพื่อจัดทำเอกสารประกอบแผนภูมิดังกล่าว โดยเอเจนต์สามารถดึงไฟล์ PDF ที่เกี่ยวข้องผ่านคลังเอกสารและ Mistral OCR ได้ กระบวนการเริ่มจากปลายกิ่งของแผนภูมิ โดยแต่ละโหนดจะเรียกใช้ซับเอเจนต์ขึ้นมาจัดทำเอกสารและเปิดคำขอ pull request ไปยังรีโพซิทอรีต้นฉบับ ส่วนเอเจนต์ผู้ตรวจทานซึ่งทำงานตามตารางเวลา (cron) จะตรวจสอบ pull request ที่เปิดใหม่และจัดคิวแก้ไขเมื่อจำเป็น
การทดสอบรูปแบบการทำงานของเอเจนต์ที่แตกต่างกัน
Mistral ระบุว่าแนวทางแรกคือการมอบหมายเอเจนต์อัตโนมัติหนึ่งตัวให้ดูแลซับรูทีน Fortran แต่ละตัวเป็นเวลาหนึ่งสัปดาห์ โค้ดที่ได้ใช้งานได้จริง แต่บริษัทระบุว่ายังคงหลงเหลือโครงสร้างส่วนกลางที่อิงจากบล็อก COMMON และการควบคุมลำดับการทำงานด้วย GOTO อยู่ ซึ่งมีลักษณะเหมือนโค้ด Fortran ที่เพียงแค่เขียนใหม่ด้วยไวยากรณ์ C++
ในแนวทางที่สอง เอเจนต์สี่ตัวได้แก่ผู้วางแผน ผู้เขียนโค้ด ผู้ทดสอบ และผู้ตรวจสอบคุณภาพโค้ด ทำงานร่วมกันในแต่ละโมดูล Mistral ระบุว่าคุณภาพของโค้ดดีขึ้น แต่ท้ายที่สุดเอเจนต์ก็หยุดชะงักเมื่อพบข้อบกพร่อง
จากนั้นบริษัทจึงหันมาใช้กระบวนการทำงานที่มีมนุษย์เป็นผู้ควบคุม โดยใช้เอเจนต์ทำหน้าที่เขียนโค้ด ทดสอบ และตรวจทาน ทีมงานร่วมมือกับวิศวกรแหล่งกักเก็บเพื่อระบุโมดูลที่เป็นอิสระต่อกันซึ่งมีขนาดไม่เกินราว 10,000 บรรทัดของ Fortran จากนั้นออกแบบสถาปัตยกรรม C++ เป้าหมาย ให้วิศวกรตรวจทาน และแบ่งแบบแผนที่ผ่านการอนุมัติออกเป็นคิวงานย่อย แต่ละงานดำเนินตามวงจรวางแผน ลงมือทำ ทดสอบ และทำซ้ำ โดยมีมนุษย์ตรวจทาน pull request ก่อนรวมเข้ากับโค้ดหลักทุกครั้ง
Mistral ระบุว่าสปรินต์แรกครอบคลุมโค้ด 40,000 บรรทัดจากทั้งหมด 300,000 บรรทัด และตั้งข้อสังเกตว่าโค้ดชุดนี้เป็นระบบปิดที่รันได้ในตัวเอง ขณะที่การย้ายระบบที่เกี่ยวข้องกับระบบภายนอก ไม่มีฐานอ้างอิงที่รันได้ หรือมีฟิสิกส์ที่ไม่มีการบันทึกไว้เป็นเอกสาร จะเผชิญความท้าทายเพิ่มเติม
ที่มา: Mistral, “Modernizing complex legacy code with AI agents,” เผยแพร่เมื่อวันที่ 9 กันยายน 2026
คำถามที่พบบ่อย
- How much code was migrated?
- Mistral ระบุว่าในสปรินต์แรก ทีมงานได้แปลงโค้ดจำนวน 40,000 บรรทัด จากทั้งหมด 300,000 บรรทัดในโค้ดเบส จากภาษา Fortran 77 มาเป็น C++
- What was the parity harness used for?
- ระบบส่งออกสถานะจากโค้ดเบส Fortran โหลดจุดตรวจสอบ (checkpoint) เข้าสู่ชุดทดสอบ C++ แล้วตรวจสอบความเท่ากันเชิงตัวเลขของผลลัพธ์สุดท้ายและจุดกลางที่เลือกไว้
- How did agents document the legacy code?
- Mistral สร้างแผนผังความสัมพันธ์ระหว่างตัวเรียกและฟังก์ชันที่ถูกเรียก (caller-callee tree) ด้วยตัวแยกวิเคราะห์ (parser) ที่พัฒนาขึ้นเอง และใช้ Vibe CLI เพื่อเรียกใช้งานเอเจนต์มากกว่า 100 ตัวพร้อมกัน เอเจนต์เหล่านี้ดึงข้อมูลจากไฟล์ PDF ที่เกี่ยวข้องผ่านคลังเอกสารและ Mistral OCR จากนั้นจึงเปิดคำขอรวมโค้ด (pull request)
- What workflow did Mistral ultimately use?
- มนุษย์ควบคุมดูแลเวิร์กโฟลว์ของเอเจนต์ที่ทำหน้าที่เขียนโค้ด ทดสอบ และตรวจสอบ โดยย้ายระบบทีละโมดูล มนุษย์เป็นผู้ตรวจสอบคำขอดึงข้อมูล (pull request) และเข้าแทรกแซงเมื่อเอเจนต์ติดขัด