ห้องทดสอบมืดมีเครื่องจักรเก่าและใหม่ต่อกับเกจค่าคู่กัน โดยเข็มหนึ่งคลาดออกจากแนวสีอำพันเล็กน้อย

Mistral ย้าย Fortran 77 สู่ C++ 40,000 บรรทัด: Parity Harness มาก่อน Agent

พี่โชว์Engineering

Mistral เผยกรณีศึกษา วันที่ 9 กันยายน 2026 จากการช่วยผู้ให้บริการพลังงานยุโรปย้าย Fortran 77 ไป C++ ช่วงแรก 40,000 จาก 300,000 บรรทัด บทเรียนสำคัญคือ agent ไม่ได้ทำให้การแปล syntax กลายเป็น modernization โดยอัตโนมัติครับ

Fortran เก่าเก็บ state ใน COMMON blocks, ใช้ implicit typing และมี control flow ที่พึ่ง GOTO ถ้าแจกหนึ่ง subroutine ต่อหนึ่ง agent ผลรอบแรกทำงานได้ แต่ globals และโครงสร้างเดิมถูกย้ายมาตรงๆ ใน syntax C++ จึงยังแบกสถาปัตยกรรมเก่า

ทีมแก้ด้วยการสร้าง parity harness ก่อน: ฝั่ง Fortran export state checkpoints แล้ว test framework ฝั่ง C++ โหลดค่าเดียวกันมาตรวจ numerical equality ทั้งผลสุดท้ายและจุดกลางที่วิศวกรโดเมนเลือก หลักฐาน “ค่าเท่ากัน” ทำให้ review งานย้ายแต่ละโมดูลถูกและชัดกว่าการอ่าน diff ใหญ่

Workflow ที่ลงตัวหลังลองสองขั้ว

  1. สร้าง caller-callee tree และรวบเอกสารจาก PDF กับ comment
  2. ให้ agent ช่วยเขียนเอกสารจาก leaf ขึ้นหา root
  3. แบ่งโมดูลเป็น subtree ที่จัดการได้ โดยกรณีนี้ใช้ขนาดประมาณไม่เกิน 10,000 บรรทัด
  4. ให้ planner, coder, tester และ reviewer ทำงานตามคิว
  5. วางคนคั่นระหว่างโมดูลเพื่ออนุมัติ architecture และแก้จุดที่ agent ติด

การปล่อย agent อิสระเต็มที่ให้ผลเร็วแต่คุณภาพโครงสร้างต่ำ ส่วน multi-agent ที่ไม่มีคนช่วยเมื่อเจอบั๊กซับซ้อนก็ติดค้าง ทางกลางคือ workflow มีบทบาทชัดและ human checkpoint

กรณีนี้มี baseline ที่รันได้และวิศวกร reservoir ช่วยระบุ invariants หากระบบเดิมรันไม่ได้หรือฟิสิกส์อยู่ในความรู้ปากเปล่า ความเสี่ยงสูงกว่านี้มาก จึงอย่าใช้จำนวนบรรทัดเป็นตัวทำนายเวลาเพียงอย่างเดียว

Recap

  • สร้าง parity harness ก่อนเขียน target implementation
  • ดึงความรู้โดเมนและ checkpoints ออกจากคนให้เป็น test
  • แบ่งงานตาม dependency tree ไม่ใช่จำนวนไฟล์อย่างเดียว
  • ให้คนอนุมัติ architecture และรับช่วงเมื่อ agent ติด