แทนที่รีวิว PR แบบเสียเงินของ CodeRabbit ฟรีด้วย GitHub Actions + Gemma
(github.com/bssm-oss)ผมได้สร้างโปรเจกต์โอเพนซอร์สชื่อ GemmaCI ขึ้นมา
ถ้าอธิบายสั้น ๆ ในบรรทัดเดียว มันคือโปรเจกต์ที่ตั้งใจให้รัน AI PR reviewer แบบ CodeRabbit ได้ฟรีภายใน GitHub Actions
CodeRabbit เป็นเครื่องมือที่ดี แต่ถ้าจะใช้ PR review อย่างจริงจังกับ private repo จำเป็นต้องใช้แพ็กเกจแบบเสียเงิน ตามเอกสารทางการ แพ็กเกจ Free เน้น PR summarization เป็นหลัก และ PR review จะมีให้ตั้งแต่ Pro ขึ้นไป Pro มีราคา $24/mo/user หากชำระรายปี และ $30/mo/user หากชำระรายเดือน
ด้วยเหตุนี้ ผมจึงทำมันขึ้นมาจากความคิดที่ว่า “เราจะทดแทนประสบการณ์หลักของ CodeRabbit ได้ฟรีสำหรับทีมเล็ก โปรเจกต์นักศึกษา หรือไซด์โปรเจกต์ส่วนตัวหรือไม่?”
GemmaCI รัน Ollama + โมเดล Gemma บน GitHub Actions เพื่อรีวิว PR diff
ความสามารถที่มีในตอนนี้มีดังนี้
- สร้าง PR summary comment
- เขียน inline review comment บนบรรทัดที่มีการเปลี่ยนแปลง
- ทำให้ CI check ล้มเหลวเมื่อพบ finding ระดับ high / critical
- แสดงผลรีวิวโดยอิงตาม evidence, confidence, recommendation
- ลดต้นทุน cold start ด้วย Ollama / model cache
- ใช้งานได้ด้วยการเพิ่ม workflow file เพียงไฟล์เดียว
- ใช้โมเดลความปลอดภัยที่มองทั้ง PR diff, model output, artifact เป็น untrusted data
สิ่งที่ให้ความสำคัญมากคือ “ฟรี” และ “ความปลอดภัย”
ไม่ใช่แค่โยน diff ให้ LLM แล้วปล่อยให้ไปคอมเมนต์เท่านั้น แต่จะตรวจสอบ model output ตาม schema และเผยแพร่เฉพาะ finding ที่มีหลักฐานอ้างอิงอยู่บน changed line จริงเท่านั้น
อีกทั้งโดยค่าเริ่มต้นจะไม่ใช้ pull_request_target เพราะต้องการหลีกเลี่ยงความเสี่ยงที่ workflow หรือ script ซึ่งผู้สร้าง PR แก้ไขไว้จะถูกรันด้วยสิทธิ์แบบ write ในขั้นตอน publish เองก็จะรันเฉพาะโค้ดจาก trusted base branch เท่านั้น และจะตรวจสอบ artifact กับ model output ซ้ำอีกครั้ง
ได้มีการเปิด smoke PR บน GitHub Actions runner จริงเพื่อยืนยันการทำงานแล้ว
รายการที่ยืนยันแล้ว:
- รัน workflow บน GitHub-hosted runner
- ติดตั้ง Ollama และรันรีวิว job ด้วยโมเดล Gemma
- โพสต์ PR summary comment
- โพสต์ inline comment บนบรรทัดที่เปลี่ยนแปลง
- ทำให้ check ล้มเหลวเมื่อพบ finding ความรุนแรงระดับ high
ใน PR ทดสอบ มีการใส่ฟังก์ชัน unsafeDivide ไว้โดยตั้งใจ และ GemmaCI ก็ตรวจจับ “ไม่มีการตรวจสอบการหารด้วย 0” เป็น finding ระดับ high severity พร้อมทิ้ง inline comment ไว้
ตอนนี้ยังไม่ถึงระดับที่จะทดแทน CodeRabbit แบบ 1:1 ได้อย่างสมบูรณ์ อย่าคาดหวังคุณภาพหรือความสามารถด้านการเชื่อมต่อเทียบเท่า SaaS reviewer ที่ใช้โมเดลขนาดใหญ่
แต่เป้าหมายชัดเจนมาก
“แม้แต่ repo เล็ก ๆ ที่ยังไม่คุ้มจะจ่ายเงิน ก็สามารถเพิ่ม AI PR review ฟรีได้ด้วย workflow file เพียงไฟล์เดียว”
GitHub:
https://github.com/bssm-oss/gemmaci
ยินดีรับ feedback, issue และ PR
ยังไม่มีความคิดเห็น