อยากเข้าใจ Codex Agent อย่างถ่องแท้? บทวิเคราะห์เชิงลึกนี้ห้ามพลาด!
อยากเข้าใจ Codex Agent อย่างถ่องแท้? บทวิเคราะห์เชิงลึกนี้ห้ามพลาด!
OpenAI เพิ่งทำสิ่งที่ "ผิดปกติ" ไป
โดยปกติแล้ว OpenAI จะเผยแพร่โมเดลที่แข็งแกร่งกว่า (เช่น o1) แต่ครั้งนี้ พวกเขาได้เผยแพร่บล็อกทางเทคนิคเชิงลึกชื่อ 《Unrolling the Codex agent loop》 ไม่เพียงแต่เปิดซอร์สโค้ดหลักของ Codex CLI เท่านั้น แต่ยังได้แยกส่วนประกอบทีละขั้นตอนว่า Coding Agent ที่สมบูรณ์ทำงานได้อย่างไร

ในปัจจุบันที่ Claude Code และ Cursor กำลังได้รับความนิยมอย่างมาก บทความนี้ของ OpenAI ไม่ได้เป็นเพียงการอวดศักยภาพเท่านั้น แต่ยังเป็น "คู่มือหลีกเลี่ยงข้อผิดพลาดสำหรับสถาปนิก Agent" อีกด้วย ไม่ว่าคุณจะต้องการใช้เครื่องมือเขียนโปรแกรม AI ให้ดี หรือต้องการพัฒนา Agent ด้วยตนเอง บทความนี้ก็คุ้มค่าที่จะอ่านทุกตัวอักษร
ทั้งบทความมี 8300+ คำ ใช้เวลาอ่านประมาณ 20 นาที
ก่อนอื่น Codex CLI คืออะไร?
Codex CLI เป็นเครื่องมือ Agent การเข้ารหัสแบบโอเพนซอร์สที่ผลิตโดย OpenAI ซึ่งสามารถทำงานบนคอมพิวเตอร์ในเครื่อง หรือติดตั้งในโปรแกรมแก้ไขโค้ดได้ รองรับ VS Code, Cursor, Windsurf และอื่นๆ
ที่อยู่โอเพนซอร์ส: https://github.com/openai/codex

และ Agent Loop (วงจร Agent) ที่จะแนะนำในครั้งนี้คือตรรกะหลักของ Codex CLI: มีหน้าที่ประสานงานผู้ใช้ โมเดล และการเรียกใช้โมเดล เพื่อดำเนินการปฏิสัมพันธ์ระหว่างเครื่องมือที่มีคุณค่า
Agent Loop (วงจรอัจฉริยะ)
โมเดลเป็นเพียงส่วนประกอบ Agent (อัจฉริยะ) เท่านั้นที่สามารถสร้างผลิตภัณฑ์ได้
หัวใจของ AI Agent แต่ละตัวคือสิ่งที่เรียกว่า "วงจรอัจฉริยะ (Agent Loop)" แผนผังวงจรอัจฉริยะแสดงดังต่อไปนี้:

โดยปกติแล้วเราคิดว่าการเขียนโปรแกรม AI คือ: "ฉันถาม มันตอบ" แต่ภายใน Codex CLI นี่คือกระบวนการวนซ้ำที่ซับซ้อนไม่สิ้นสุด...
Agent Loop มาตรฐานประกอบด้วยขั้นตอนต่อไปนี้:
- คำสั่งผู้ใช้: ชุดคำสั่งข้อความที่ผู้ใช้ป้อน (เช่น "ปรับโครงสร้างฟังก์ชันนี้ใหม่")
- การอนุมานของโมเดล: โมเดลตัดสินใจว่าจะตอบโดยตรงหรือเรียกใช้เครื่องมือ (Tool Call)
- การเรียกใช้เครื่องมือ: หากโมเดลตัดสินใจที่จะเรียกใช้ list files หรือ run shell CLI จะดำเนินการคำสั่งเหล่านี้ในเครื่อง
- การสังเกต (Observation): ผลลัพธ์ของการดำเนินการเครื่องมือ (โค้ด ข้อผิดพลาด รายการไฟล์) จะถูกจับ
- วนซ้ำ: ผลลัพธ์เหล่านี้จะถูกผนวกเข้ากับประวัติการสนทนา และป้อนให้กับโมเดลอีกครั้ง หลังจากที่โมเดลเห็นผลลัพธ์แล้ว จะตัดสินใจว่าจะดำเนินการอย่างไรต่อไป
- สิ้นสุด: จนกว่าโมเดลจะคิดว่างานเสร็จสิ้น และส่งออกการตอบกลับสุดท้าย
กระบวนการทั้งหมดตั้งแต่ "การป้อนข้อมูลของผู้ใช้" ไปจนถึง "การตอบสนองของอัจฉริยะ" เรียกว่ารอบของการสนทนา (เรียกว่าเธรดใน Codex)

เมื่อการสนทนาดำเนินไป ความยาวของ Prompt ที่ใช้สำหรับการอนุมานของโมเดลก็จะเพิ่มขึ้นด้วย ความยาวนี้มีความสำคัญ เนื่องจากแต่ละโมเดลมีหน้าต่างบริบท ซึ่งแสดงถึงจำนวนโทเค็นสูงสุดที่โมเดลสามารถใช้ในการเรียกใช้การอนุมานครั้งเดียวได้
การอนุมานของโมเดล
Codex CLI ส่งคำขอ HTTP ไปยัง Responses API เพื่อทำการอนุมานของโมเดล Codex ใช้ Responses API เพื่อขับเคลื่อนวงจร Agent
Responses API คืออะไร?
Responses API เป็นอินเทอร์เฟซการพัฒนา Agent รุ่นใหม่ที่เปิดตัวโดย OpenAI ในเดือนมีนาคม 2025 โดยมีเป้าหมายเพื่อรวมความสามารถในการสนทนา การเรียกใช้เครื่องมือ และการประมวลผลแบบหลายรูปแบบ เพื่อมอบประสบการณ์การสร้างแอปพลิเคชัน AI ที่ยืดหยุ่นและทรงพลังยิ่งขึ้นสำหรับนักพัฒนา
จุดสิ้นสุด Responses API ที่ Codex CLI ใช้สามารถกำหนดค่าได้ และสามารถใช้กับจุดสิ้นสุดใดๆ ที่ใช้ Responses API ได้

โมเดลทำการสุ่มตัวอย่าง (สร้างการตอบสนอง)
คำขอ HTTP ที่ส่งไปยัง Responses API จะเริ่มต้น "รอบ" แรกในการสนทนาของ Codex เซิร์ฟเวอร์จะส่งคืนการตอบสนองแบบสตรีมมิ่งผ่าน Server-Sent Events (SSE)

โปรดทราบว่า Prompt ในรอบก่อนหน้าคือคำนำหน้าที่แน่นอนของ Prompt ใหม่ การออกแบบนี้สามารถปรับปรุงประสิทธิภาพของการร้องขอในภายหลังได้อย่างมาก ซึ่งสามารถใช้ประโยชน์จากกลไกการแคช Prompt ได้

ผลกระทบของการเพิ่มความยาวของ Prompt อย่างต่อเนื่องเมื่อรอบเพิ่มขึ้น
1. ด้านประสิทธิภาพ
- ต้นทุนการสุ่มตัวอย่างของโมเดลเพิ่มขึ้น: การเพิ่มความยาวของ Prompt อย่างต่อเนื่องจะทำให้ต้นทุนการสุ่มตัวอย่างของโมเดลสูงขึ้น เนื่องจากกระบวนการสุ่มตัวอย่างต้องประมวลผลข้อมูลมากขึ้น ซึ่งนำไปสู่การเพิ่มขึ้นของปริมาณการคำนวณ
- ประสิทธิภาพของแคชลดลง: เมื่อ Prompt เพิ่มความยาวอย่างต่อเนื่องเมื่อรอบเพิ่มขึ้น ความยากลำบากในการจับคู่คำนำหน้าที่แน่นอนจะเพิ่มขึ้น และความเป็นไปได้ที่แคชจะถูกใช้งานจะลดลง
2. ด้านการจัดการหน้าต่างบริบท
- หน้าต่างบริบทหมดง่าย: การเพิ่มความยาวของ Prompt อย่างต่อเนื่องจะทำให้จำนวนเครื่องหมายในการสนทนาเพิ่มขึ้นอย่างรวดเร็ว เมื่อเกินเกณฑ์ของหน้าต่างบริบทแล้ว อาจทำให้หน้าต่างบริบทหมดได้
- ความจำเป็นในการดำเนินการบีบอัดเพิ่มขึ้น: เพื่อหลีกเลี่ยงการหมดหน้าต่างบริบท จำเป็นต้องบีบอัดการสนทนาเมื่อจำนวนเครื่องหมายเกินเกณฑ์
3. ด้านความเสี่ยงที่แคชจะไม่ถูกใช้งาน
- การดำเนินการหลายอย่างทำให้แคชไม่ถูกใช้งานได้ง่าย: หากการเพิ่มความยาวของ Prompt เกี่ยวข้องกับการเปลี่ยนแปลงเครื่องมือที่มีให้สำหรับโมเดล โมเดลเป้าหมาย การกำหนดค่าแซนด์บ็อกซ์ และการดำเนินการอื่นๆ จะเพิ่มความเสี่ยงที่แคชจะไม่ถูกใช้งาน
- เครื่องมือ MCP เพิ่มความซับซ้อน: เซิร์ฟเวอร์ MCP สามารถเปลี่ยนแปลงรายการเครื่องมือที่ให้มาแบบไดนามิก การตอบสนองต่อการแจ้งเตือนที่เกี่ยวข้องในการสนทนาที่ยาวนานอาจทำให้แคชไม่ถูกใช้งาน
ข้อมูลอ้างอิง: 《Unrolling the Codex agent loop》ที่มา: OpenAI





