ทำไม AI Coding Agents ถึงล้มเหลว: ช่องว่างสำคัญระหว่างไฟล์และบรรทัดโค้ด

แม้ว่า AI coding agents จะมีความสามารถในการแก้ไขบั๊กซอฟต์แวร์เพิ่มมากขึ้นเรื่อยๆ แต่การศึกษาใหม่เผยให้เห็นว่าพวกมันกำลังประสบปัญหา "localization" (การระบุตำแหน่ง) ที่สำคัญ แม้พวกมันจะสามารถนำทางไปยังไฟล์ที่ถูกต้องภายในฐานโค้ด (codebase) ขนาดใหญ่ได้ แต่บ่อยครั้งกลับล้มเหลวในการระบุบรรทัดโค้ดที่เฉพาะเจาะจงซึ่งจำเป็นต่อการแก้ไขปัญหา

ขอแนะนำ SWE-Explore: ก้าวข้ามผ่านแค่การวัดอัตราการซ่อมแซม

ที่ผ่านมา ประสิทธิภาพของ AI coding agents มักถูกวัดด้วยเกณฑ์แบบ binary เพียงอย่างเดียว นั่นคือ เอเจนต์สามารถแก้ไขบั๊กได้หรือไม่? วิธีการนี้ละเลยเหตุผลเบื้องหลังความล้มเหลว การซ่อมแซมที่ล้มเหลวอาจหมายความว่าเอเจนต์เขียน patch ที่ไม่ดี หรืออาจหมายความว่าเอเจนต์ไม่ได้เข้าไปดูตรรกะ (logic) ที่เกี่ยวข้องเลยด้วยซ้ำ

เพื่อแก้ไขจุดบอดนี้ ทีมวิจัยระดับนานาชาติ ซึ่งรวมถึงนักวิทยาศาสตร์จาก Shanghai Jiao Tong University ได้พัฒนา SWE-Explore ขึ้นมา ซึ่งแตกต่างจากเกณฑ์มาตรฐาน (benchmarks) แบบเดิมตรงที่ SWE-Explore จะแยกเฉพาะขั้นตอนการค้นหาต้นน้ำ (upstream search phase) ออกมา โดยจะประเมินความสามารถของเอเจนต์ในการนำคำอธิบายบั๊กมาวิเคราะห์ แล้วส่งคืนรายการส่วนของโค้ดที่จัดลำดับความสำคัญตามความเกี่ยวข้องกับปัญหาจริงๆ ชุดข้อมูลนี้มีความครอบคลุมอย่างมาก โดยรวบรวมจาก 848 งาน จาก 203 โปรเจกต์โอเพนซอร์ส และ 10 ภาษาโปรแกรม โดยมี Python เป็นภาษาที่โดดเด่นที่สุด (547 งาน)

ช่องว่างด้านความแม่นยำ: ความสำเร็จในระดับไฟล์ เทียบกับ ความล้มเหลวในระดับบรรทัด

สิ่งที่น่าตกใจที่สุดจากการศึกษานี้คือความแตกต่างอย่างมหาศาลระหว่างความแม่นยำในระดับไฟล์และระดับบรรทัด เมื่อทดสอบกับเอเจนต์อเนกประสงค์อย่าง Claude Code, Codex และ OpenHands ผลลัพธ์ที่ได้ก็น่าสนใจดังนี้:

  • ความแม่นยำในระดับไฟล์: เอเจนต์ทำผลงานได้ดี สามารถระบุไฟล์ต้นฉบับที่ถูกต้องและจัดลำดับความสำคัญได้สูง
  • ความแม่นยำในระดับบรรทัด: ประสิทธิภาพลดฮวบ เอเจนต์เขียนโค้ดทั่วไปครอบคลุมเพียง 14% ถึง 19% ของบรรทัดโค้ดที่จำเป็นต่อการแก้ไขจริงๆ เท่านั้น

ที่น่าสนใจคือ เพียงแค่การอัปเกรด Large Language Model (LLM) ที่อยู่เบื้องหลังก็ไม่สามารถแก้ปัญหานี้ได้ ไม่ว่าจะใช้โมเดลจาก OpenAI, Anthropic, Google, Moonshot หรือ Zhipu รูปแบบที่พบก็ยังคงเหมือนเดิม นั่นคือมีอัตราการค้นหาไฟล์ที่พบสูง แต่มีการครอบคลุมในระดับบรรทัดที่แย่มาก งานวิจัยระบุว่าระบบเฉพาะทางอย่าง CoSIL ทำผลงานได้ดีกว่าเอเจนต์ทั่วไป เนื่องจากมองโค้ดเป็นเครือข่ายของบล็อกโครงสร้างที่เชื่อมโยงกัน ซึ่งบ่งชี้ว่าการเปลี่ยนแปลงทางสถาปัตยกรรมมีความสำคัญมากกว่าพลังดิบของโมเดล

ผลกระทบของเกณฑ์ขั้นต่ำ: ทำไมการ "อ่านให้มากขึ้น" ถึงสำคัญ

จากการทดลองแบบ ablation ที่มีการควบคุม นักวิจัยได้ค้นพบ "ปรากฏการณ์ขีดจำกัด" (threshold effect) ที่เกี่ยวข้องกับบริบท (context) โดยการปรับเปลี่ยนปริมาณโค้ดหลักที่ป้อนให้กับโมเดล (ตั้งแต่ 0% ถึง 100%) พวกเขาพบว่าประสิทธิภาพในการซ่อมแซมไม่ได้เพิ่มขึ้นแบบเชิงเส้น

สำหรับงานที่ง่ายกว่า จะมีจุดเปลี่ยนที่ชัดเจน: หากเอเจนต์เห็นส่วนของโค้ดหลักที่จำเป็นน้อยกว่า 50% อัตราความสำเร็จในการซ่อมแซมจะยังคงใกล้เคียงกับศูนย์ การก้าวกระโดดอย่างมีนัยสำคัญของความสำเร็จในการซ่อมแซมจะเกิดขึ้นก็ต่อเมื่อเอเจนต์สามารถเข้าถึงบริบทที่จำเป็นได้ระหว่าง 50% ถึง 75% เท่านั้น ที่สำคัญคือ การศึกษาพบว่าการป้อนโค้ดที่เป็น "noise" หรือข้อมูลที่ไม่เกี่ยวข้อง ไม่ได้ส่งผลเสียต่อประสิทธิภาพมากเท่ากับการขาดบรรทัดที่สำคัญไป ข้อสรุปสำหรับนักพัฒนาจึงชัดเจนว่า: ในยุคของ AI agents การให้บริบทที่มากขึ้นนั้นดีกว่าการเสี่ยงที่จะกรองรายละเอียดที่จำเป็นออกไป

สรุปประเด็นสำคัญ

  • Localization คือคอขวด: AI agents มีความเชี่ยวชาญในการค้นหาไฟล์ที่ถูกต้อง แต่ประสบปัญหาอย่างมากในการระบุบรรทัดของโค้ดที่เฉพาะเจาะจงซึ่งจำเป็นสำหรับการแก้ไข
  • การขยายขนาดโมเดลไม่ใช่ทางออกที่แก้ปัญหาได้ทุกอย่าง: การอัปเกรดเป็น LLMs ที่ทรงพลังมากขึ้นไม่ได้ช่วยแก้ปัญหาช่องว่างความแม่นยำในระดับบรรทัด แต่แนวทางเชิงสถาปัตยกรรมเฉพาะทางอย่าง CoSIL นั้นมีประสิทธิภาพมากกว่า
  • กฎบริบท 50%: ความสำเร็จในการซ่อมแซมของ AI จะเป็นไปตามรูปแบบขีดจำกัด (threshold pattern) โดยต้องมีบริบทของโค้ดที่เกี่ยวข้องปรากฏอยู่ให้เห็นอย่างน้อย 50-75% ก่อนที่การแก้ไขจะประสบความสำเร็จได้อย่างมีนัยสำคัญ