Google ใช้ Gemini 4 Argon จูนโค้ด Python แสนบรรทัดเร็วขึ้น 40%
13 ต.ค. 2026
เมื่อมีการเปิดตัวโมเดลใหม่ เดโมส่วนใหญ่มักแสดงแอปแบบ greenfield ที่สร้างจากโฟลเดอร์ว่างเปล่า แม้จะดูน่าตื่นเต้นแต่กลับสะท้อนการทำงานจริงของซอฟต์แวร์เอนจิเนียร์ได้น้อยมาก โดยเฉพาะในแง่ที่โมเดลจะจัดการกับ codebase เดิมที่มีอยู่ได้อย่างไร
สำหรับการเปิดตัว Gemini 4 Argon เราต้องการทดสอบความสามารถในการทำงานโดยไม่มีผู้ดูแล (unattended) ในชั่วข้ามคืนกับโจทย์ที่ยากขึ้น นั่นคือการค้นหาและแก้ไขจุดคอขวดด้านประสิทธิภาพแบบข้ามไฟล์ใน google/adk-python ซึ่งเป็น Agent Development Kit (ADK) โอเพนซอร์สของ Google สำหรับสร้าง enterprise agent
Repository ภาษา Python นี้ประกอบด้วยโค้ดประมาณ 205,000 บรรทัด ในซอร์สโค้ดเกือบ 800 ไฟล์ และมี unit test รองรับอีกเกือบ 17,000 รายการ การเพิ่มประสิทธิภาพจึงเป็นบททดสอบที่หินสำหรับโมเดล เพราะไม่สามารถหาจุดที่ทำให้ระบบช้าลงได้เพียงแค่ดูไฟล์เดียว แต่ต้องมองภาพรวมความเชื่อมโยงของทั้ง codebase ในการทำงานระยะยาว
บทความนี้จะพาไปเจาะลึก prompt, ไฟล์กฎ .agents/skills และการตัดสินใจทำ code review ของมนุษย์จากการรันโมเดล 11 ชั่วโมง ซึ่งช่วยลดเวลาเตรียมเซสชันของ ADK ลงได้ 40% ในการทำงานระยะยาว และเร่งการ import แพ็กเกจแบบ cold start ได้ 21% โดยคุณจะได้เห็นทั้งส่วนที่นำไปใช้จริง ส่วนที่ถูกปฏิเสธ และวิธีตั้งค่าเวิร์กโฟลว์นี้กับโปรเจกต์ของคุณเอง
รูปที่ 1: overhead ของ ADK ก่อนการร้องขอโมเดลครั้งแรก วัดหลังจากผ่านไป 50 และ 150 turn การเปลี่ยนแปลงของ Argon ช่วยลดลงได้ประมาณ 40% ทั้งสองจุด ดังนั้นเวลาที่ประหยัดได้จะเพิ่มขึ้นเมื่อเซสชันยาวขึ้น โดยปกติการใช้ coding agent ปรับแต่งประสิทธิภาพมักต้องมีเอนจิเนียร์คอยควบคุมอย่างใกล้ชิด เช่น การรัน profiler แล้วชี้จุดให้โมเดลแก้ไข แต่ครั้งนี้เราต้องการทดสอบว่า Argon จะทำอย่างไรหากได้รับเพียงแค่เป้าหมายหลักที่ทีมให้ความสำคัญ
ในรอบแรก เราทดสอบ Argon โดยไม่มีคำแนะนำเฉพาะเจาะจงสำหรับ repository เลย โดยให้ prompt เพียงย่อหน้าเดียว ดังนี้:
Make ADK add no noticeable overhead to any agent:
at startup, in long sessions, in multi-agent and
workflow setups. Keep what the model receives and
the public API unchanged, and back each change
with a test that would catch a regression.ผลการรันรอบแรกใช้เวลา 2 ชั่วโมง โดย Argon เริ่มเขียนสคริปต์เบนช์มาร์กในนาทีที่ 7 และใช้เวลาอีก 70 นาทีในการวัดผลและอ่านโค้ดก่อนจะเริ่มแก้ไขซอร์สโค้ด ซึ่งมันสามารถพบจุดคอขวดในการคัดลอกเซสชันและการ import แพ็กเกจได้จริง และโค้ดบางส่วนถูกรวมเข้าใน final commit ในที่สุด
อย่างไรก็ตาม รอบแรกยังมีจุดบกพร่องเรื่องธรรมเนียมปฏิบัติ (maintainer conventions) เนื่องจาก Argon ไม่ทราบวิธีการรีวิวโค้ดของทีม ADK จึงมีการเพิ่ม hook ที่ไปเปลี่ยน JSON schema สาธารณะ หรือพลาดกรณีขอบเขต (edge cases) บางอย่าง รวมถึงไม่ได้ระบุตัวเลขเบนช์มาร์กใน pull request
ในการรันรอบที่สอง เราจึงปรับปรุง 2 จุดใหญ่ อย่างแรกคือการใส่แนวทางปฏิบัติของทีมลงในไดเรกทอรี .agents/skills ซึ่งเปรียบเสมือนคู่มือสำหรับเอนจิเนียร์ใหม่ โดยใช้ไฟล์ SKILL.md ชี้ไปยังรายละเอียดที่จำเป็นเพื่อไม่ให้ context window ล้น ซึ่ง Argon ได้อ่านกฎการจัดการโมเดลและการทำ lazy-loading ก่อนเริ่มแตะต้องโค้ด
รูปที่ 2: การรันครั้งแรกสองชั่วโมงของ Argon เปรียบเทียบกับการรัน 11 ชั่วโมงในชั่วข้ามคืนสำหรับเป้าหมายเดียวกัน รอบที่ 1 พบความเร็วที่เพิ่มขึ้นจริงได้ด้วยตัวเอง ขณะที่รอบที่ 2 ทำตามธรรมเนียมปฏิบัติของ repo, รัน unit test ทั้งหมด 16,892 รายการ และเปิด pull request ที่พร้อมสำหรับการรีวิว
อย่างที่สอง เราเปิดโหมด /goal ใน Google Antigravity เพื่อรักษาเป้าหมายหลักไว้แม้จะมีการย่อข้อมูล context พร้อมเพิ่มคำสั่งให้สร้าง pull request ที่ระบุตัวเลขเปรียบเทียบก่อนและหลังการแก้ไข:
/goal Make ADK add no noticeable overhead to any agent:
at startup, in long sessions, in multi-agent and workflow setups.
Keep what the model receives and the public API unchanged, and back each change with a test that would catch a regression.
Open one pull request against main that the ADK maintainers would approve, with before and after numbers in its description. Don't merge it.เมื่อตั้งค่าครบถ้วน Argon ก็ทำงานแบบไร้ผู้ดูแลเป็นเวลา 11 ชั่วโมงในชั่วข้ามคืน (รูปที่ 3)
รูปที่ 3: การรัน ADK ข้ามคืนของ Argon ใน Google Antigravity prompt /goal จะถูกปักหมุดไว้ที่ด้านบนและด้านล่างของหน้าต่าง ขณะที่งานที่เสร็จแล้วจะถูกยุบลงในบล็อกสรุป ดังนั้นกฎเดิมจะยังคงอยู่ในสายตาตลอดหลายชั่วโมงของการแก้ไข, เบนช์มาร์ก และการรันเทสต์ (ภาพหน้าจอถูกเล่นซ้ำในอินเทอร์เฟซ Antigravity สาธารณะเพื่อลบรายละเอียดพื้นที่ทำงานภายในออก)
เช้าวันรุ่งขึ้น เราพบพฤติกรรมที่น่าทึ่งคือ Argon อ่านไฟล์แนวทางปฏิบัติ 12 ไฟล์ และรันเบนช์มาร์กพื้นฐานผ่าน 4 รูปแบบเวิร์กโหลด รวม 30 ครั้ง แม้กระทั่ง 3 นาทีก่อนจบการทำงาน 11 ชั่วโมง มันยังตรวจเช็ก diff ของตัวเอง พบ bug ในระบบแคช และสั่งรัน unit test ทั้งหมด 16,892 รายการซ้ำอีกรอบก่อนจะหยุดทำงานเอง
หัวใจสำคัญคือ Argon ทำงานประสานข้ามโมดูลได้ดีกว่า profiler ทั่วไปที่บอกได้เพียงจุดที่ช้า แต่ Argon สามารถตามรอยผู้เรียก (caller) และการอ้างอิงที่แชร์กันใน 40 ไฟล์ เพื่อให้มั่นใจว่าการปรับปรุงความเร็วจะไม่กระทบต่อการทำงานของแอปเดิม โดยรวมแล้ว Argon เสนอการปรับแต่ง 6 อย่างใน 32 ไฟล์ ซึ่ง 2 อย่างที่แก้จุดคอขวดหลักได้ถูกนำไปใช้งานจริง ได้แก่:
-
การจัดการประวัติการสนทนา: เดิม ADK จะทำ deep-copy ประวัติทั้งหมดทุกครั้งที่อ่าน Argon ได้เปลี่ยนให้กรอง event ก่อนคัดลอก และเปลี่ยนมาใช้วิธีการคัดลอกที่เร็วและปลอดภัยกว่า (cycle-safe)
-
การทำ Lazy-loading: เดิมการ import ADK จะดึงโมดูลหนักๆ เช่น เสียง วิดีโอ หรือเว็บเซิร์ฟเวอร์มาทั้งหมด Argon จึงเปลี่ยนมาใช้ตัวเข้าถึงแบบ lazy เพื่อให้โหลดเฉพาะเมื่อจำเป็นต้องใช้จริง แต่ยังคงความสามารถในการ patch attribute สำหรับการทดสอบไว้
สำหรับการปรับแต่งอีก 4 อย่างที่เหลือ เราเลือกที่จะปฏิเสธในการรีวิวโค้ด แม้โมเดลจะนำเสนอไอเดียที่สร้างสรรค์ แต่บางส่วนขัดกับกฎของเฟรมเวิร์กหรือมีความเสี่ยงต่อความเสถียรของระบบ
รูปที่ 4: การปรับแต่งหกอย่างใน pull request ช่วงเช้าของ Argon แบ่งระหว่างสองอย่างที่เรานำไปใช้จริงและสี่อย่างที่เราตัดออกในการรีวิวโค้ด เราเก็บการเปลี่ยนแปลงการคัดลอกเซสชันและการ lazy-import ที่ลด overhead จริงได้อย่างสะอาด และตัดสี่อย่างที่พึ่งพาสถานะที่เปราะบาง, ภายในไลบรารีส่วนตัว หรือผลดีที่เกิดขึ้นเฉพาะในการทดสอบจำลอง
รายการที่เราปฏิเสธประกอบด้วย การแคช event ที่พึ่งพาสถานะหน่วยความจำซึ่งไม่ปลอดภัย, การอ่าน attribute ส่วนตัวของ OpenTelemetry ที่อาจพังเมื่ออัปเดตไลบรารี, การแก้โค้ดที่ทำให้อ่านยากขึ้นโดยไม่ช่วยเรื่อง latency และการเพิ่มความซับซ้อนในการติดตามสถานะสำหรับการทดสอบบางประเภท
แนวทางที่ได้ผลที่สุดคือ "Agent สำรวจ, ผู้ดูแลคัดออก" เราได้รวมส่วนที่ดีที่สุดมาเป็น commit ที่ผ่านการรีวิวจากทีม และบันทึกไว้ว่า "Argon generated these changes"
ในการวัดผล เราใช้เบนช์มาร์กแยกต่างหาก (bench_turn.py) ที่ Argon ไม่เคยเห็น เพื่อวัด overhead ของเฟรมเวิร์ก ADK โดยตรงในแต่ละ turn (ขั้นตอนภายในที่ agent ทำงาน) ซึ่งตัวเลขมัธยฐานจากการรันหลายครั้งยืนยันประสิทธิภาพที่เพิ่มขึ้น
รูปที่ 5: ค่ามัธยฐาน overhead ของเฟรมเวิร์ก ADK ก่อนและหลังการเปลี่ยนแปลงของ Argon ในทั้งห้าเบนช์มาร์ก การเตรียมเซสชันลดลงประมาณ 40% ในเซสชันที่ยาวนานและเวลา import แพ็กเกจลดลง 21% ในขณะที่เวลาของ process ใหม่จนถึงคำขอแรกยังคงคงที่เพราะโมดูลที่ถูกเลื่อนออกไปจะโหลดใน turn แรก
สรุปผลลัพธ์ที่นักพัฒนาจะได้รับ:
- การ import เร็วขึ้น 21% ช่วยทั้งใน CLI และการพัฒนาในเครื่อง
- การลด overhead ก่อนเข้าโมเดลลง 40% ช่วยให้การรัน agent ที่มีการโต้ตอบหลายครั้งเร็วขึ้นอย่างเห็นได้ชัด เช่น การรัน 158 turn ลดเวลาจาก 65.6 วินาที เหลือ 56.1 วินาที
นักพัฒนาสามารถเข้าถึง Argon ได้แล้วผ่าน Gemini platform ด้วย model ID gemini-4-argon, ใน Google AI Studio และ Google Antigravity
สามารถศึกษารายละเอียดเพิ่มเติมได้ที่ model card และ คู่มือนักพัฒนา
ศึกษาเพิ่มเติม: Python Quickstart สำหรับ ADK | ดู pull request และ commit จริง | ตัวอย่างเลย์เอาต์ .agents/skills

ความคิดเห็น (0)
เข้าสู่ระบบเพื่อร่วมแสดงความเห็น
สมัครสมาชิกมาเป็นคนแรกที่แสดงความเห็นกันเลยโบร
