codex-with-chatgpt ให้ ChatGPT วางแผนและตรวจ git diff จริง ส่วน Codex ลงมือ โดยไม่เชื่อแค่คำว่าเทสต์ผ่าน
codex-with-chatgpt แยกให้ ChatGPT บนเว็บวางแผนและตรวจงาน ส่วน Codex แก้โค้ดในเครื่อง ตอนตรวจงาน ChatGPT จะอ่าน git diff จริง ไม่เชื่อแค่คำบอกว่าเทสต์ผ่าน

โปรเจกต์ codex-with-chatgpt เกิดจากประโยคที่เราได้ยินกันบ่อยเวลาสั่ง AI แก้โค้ด นั่นคือ "แก้ให้แล้ว เทสต์ผ่านหมดแล้ว" ใครที่ใช้ AI เขียนโค้ดเป็นประจำคงคุ้นเคยดี ปัญหาของประโยคนี้ไม่ได้อยู่ที่ว่ามันพูดจริงหรือไม่จริง แต่อยู่ที่ตัวที่พูดดันเป็นตัวเดียวกับที่เพิ่งลงมือแก้โค้ดไปเมื่อกี้
codex-with-chatgpt เป็นโปรเจกต์โอเพนซอร์สของ XiaoDuoYa บน GitHub ประกอบด้วยชุดคำสั่งเสริมสำหรับผู้ช่วย AI เขียนโค้ดอย่าง Codex และสะพานเชื่อมขนาดเล็กที่รันอยู่ในเครื่อง หน้าที่หลักคือย้ายงาน "คิดและวางแผน" ไปให้ ChatGPT บนเว็บจัดการ แล้วปล่อยให้ Codex ลงมือแก้โค้ดและรันเทสต์ในเครื่องของเราเพียงอย่างเดียว
จุดเริ่มต้นของโปรเจกต์นี้มาจากเรื่องโควตาใช้งาน โควตาเว็บของ ChatGPT Plus หรือ Pro ที่จ่ายไปแล้วมักนอนอยู่เฉยๆ ขณะที่ Codex ต้องเปลืองโควตาก้อนที่จำกัดกว่าไปกับขั้นตอนวางแผนและรีวิวโค้ด เช่นเดียวกับแนวคิดที่พบใน codex-bridge แต่เมื่อดูการทำงานจริง สิ่งที่โปรเจกต์นี้แก้ปัญหาได้ดีที่สุดไม่ใช่เรื่องเงินหรือโควตา แต่เป็นเรื่องคุณภาพการทำงาน
ปัญหาไม่ใช่ AI แก้โค้ดไม่เก่ง แต่มันตรวจงานของตัวเอง
การเขียนโค้ดด้วย AI มีงาน 2 ส่วนที่ต่างกันอย่างชัดเจน:
- งานคิดและวางแผน: ทำความเข้าใจโจทย์ ดูโครงสร้างโปรเจกต์ และตัดสินใจว่าจะแก้ตรงไหน ด้วยวิธีอะไร
- งานลงมือทำ: เปิดไฟล์ แก้โค้ดทีละบรรทัด รันคำสั่ง และรันเทสต์เพื่อไล่แก้จนกว่าจะผ่าน
พอเราให้ AI ตัวเดิมรับผิดชอบทั้งสองหน้าที่พร้อมกัน มันจึงกลายเป็นฝ่ายตรวจงานตัวเองไปโดยปริยาย ประโยค "เทสต์ผ่านหมดแล้ว" ที่เราเห็น จึงเป็นเพียงคำบอกเล่าของฝ่ายที่เพิ่งลงมือแก้ ไม่ใช่ผลที่มีใครไปเปิดอ่านหลักฐานมายืนยัน
ข้อผิดพลาดนี้เกิดขึ้นได้ง่ายมาก เพราะข้อความบนหน้าจอระหว่าง "AI เล่าว่าเทสต์ผ่าน" กับ "ผลการรันเทสต์ที่ผ่านจริง" แทบไม่ต่างกันเลย ต่างกันแค่แบบหลังมีหลักฐานยืนยัน แต่แบบแรกไม่มี ถ้าปล่อยผ่านไป ปัญหาจะโผล่มาตอนนำโค้ดขึ้นระบบจริง แล้วเกิดข้อผิดพลาดจนเราต้องมานั่งไล่หาสาเหตุในภายหลัง
ฝั่งหนึ่งคิด อีกฝั่งลงมือ แล้ววนกลับมาตรวจของจริง

สถาปัตยกรรมของ codex-with-chatgpt แบ่งขอบเขตความรับผิดชอบไว้ชัดเจน:
- ChatGPT บนเว็บ: ทำหน้าที่วางแผนและรีวิวโค้ดเท่านั้น โดยไม่มีสิทธิ์สั่งรันคำสั่งใดๆ ในเครื่องของเรา
- Codex ในเครื่อง: มีสิทธิ์ลงมือทำทั้งหมด ทั้งการแก้ไขไฟล์ รันคำสั่ง และรันเทสต์ในโฟลเดอร์โปรเจกต์ของเรา
วงจรการทำงานจึงแบ่งเป็น 3 ขั้นตอน เริ่มจาก ChatGPT อ่านโจทย์และวางแผน จากนั้น Codex นำแผนไปลงมือทำ แล้ว ChatGPT จึงกลับมาตรวจความถูกต้องอีกรอบ
จุดเด่นของเครื่องมือตัวนี้อยู่ที่ขั้นตอนสุดท้าย ตอนตรวจงาน ChatGPT จะไม่รอรายงานสรุปจาก Codex แต่จะเรียกดู git diff เพื่อตรวจบรรทัดที่เปลี่ยนแปลงจริง พร้อมทั้งตรวจบันทึกผลการรันเทสต์ด้วยตัวเอง
คำว่าเทสต์ผ่านหมดแล้ว ไม่นับเป็นหลักฐานในรอบตรวจนี้
การตรวจแบบนี้ช่วยดักจับปัญหาที่มักหลุดรอดได้ดี เช่น แผนระบุว่าจะแก้ 3 ไฟล์ แต่ git diff ฟ้องว่ามีไฟล์ที่ 4 เปลี่ยนไปด้วย หรือบอกว่าเทสต์ผ่านแล้ว แต่กลับไม่มีบันทึกว่าสั่งรันเทสต์จริง ข้อผิดพลาดแบบนี้จะโผล่ให้เห็นก็ต่อเมื่อมีใครไปเปิดอ่านหลักฐาน เป็นขั้นตอนปกติของฝั่งตรวจอยู่แล้ว
ช่องคุยสถานะกับช่อง MCP ทำหน้าที่คนละอย่างกัน

เมื่อมีสองระบบทำงานร่วมกัน คำถามต่อมาคือโค้ดในเครื่องของเราวิ่งไปอยู่ที่ไหนบ้าง คำตอบคือระบบแยกช่องทางการสื่อสารออกเป็น 2 ชั้นชัดเจน:
ชั้นแรก: ช่องส่งสถานะ
ทั้งสองฝั่งจะสื่อสารกันผ่านข้อความสั้นๆ ที่ขึ้นต้นด้วย [C2C] และมีขนาดไม่ถึง 1KB เพื่ออัปเดตขั้นตอนตามลำดับ INIT → PLAN → EXECUTED → REVIEW → DONE ข้อความเหล่านี้มีไว้บอกสถานะเท่านั้น เช่น แจ้งว่า Codex แก้โค้ดเสร็จแล้วเพื่อเข้าสู่สถานะ EXECUTED ช่องนี้จะไม่ส่งเนื้อไฟล์ บันทึกการทำงาน หรือบรรทัดโค้ดเลย
ชั้นที่สอง: ช่อง MCP สำหรับอ่านข้อมูล
ฝั่ง ChatGPT จะเชื่อมต่อผ่าน Model Context Protocol (MCP) เพื่อขอดูข้อมูล โดยตั้งค่าให้อ่านได้อย่างเดียว มีเครื่องมือให้ใช้งาน 9 ตัว ได้แก่:
workspace_info, list_directory, read_file, search_workspace, git_status, git_diff, test_status, execution_summary และ execution_output
ชื่อของเครื่องมือบ่งบอกหน้าที่ตรงตัว คือใช้ดูข้อมูล workspace, ไล่ดูรายชื่อไฟล์, อ่านเนื้อหาไฟล์, ค้นหาในโปรเจกต์, ดูสถานะ git, ดู git diff รวมถึงดูสถานะและผลลัพธ์ของการรันคำสั่งที่ผ่านมา
หัวใจสำคัญคือ ทั้งหมดนี้เป็นรูปแบบ "ขอดูเมื่อต้องการ" ไม่ใช่ "อัปโหลดไปทั้งโปรเจกต์" โค้ดทั้งหมดจะยังคงอยู่ในเครื่องเรา เมื่อ ChatGPT ต้องการตรวจจุดไหน มันจะเป็นฝ่ายเรียก read_file หรือ git_diff เพื่อดึงเฉพาะบรรทัดที่จำเป็นต้องใช้ในตอนนั้น
ออกแบบความปลอดภัยไว้ตั้งแต่แรก ไม่ใช่แค่ตั้งกฎมาคอยห้าม
ระบบนี้เปิดให้ ChatGPT เข้ามาอ่านโค้ดในเครื่องได้ เพราะออกแบบความปลอดภัยไว้ 5 ข้อ เกือบทั้งหมดเน้นตัดความสามารถที่ไม่จำเป็นออกตั้งแต่แรก แทนที่จะใส่ฟังก์ชันมาครบแล้วค่อยเขียนกฎห้าม:
1. ฝั่งอ่านไม่มีเครื่องมือสำหรับเขียนไฟล์: ไม่มีเครื่องมือเขียนไฟล์ ลบไฟล์ รันคำสั่ง หรือส่งโค้ดขึ้นเซิร์ฟเวอร์ตั้งแต่ต้น ข้อนี้ช่วยป้องกันปัญหาได้มาก เพราะต่อให้มีข้อความในไฟล์ที่พยายามหลอกสั่งการ AI ด้วยเทคนิค prompt injection ฝั่ง AI ก็ไม่มีเครื่องมือให้เรียกใช้อยู่ดี
2. จำกัดสิทธิ์เฉพาะพื้นที่ทำงานที่กำหนด: สิทธิ์การเข้าถึงจะผูกกับ workspace ปัจจุบันเท่านั้น การพยายามเข้าถึงโฟลเดอร์อื่น ไม่ว่าจะผ่าน symlink, path traversal หรือระบุ absolute path ตรงๆ ระบบก็บล็อกไว้ทั้งหมด โดยโปรเจกต์นี้มีชุดทดสอบอัตโนมัติถึง 146 เคส ครอบคลุมตั้งแต่เรื่องพาธไฟล์ การยืนยันตัวตน ไปจนถึงการเชื่อมต่อจริงทั้งระบบ
3. ไฟล์สำคัญและรหัสผ่านลับจะไม่ออกจากเครื่อง: ไฟล์ sensitive อย่าง .env*, SSH keys และไฟล์เก็บรหัสผ่านต่างๆ ระบบจะปฏิเสธการอ่านตั้งแต่แรก เว้นแต่ไฟล์ตัวอย่างอย่าง .env.example ที่เปิดให้อ่านได้ และถ้าเรามีไฟล์อื่นที่ไม่อยากให้เปิดอ่าน ก็สามารถเพิ่มกฎในไฟล์ .c2cignore ได้เอง
4. รู้ที่อยู่ URL สาธารณะก็ยังเข้าไม่ได้: URL สาธารณะที่ใช้เชื่อมต่อไม่ได้เปิดทิ้งไว้เฉยๆ แต่ต้องผ่านการยืนยันตัวตนตามมาตรฐาน OAuth 2.1 ถ้าไม่มีสิทธิ์จะได้รหัส 401 Unauthorized และถ้าใช้สิทธิ์ของ workspace อื่นก็จะได้รหัส 403 Forbidden
5. ระบบไม่ส่งความลับถาวรผ่านเบราว์เซอร์: ความลับของระบบเพียงอย่างเดียวที่ผ่านหน้าเบราว์เซอร์คือ pairing code แบบใช้ครั้งเดียว ซึ่งมีอายุเพียง 5 นาที กรอกผิดได้ไม่เกิน 5 ครั้ง พร้อมมี rate limit จำกัดความถี่ในการส่งคำขอซ้ำ และจะลบทิ้งทันทีที่จับคู่สำเร็จ
มาตรการความปลอดภัยทั้ง 5 ข้อนี้เป็นสิ่งที่ผู้พัฒนาโปรเจกต์ระบุไว้ สำหรับใครที่ต้องการนำไปเสนอทีมหรือศึกษาเชิงลึก สามารถอ่านเอกสาร threat model ฉบับเต็มได้ที่ docs/security.md ในโปรเจกต์
ติดตั้ง codex-with-chatgpt ได้ 2 วิธี: วาง prompt ก้อนเดียว หรือติดตั้งเอง 3 ขั้นตอน
วิธีที่ 1: วาง prompt ก้อนเดียวให้ Codex ทำเอง (ง่ายที่สุด) ในหน้าโปรเจกต์มี prompt สำเร็จรูปเตรียมไว้ให้ เราแค่คัดลอกข้อความทั้งหมดไปวางให้ Codex รันได้ทันที โดยคำสั่งจะให้ Codex ตรวจสอบสภาพแวดล้อมในเครื่อง ติดตั้งสิ่งที่ยังขาด ดาวน์โหลดโปรเจกต์ build และติดตั้งโปรแกรม ติดตั้งสกิล พร้อมรันขั้นตอนตั้งค่าเริ่มต้นให้จนเสร็จ ตัวคำสั่งยังระบุให้หยุดถามเราเฉพาะตอนที่ต้องล็อกอิน เจอ CAPTCHA หรือยืนยันตัวตนสองชั้นเท่านั้น
วิธีที่ 2: ติดตั้งด้วยตัวเอง (3 ขั้นตอน) ถ้าต้องการเห็นขั้นตอนทั้งหมดชัดเจน สามารถติดตั้งเองได้:
- คัดลอกโฟลเดอร์
skill/จากโปรเจกต์ไปไว้ที่~/.codex/skills/codex-with-chatgpt/ - สั่ง Codex ใน terminal เพื่อเริ่มตั้งค่า:
Set up Codex with ChatGPT.
- เมื่อตั้งค่าเสร็จแล้ว สามารถสั่งงานตามปกติโดยระบุชื่อสกิลในคำสั่ง เช่น:
Use Codex with ChatGPT to implement XXX.
สิ่งที่ต้องมีในเครื่อง:
ในเครื่องต้องติดตั้ง Node.js (เวอร์ชัน 20 ขึ้นไป) และ git ไว้ก่อน ส่วน cloudflared ตัวสกิลจะตรวจสอบและติดตั้งให้เองถ้ายังไม่มี สำหรับขั้นตอนที่เราต้องทำเอง มีเพียงการล็อกอิน ChatGPT, ล็อกอิน Cloudflare (กรณีต้องการใช้ URL แบบคงที่) และถ้าเป็น workspace ใหม่ จะมีขั้นตอนสร้าง ChatGPT Project เพิ่มอีกหนึ่งขั้นตอน
เมื่อตั้งค่าเสร็จสมบูรณ์ หน้าจอจะแสดงผลยืนยันสถานะการเชื่อมต่อ เป็นวิธีตรวจสอบที่เร็วที่สุดว่าทุกส่วนทำงานร่วมกันได้จริง โดยเฉพาะบรรทัด ✓ File read test passed ที่ยืนยันว่าการทดสอบอ่านไฟล์ผ่านเรียบร้อย:
Codex with ChatGPT
✓ Project detected
✓ Workspace Bridge started
✓ Secure connection established
✓ ChatGPT connected
✓ File read test passed
Ready.
เลือกวิธีไหนดี? ถ้าต้องการลองใช้ให้เร็วที่สุดโดยไม่ต้องยุ่งกับ terminal วิธีแรกที่คัดลอก prompt ไปวางทีเดียวจะสะดวกกว่าชัดเจน แลกกับการให้ Codex ติดตั้งของที่ยังขาดลงเครื่องตามที่ prompt ระบุ ส่วนวิธีที่ 2 เราคัดลอกโฟลเดอร์สกิลไปวางเองก่อน แล้วค่อยปล่อยให้ Codex ตั้งค่าที่เหลือต่อ จึงรู้ตั้งแต่ต้นว่าสกิลอยู่ที่ไหนในเครื่อง ซึ่งมีประโยชน์เวลาต้องการถอนการติดตั้งหรือย้ายเครื่อง
3 เรื่องสำคัญที่ควรรู้ก่อนเริ่มติดตั้ง
1. เป็นโปรเจกต์จากชุมชน ไม่ใช่โปรเจกต์ทางการของผู้ให้บริการ: ในหน้าโปรเจกต์ระบุชัดเจนว่าไม่ได้สังกัดและไม่ได้รับการรับรองจาก OpenAI เงื่อนไขการใช้งานบัญชีจึงเป็นเรื่องที่เราต้องตรวจสอบกับผู้ให้บริการด้วยตัวเอง และบทความนี้ไม่ได้แนะนำให้ใช้เพื่อหลบเลี่ยงโควตาหรือใช้ฟรี แต่เน้นถึงประโยชน์ของการแยกหน้าที่ระหว่างคนคิดกับคนลงมือทำ
2. URL เชื่อมต่อเริ่มต้นเป็นแบบชั่วคราว: URL จะเปลี่ยนใหม่ทุกครั้งที่สะพานเชื่อมรีสตาร์ท โดย Codex จะคอยอัปเดตการเชื่อมต่อใหม่ให้อัตโนมัติ ถ้าต้องการ URL แบบคงที่ จะต้องมีบัญชี Cloudflare และโดเมนของตัวเองที่ผูกกับ Cloudflare ไว้แล้ว ทั้งนี้ แม้จะใช้ URL ชั่วคราวก็ยังใช้ได้ครบทุกฟังก์ชันตามปกติ เพียงแต่ตอนเชื่อมต่อใหม่อาจใช้เวลาเพิ่มขึ้นเล็กน้อย
3. ตัวโปรเจกต์ยังเป็นเวอร์ชันแรก: สถานะของโปรเจกต์ระบุว่าเป็น V1 ซึ่งผ่านการทดสอบแบบ end-to-end ครบวงจรแล้ว ทั้งระบบสะพานเชื่อม การยืนยันตัวตน การจับคู่ tunnel ไปจนถึงการตั้งค่าฝั่ง ChatGPT ส่วนเวอร์ชันล่าสุดคือ v0.1.1
นำวิธีคิดนี้ไปใช้ได้ทันที แม้ยังไม่ได้ติดตั้งเครื่องมือ
สิ่งที่มีค่าที่สุดของเครื่องมือตัวนี้ไม่ใช่แค่ตัวโค้ด แต่เป็น "วิธีคิด" ที่เรานำไปปรับใช้กับการทำงานร่วมกับ AI ได้ทันทีด้วยตัวเอง:
-
แยกบทสนทนาระหว่างรอบวางแผนกับรอบลงมือทำ: เริ่มจากเปิดแชตแรกให้ AI อ่านโจทย์และเขียนแผนการทำงานออกมาอย่างเดียว โดยยังไม่ต้องให้แก้โค้ด เมื่อได้แผนที่ชัดเจนและเราเห็นชอบแล้ว ค่อยเปิดอีกแชตหนึ่งเพื่อส่งแผนให้ AI ลงมือทำจริง
-
ตรวจงานด้วยหลักฐานจริง ไม่รับแค่คำบอกเล่า: เมื่อ AI แจ้งว่าทำเสร็จแล้ว อย่าเพิ่งเชื่อแค่ข้อความสรุป ให้ส่ง
git diffและบันทึกผลการรันเทสต์จริงกลับไปให้แชตที่ไม่ได้ลงมือแก้เป็นผู้ตรวจ พร้อมถามสั้นๆ ว่าสิ่งที่แก้ไปตรงกับแผนที่ตกลงกันไว้หรือไม่
เพียงเท่านี้ เราก็ตรวจงานได้อย่างรัดกุมโดยไม่ต้องติดตั้งเครื่องมือใดๆ เพิ่มเติม
เพราะยิ่ง AI ลงมือแก้โค้ดได้เร็วขึ้นเท่าไร คำยืนยันว่างานเสร็จเรียบร้อย ก็ยิ่งต้องมาจากฝ่ายที่ไม่ได้เป็นคนลงมือแก้เท่านั้น
ที่มา: บทความ ChatGPT thinks. Codex works. Use ChatGPT as the planning brain while keeping the Codex harness. จาก XiaoDuoYa บน GitHub
ชอบเรื่องแนวนี้ มีอีบุ๊คฟรีให้อ่านต่อ
สร้าง Claude Skill แบบไม่ต้องรู้โค้ด คู่มือสร้าง Claude Skill ของคุณเองด้วยการคุยกับ Claude Code เป็นภาษาไทย
กดสมัครแล้วเราจะส่งเทคนิค AI และของแจกใหม่ๆ ให้ทางอีเมล เลิกรับได้ตลอด
สร้าง AI Automation Pipeline ทุกแบบ ด้วย Agents และ Skills

ปูจากพื้นฐาน prompt, context และ cost ไปจนปั้น Skill สั่ง Agent กับ Sub-agent แล้วต่อทุกอย่างเป็น pipeline อัตโนมัติที่ออกแบบเองได้ ดูฟรี 7 บทก่อนตัดสินใจ


