Codex Fixing Codex: ลูปแบบฉันทามติ

ผมได้สร้าง agent loop ที่ทำได้มากกว่าแค่การแนะนำโค้ด แต่มันสามารถเขียนโค้ด, ตรวจสอบ (review), และรวม (merge) pull requests ของตัวเองได้

เพื่อทดสอบระบบ ผมได้ลองใช้ลูปนี้กับ fork ของ codex CLI โดยปล่อยให้เหล่า agent พยายามแก้ไขซอฟต์แวร์ด้วยตัวเอง นี่คือการทดลองล้วนๆ โดยที่ fork นี้ไม่มีผู้ใช้งานและไม่มีดาว (stars) เลย เป้าหมายคือการทดสอบกลไกการทำงาน ไม่ใช่การสร้างผลิตภัณฑ์

นี่คือวิธีการทำงานของลูปนี้:

  • Intake (การรับข้อมูล): บั๊กจากต้นทาง (upstream) จะกลายเป็น issue ใน fork โดยลูปจะเลือกเฉพาะบั๊กขนาดเล็กและเป็นเชิงกลไก (mechanical bugs) ที่สามารถจัดการให้เสร็จสิ้นได้เท่านั้น
  • Solvers Argue (ผู้แก้ปัญหาโต้แย้งกัน): Agent หลายตัวจะเสนอวิธีแก้ไขที่แตกต่างกัน ตัวหนึ่งอาจต้องการการเปลี่ยนแปลงที่น้อยที่สุด อีกตัวต้องการโครงสร้างที่สะอาด และตัวที่สามอาจต้องการลบโค้ดทิ้งแทนที่จะเพิ่มเข้าไป พวกเขาจะมีความเห็นที่ไม่ตรงกัน
  • Judge Arbitrates (ผู้ตัดสินชี้ขาด): ผู้ตัดสินจะอ่านการโต้เถียงกัน หากผู้แก้ปัญหา (solvers) ยังไม่เห็นพ้องต้องกัน ผู้ตัดสินจะส่งพวกเขากลับไปเริ่มรอบใหม่ นอกจากนี้ผู้ตัดสินยังบันทึกเหตุผลที่ปฏิเสธไอเดียบางอย่างไว้ด้วย
  • Implement and Merge (ดำเนินการและรวมโค้ด): เมื่อบรรลุฉันทามติแล้ว ลูปจะเขียน patch, รันการทดสอบ (tests) และเปิด PR หากการทดสอบผ่าน มันจะทำการ merge ด้วยตัวเอง

คุณสามารถดูการทำงานจริงได้ใน issue #34 โดยเหล่า agent ได้โต้เถียงกันเรื่องบั๊ก concurrency พวกเขาต้องผ่านการตัดสินถึงสามรอบก่อนจะหาข้อสรุปได้ ลูปนี้สามารถสร้างวิธีแก้ไขที่ใช้งานได้จริงและสร้าง regression test ขึ้นมา โดยที่ไม่มีมนุษย์ต้องพิมพ์โค้ดแม้แต่บรรทัดเดียว

ผลลัพธ์ที่น่าสนใจอย่างหนึ่งเกิดขึ้นใน PR #16 เมื่อลูปไม่สามารถจำลอง (reproduce) บั๊กที่ได้รับรายงานมาได้ แทนที่จะสร้างวิธีแก้ไขปลอมๆ ขึ้นมา มันกลับเลือกที่จะเพิ่ม test เพื่อล็อกพฤติกรรมนั้นไว้แล้วหยุดทำงาน ลูปที่รู้ว่าเมื่อไหร่ "ไม่ควร" แก้ไข (patch) นั้นมีประโยชน์มากกว่าลูปที่พยายามสร้าง diff ออกมาตลอดเวลา

จนถึงตอนนี้ ลูปนี้ได้ทำการ merge ไปแล้วประมาณ 16 PR มันจัดการงานเล็กๆ น้อยๆ เช่น การจัดการ UTF-8 และการแก้ไขคำสั่งต่างๆ แม้มันจะไม่สามารถดูแล codebase ทั้งหมดได้ แต่มันสามารถปิดบั๊กขนาดเล็กที่มีขอบเขตชัดเจนได้ตั้งแต่ต้นจนจบ

มนุษย์ยังคงเป็นผู้กำหนดกฎเกณฑ์และตรวจสอบงาน เรายังคงตรวจสอบทุก PR แม้โค้ดจะทำงานแบบอัตโนมัติ แต่การใส่ใจตรวจสอบยังคงเป็นหน้าที่ของมนุษย์

คุณสามารถดูขั้นตอนทั้งหมดได้บน GitHub ลองดู issue #34 และ PR #37 เพื่อดูการโต้เถียงกัน

Source: https://dev.to/nwnwnw413/codex-fixing-codex-a-consensus-loop-that-argues-judges-and-merges-its-own-prs-11bh

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