เจาะลึกคอร์ส Open-Source ของ Paul Iusztin: 3 โหมดรัน Agent Loop
คอร์สโอเพนซอร์ส Building a Coding Agent From Scratch เผยสถาปัตยกรรม Python agent ชื่อ Decode แบ่ง 3 โหมดรัน พร้อมต้นทุนอินเฟอเรนซ์

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
- คอร์ส Decoding AI เปิดตัว Python agent ชื่อ Decode แยกสถาปัตยกรรมเป็น 3 โหมดรัน
- โหมด Terminal ใช้คิวควบคุมการแทรกข้อความเพื่อป้องกันข้อมูลเสียหาย
- โหมด Remote ใช้ Kitaru บน GCP และรันบน Modal เน้นต้นทุนต่อดอลลาร์
- โมเดลต้นทุนชี้ชัด งานอินเทอร์แอคทีฟเหมาะกับ API ส่วนงานออฟไลน์เหมาะกับ GPU-hour
เมื่อคุณภาพของเอเจนต์ขึ้นอยู่กับการออกแบบฮาร์เนส (harness) วิธีการรันลูปจึงกลายเป็นการตัดสินใจเชิงสถาปัตยกรรม ไม่ใช่แค่รายละเอียดการใช้งาน Paul Iusztin ได้พัฒนาคอร์สโอเพนซอร์สในชื่อ Building a Coding Agent From Scratch ผ่าน Decoding AI ซึ่งสร้าง Python agent ที่มีชื่อว่า Decode พร้อมแยกโหมดการทำงานออกเป็น 3 รูปแบบ โดยแต่ละโหมดมีโปรไฟล์ความหน่วง (latency) ที่แตกต่างกัน ส่งผลให้ต้องการผู้ให้บริการอินเฟอเรนซ์ที่ไม่เหมือนกัน
หัวใจสำคัญของระบบคือฮาร์เนสแบบไร้อินเทอร์เฟซ (headless harness) ที่แชร์ลูปการทำงานร่วมกัน โดย LLM จะเลือกการกระทำ เครื่องมือจะทำงาน และผลลัพธ์จะถูกส่งกลับเข้าสู่หน้าต่างบริบท (context window) ทั้งหมด ตัวเอเจนต์เองมีขนาดเล็กมาก เช่น ใน Decode เป็นคำนิยาม Pydantic AI ขนาดประมาณ 20 บรรทัด ขณะที่ซอร์สโค้ดของ Claude Code มีลูปหลักประมาณ 150 บรรทัด ส่วนประกอบอื่นๆ เช่น หน่วยความจำ, ทักษะ, แซนด์บ็อกซ์, สิทธิ์ และระบบตอบรับ LSP ล้วนเป็นส่วนของฮาร์เนสทั้งสิ้น

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
อินเทอร์เฟซต่างๆ จะเชื่อมต่อเข้ากับแกนกลางดังกล่าว ซึ่งนำไปสู่ 3 โหมดการทำงานที่แตกต่างกัน:
- Terminal Mode: เชื่อมต่อกับเซสชันสดในหน่วยความจำและกระบวนการเดียวกัน สตรีมเหตุการณ์ผ่าน async generators
- Remote Mode: ฮาร์เนสทำงานแบบไร้อินเทอร์เฟซผ่านรันไทม์เอเจนต์บนเซิร์ฟเวอร์ โดยใช้ Kitaru, ZenML บน GCP และรันบน Modal
- Background/Async Mode: เซสชันสดส่งงานไปยังคิวงานและคืนค่าทันที เวิร์กโฟลว์เบื้องหลังเรียก LLM และโพสต์ผลลัพธ์ภายหลัง
การจัดการปัญหาการควบคุมในโหมด Terminal ซึ่งผู้ใช้อาจพิมพ์ข้อความในขณะที่เครื่องมือทูลคอลกำลังทำงาน ทางออกของ Decode คือการใช้คิวควบคุม (steering queue) ร่วมกับประตูจัดลำดับความสำคัญ (priority gate) โดยอินพุตจะถูกพักไว้และฉีดเฉพาะที่ขอบเขตที่ปลอดภัยผ่านคำสั่งอย่าง MODEL_REQUEST และ WOULD_STOP พร้อมรองรับ 3 โหมดอินพุต ได้แก่ Enter ปกติ, Alt+Enter และ Esc เพื่อยกเลิก
"Nobody is watching. A backlog of tickets fans out to N harnesses in parallel, each producing its own PR."
Paul Iusztin
ในฝั่งของ Remote Mode งานจะถูกกระจายไปยัง N ฮาร์เนสแบบขนานโดยไม่มีมนุษย์คอยเฝ้าดู แซนด์บ็อกซ์จะรันบน Modal และ Docker ฝั่ง Local โดยเมตริกที่สำคัญคือปริมาณงานต่อดอลลาร์ (throughput per dollar) ไม่ใช่เวลาในการตอบสนองคำขอแรก (time-to-first-token) ในขณะที่โหมดที่สามซึ่งอยู่ตรงกลาง ทำหน้าที่เป็นสะพานเชื่อมระหว่างเซสชันสดและคิวงานเบื้องหลัง เหมาะสำหรับเอเจนต์ที่ทริกเกอร์ผ่าน Slack และระบบรีวิว PR เบื้องหลัง
โมเดลต้นทุนของ AI ในปัจจุบันมีความแตกต่างกันอย่างมากระหว่างการประมวลผลแบบเรียลไทม์ที่ต้องรอผลลัพธ์จากมนุษย์ (คิดเงินตามจำนวนโทเค็น) กับงานเบื้องหลังที่เน้นประมวลผลปริมาณมาก (คิดเงินตามเวลา GPU-hour) นอกจากนี้ การเลือกระหว่างระบบ Serverless กับ Reserved Capacity ยังขึ้นอยู่กับอัตราส่วนระหว่างช่วงพีคกับค่าเฉลี่ย โดยสถิติชี้ว่าการจองความจุล่วงหน้ามีอัตราการใช้งานต่ำกว่า 30% ทำให้ Serverless มักเป็นทางเลือกที่คุ้มค่ากว่าในหลายกรณี
ที่มา: MarkTechPost
พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้
ความคิดเห็น
แสดงความคิดเห็น