นักพัฒนาสร้างระบบควิซที่ขับเคลื่อนด้วย AI เพื่อต่อสู้กับวัฒนธรรม "LGTM" ในการตรวจสอบโค้ด

ทีมชุมชน BigGo
นักพัฒนาสร้างระบบควิซที่ขับเคลื่อนด้วย AI เพื่อต่อสู้กับวัฒนธรรม "LGTM" ในการตรวจสอบโค้ด

ในขณะที่ AI agents เขียนโค้ดในการพัฒนาซอฟต์แวร์มากขึ้นเรื่อยๆ ความท้าทายใหม่ก็เกิดขึ้น: การทำให้แน่ใจว่าผู้ตรวจสอบที่เป็นมนุษย์เข้าใจสิ่งที่พวกเขาอนุมัติจริงๆ PR Quiz GitHub Action เป็นความพยายามที่สร้างสรรค์เพื่อแก้ไขปัญหา LGTM (Looks Good To Me) ที่แพร่หลาย ซึ่งนักพัฒนาอนุมัติ pull requests โดยไม่เข้าใจการเปลี่ยนแปลงของโค้ดอย่างแท้จริง

ปัญหา LGTM ถึงจุดวิกฤต

ชุมชนนักพัฒนาซอฟต์แวร์กำลังต่อสู้กับปัญหาร้ายแรงที่การตรวจสอบโค้ดกลายเป็นการประทับตราอย่างผิวเผิน นักพัฒนามักอนุมัติ pull requests ที่พวกเขาไม่เข้าใจ ทำให้เกิดบั๊กที่เข้าสู่การใช้งานจริง ปัญหานี้รุนแรงมากจนบางบริษัทประสบกับสถานการณ์ที่ผู้เขียนโค้ดต้นฉบับลาออกไป และผู้ตรวจสอบที่อนุมัติการเปลี่ยนแปลงไม่สามารถอธิบายได้ว่าโค้ดนั้นทำอะไรจริงๆ

ปัญหานี้ขยายไปเกินกว่าโค้ดที่สร้างโดย AI แม้กับโค้ดที่เขียนโดยมนุษย์ การตรวจสอบที่มีประสิทธิภาพต้องการให้ผู้ตรวจสอบมีแบบจำลองทางความคิดของตนเองเกี่ยวกับวิธีการดำเนินงาน หรืออย่างน้อยก็สร้างขึ้นในขณะที่อ่าน หากไม่มีพื้นฐานนี้ การตรวจสอบโค้ดจะกลายเป็นเพียงการตรวจสอบการปฏิบัติตามกฎเกณฑ์มากกว่าการประเมินทางเทคนิคที่มีความหมาย

โซลูชันที่ขับเคลื่อนด้วย AI พร้อมความขัดแย้งในตัว

ระบบ PR Quiz ใช้ API ของ OpenAI เพื่อสร้างคำถามแบบเลือกตอบจากการเปลี่ยนแปลงใน pull request เมื่อผู้ตรวจสอบอนุมัติ pull request พวกเขาต้องผ่านควิซที่แสดงให้เห็นความเข้าใจของพวกเขาก่อนที่โค้ดจะสามารถรวมเข้าด้วยกันได้ ระบบมีพารามิเตอร์ที่กำหนดค่าได้เช่น ขีดจำกัดเวลา จำนวนครั้งสูงสุดในการพยายาม และเกณฑ์ขั้นต่ำของบรรทัดที่เปลี่ยนแปลงเพื่อป้องกันการใช้ในทางที่ผิดกับการเปลี่ยนแปลงเล็กน้อย

อย่างไรก็ตาม ชุมชนได้ระบุความขัดแย้งที่แท้จริงอย่างรวดเร็ว: นักพัฒนาสามารถใช้ AI เพื่อตอบคำถามควิซที่สร้างโดย AI ได้ สิ่งนี้สร้างปัญหาแบบวงกลมที่บอทอาจจบลงด้วยการทำควิซให้บอทตัวอื่น ซึ่งอาจทำลายจุดประสงค์ทั้งหมดของการกำกับดูแลโดยมนุษย์

พารามิเตอร์การกำหนดค่า PR Quiz

พารามิเตอร์ คำอธิบาย ค่าเริ่มต้น จำเป็น
github-token โทเค็น GitHub สำหรับการเข้าถึง API - ใช่
ngrok-authtoken โทเค็นการยืนยันตัวตน Ngrok สำหรับการโฮสต์เซิร์ฟเวอร์ - ใช่
openai-api-key คีย์ API ของ OpenAI สำหรับการสร้างแบบทดสอบ - ใช่
model โมเดล AI สำหรับการสร้างแบบทดสอบ o4-mini ไม่
lines-changed-threshold จำนวนบรรทัดขั้นต่ำที่เปลี่ยนแปลงเพื่อเรียกใช้แบบทดสอบ 100 ไม่
time-limit-minutes ระยะเวลาจำกัดในการทำแบบทดสอบให้เสร็จ 10 ไม่
max-attempts จำนวนครั้งสูงสุดที่อนุญาตให้ทำแบบทดสอบ 3 ไม่

ข้อกังวลเรื่องความเป็นส่วนตัวและการดำเนินการ

ระบบนี้ทำให้เกิดคำถามเกี่ยวกับแนวปฏิบัติในการจัดการข้อมูลในยุค AI แม้ว่าเครื่องมือนี้จะอ้างถึงความเป็นส่วนตัวโดยส่งเฉพาะโค้ดไปยัง OpenAI แทนที่จะเป็นผู้ให้บริการโฮสติ้งบุคคลที่สาม นักพัฒนาหลายคนตั้งคำถามว่าเมื่อไหร่ที่การส่งโค้ดที่เป็นกรรมสิทธิ์ไปยังผู้ให้บริการโมเดล AI กลายเป็นมาตรฐานความเป็นส่วนตัวที่ยอมรับได้

การดำเนินการต้องการให้นักพัฒนาตั้งค่า API keys ของ OpenAI และ ngrok authentication tokens ซึ่งสร้างความซับซ้อนเพิ่มเติมในเวิร์กโฟลว์การพัฒนา ระบบรันเซิร์ฟเวอร์เว็บชั่วคราวภายใน GitHub Actions และใช้ ngrok เพื่อสร้างอุโมงค์สาธารณะ ซึ่งบางคนอาจมองว่าเป็นข้อพิจารณาด้านความปลอดภัย

ข้อกำหนดการติดตั้ง

  • OpenAI API Key (แนะนำแพ็กเกจแบบเสียเงิน)
  • ngrok authentication token (รองรับแพ็กเกจฟรี)
  • GitHub repository ที่เปิดใช้งาน Actions
  • การวางไฟล์ Workflow ในไดเรกทอรี .github/workflows
  • การกำหนดค่า repository secrets สำหรับ API keys

เกินกว่าโซลูชันทางเทคนิค

การอภิปรายเผยให้เห็นว่าปัญหาหลักอาจไม่ใช่ทางเทคนิคแต่เป็นเรื่องวัฒนธรรมและเศรษฐกิจ นักพัฒนาบางคนแนะนำว่าการตรวจสอบโค้ดที่มีความหมายเกิดขึ้นเฉพาะเมื่อคุณภาพซอฟต์แวร์ส่งผลกระทบต่อค่าตอบแทนโดยตรงผ่านโบนัส การประเมินผลการปฏิบัติงาน หรือความมั่นคงในงาน หากไม่มีผลกระทบที่แท้จริงจากคุณภาพโค้ดที่แย่ แนวปฏิบัติการตรวจสอบแบบผิวเผินจะยังคงอยู่ไม่ว่าจะมีเครื่องมือใดๆ

วิธีเดียวที่ฉันเคยเห็นวิศวกรใส่ใจเรื่อง PR คือถ้าซอฟต์แวร์หรือผลิตภัณฑ์เชื่อมโยงโดยตรงกับเงินเดือนของพวกเขา

การอภิปรายยังเน้นปรัชญาที่แตกต่างกันเกี่ยวกับจุดประสงค์ของการตรวจสอบโค้ด บางคนมองว่าเป็นการตรวจสอบตรรกะการดำเนินการ ในขณะที่คนอื่นๆ มองว่าเป็นการตรวจจับปัญหาความปลอดภัยที่อาจเกิดขึ้น การละเมิดแนวปฏิบัติที่ดี และกรณีขอบที่เครื่องมืออัตโนมัติอาจพลาดไป

มองไปข้างหน้า

แม้ว่า PR Quiz จะเป็นแนวทางที่สร้างสรรค์เพื่อให้แน่ใจว่ามีความเข้าใจในโค้ด แต่ก็แสดงให้เห็นถึงความท้าทายที่กว้างขึ้นที่การพัฒนาซอฟต์แวร์เผชิญในยุค AI เครื่องมือนี้อาจมีค่าที่สุดไม่ใช่ในฐานะผู้เฝ้าประตู แต่เป็นเครื่องมือช่วยการเรียนรู้ที่ช่วยให้ผู้ตรวจสอบระบุช่องว่างความรู้และตั้งคำถามที่ดีขึ้นในระหว่างกระบวนการตรวจสอบ

การตอบสนองของชุมชนแสดงให้เห็นว่าการแก้ไขปัญหาการตรวจสอบโค้ดต้องการการจัดการทั้งด้านเทคนิคและวัฒนธรรมของการพัฒนาซอฟต์แวร์ ในขณะที่ AI ยังคงสร้างโค้ดมากขึ้น อุตสาหกรรมต้องพัฒนาแนวปฏิบัติที่ยั่งยืนซึ่งรักษาคุณภาพโค้ดโดยไม่สร้างความสัมพันธ์ที่เป็นปฏิปักษ์ระหว่างมนุษย์และระบบ AI

อ้างอิง: PR Quiz