ให้ AI รับหน้าที่คัดกรอง GitHub Issue แทนคุณ

การจัดการ GitHub repo นั้นเป็นเรื่องยาก Issue ใหม่ๆ มักจะมาพร้อมกับหัวข้อที่คลุมเครือหรือไม่มีขั้นตอนการจำลองปัญหา (steps to reproduce) คุณต้องเสียเวลาทั้งวันไปกับการติด label, ตรวจสอบว่ามีข้อมูลซ้ำหรือไม่ และการขอรายละเอียดเพิ่มเติม งานเหล่านี้กัดกินเวลาที่คุณควรจะเอาไปใช้เขียนโค้ด

ผลสำรวจในปี 2024 แสดงให้เห็นว่า 60% ของผู้ดูแลโปรเจกต์ open-source เคยคิดที่จะเลิกทำ การจัดการ issue เป็นภาระที่หนักอึ้ง

ผมได้สร้างบอทขึ้นมาเพื่อจัดการงานในด่านแรก มันทำงานผ่าน GitHub Actions และใช้โมเดลภาษา (language model) โดยทำหน้าที่ดังนี้:

  • ติด label ตามกฎที่คุณตั้งไว้
  • แจ้งเตือนหากพบข้อมูลที่อาจซ้ำซ้อน
  • ขอรายละเอียดเพิ่มเติมในกรณีที่คำอธิบายสั้นเกินไป

บอทตัวนี้เป็น agent ไม่ใช่แค่สคริปต์ที่ทำงานตายตัว ผมให้ชุดเครื่องมือ (tools) แก่โมเดล แล้วมันจะตัดสินใจเองว่าจะใช้เครื่องมือไหนและใช้ในลำดับใด issue ที่เขียนมาดีอาจใช้เครื่องมือเพียงชิ้นเดียว ส่วน issue ที่วุ่นวายอาจต้องใช้ถึงสามชิ้น

เวอร์ชันแรกนั้น "พูดมาก" เกินไป มันจะโพสต์คอมเมนต์ในทุกๆ issue ซึ่งสร้างเสียงรบกวน (noise) และเสียงรบกวนเหล่านี้เองที่ทำให้คนเริ่มเพิกเฉยต่อบอท

ผมแก้ไขปัญหานี้ด้วยประโยคเพียงประโยคเดียวใน system prompt โดยการอนุญาตให้โมเดล "ไม่ต้องทำอะไรเลย" ก็ได้ ผมบอกมันว่าบางครั้งความเงียบคือคำตอบที่ดีที่สุด ซึ่งสิ่งนี้เปลี่ยนพฤติกรรมของมันได้มากกว่าการแก้โค้ดเสียอีก

ผมใช้ LiteLLM เพื่อให้บอทสามารถทำงานร่วมกับ Claude, GPT หรือ Gemini ได้ โดยบอทจะอาศัยการทำ function calling เพื่อดำเนินการต่างๆ กับ issue

การทดสอบในสถานการณ์จริงเผยให้เห็นความท้าทายหลัก 3 ประการ:

  • ระบบความปลอดภัยของ GitHub ป้องกันไม่ให้บอทเห็นข้อมูลที่เป็นความลับ (secrets) ใน pull requests
  • Prompt injection เป็นความเสี่ยงเมื่อคุณป้อนข้อความที่ไม่น่าเชื่อถือเข้าไปในโมเดล
  • เรื่องสิทธิ์การเข้าถึง (permissions) และข้อผิดพลาดของ API อาจทำให้การ debug เป็นเรื่องที่น่าสับสน

นอกจากนี้ ผมยังตั้งกฎให้บอทด้วยว่า: มันจะตรวจสอบเฉพาะความเสี่ยงด้านความปลอดภัยเท่านั้น มันจะไม่ให้คะแนนคุณภาพของโค้ด เพราะบอทที่คอยตัดสินเรื่องการออกแบบ (design) จะทำให้ผู้ร่วมพัฒนา (contributors) รู้สึกไม่อยากเข้ามาช่วยงาน ควรปล่อยการตัดสินใจเหล่านั้นให้เป็นหน้าที่ของมนุษย์

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

Source: https://dev.to/jescalada/putting-an-ai-agent-in-charge-of-github-issue-triage-3085

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