𝗙𝗮𝘀𝘁𝗖𝗼𝗻𝘁𝗲𝘅: 𝗦𝗲𝗽𝗮𝗿𝗮𝘁𝗲 𝗦𝗲𝗮𝗿𝗰𝗵 𝗳𝗿𝗼𝗺 𝗦𝗼𝗹𝘃𝗶𝗻𝗴

Coding agents เสียเวลามากเกินไปกับการค้นหาโค้ด

Microsoft และ Shanghai Jiao Tong University ได้ทำการศึกษาปัญหานี้ และพบว่าการค้นหาโค้ดใช้สัดส่วนถึง 56.2% ของจำนวนครั้งในการใช้เครื่องมือ (tool use turns) และยังใช้โทเคน (tokens) ไปถึง 46.5% ของจำนวนทั้งหมด

เมื่อโมเดลเพียงตัวเดียวต้องทำทั้งการค้นหาและแก้ไขโค้ด หน่วยความจำของมันจะเริ่มสับสนวุ่นวาย เพราะเต็มไปด้วยเศษเสี้ยวของไฟล์ (file snippets) ที่ไม่จำเป็นและการคาดเดาที่ผิดพลาด ซึ่งสิ่งนี้ทำให้การใช้เหตุผล (reasoning) ทำได้ยากขึ้น

FastContext เข้ามาแก้ปัญหานี้ โดยการใช้ subagent แยกต่างหากสำหรับการสำรวจ repository

วิธีการทำงาน: • explorer agent จะค้นหาไฟล์และเลขบรรทัดที่ถูกต้อง • มันจะไม่ส่งสรุปเนื้อหายาวๆ ไปยัง agent หลัก • มันจะส่งเพียงชุดข้อมูลหลักฐานที่แม่นยำจำนวนเล็กน้อยเท่านั้น • agent หลักจะสามารถจดจ่ออยู่กับการแก้ไขบั๊กได้อย่างเต็มที่

การออกแบบนี้ให้ผลลัพธ์ที่ดีเยี่ยม 2 ประการ:

  1. ลดสัญญาณรบกวน (noise) agent หลักไม่จำเป็นต้องเห็นทุกทางตันที่ค้นหาไม่เจอ
  2. ประสิทธิภาพดีขึ้น โมเดลขนาดเล็ก (4B ถึง 30B parameters) ก็สามารถจัดการงานด้านการค้นหาได้อย่างมีประสิทธิภาพ

ผลลัพธ์ที่ได้นั้นชัดเจน การใช้ FastContext ร่วมกับ Mini-SWE-Agent ช่วยเพิ่มความสำเร็จในการทำงานขึ้น 5.5% และยังช่วยลดการใช้โทเคนลงได้ถึง 60%

บทเรียนสำหรับการสร้าง agent:

  • มองว่าการค้นหาเป็นงานหลัก ไม่ใช่แค่ขั้นตอนรอง
  • ส่งเฉพาะเส้นทางไฟล์ (file paths) และเลขบรรทัด ไม่ใช่ประวัติการแชททั้งหมด
  • ฝึกฝนโมเดลให้ส่งข้อมูลที่มีโครงสร้าง (structured data) เพื่อส่งต่อให้โมเดลถัดไป
  • ให้ความสำคัญกับการใช้โทเคนพอๆ กับอัตราความสำเร็จของงาน

อย่าบังคับให้โมเดลเพียงตัวเดียวทำทุกอย่าง การมีผู้เชี่ยวชาญเฉพาะด้านสำหรับการค้นหา จะช่วยให้ตัวแก้ปัญหา (solver) ทำงานได้เร็วขึ้นและน่าเชื่อถือยิ่งขึ้น

Source: https://dev.to/prabhakar_chaudhary_7afe4/fastcontext-why-coding-agents-benefit-from-a-separate-repository-explorer-3gen

Optional learning community: https://t.me/GyaanSetuAi