บอทรีวิวโค้ดของ Tilde แท็กใน GitHub PR แล้วได้คอมเมนต์ทีละบรรทัด ทั้งที่ตัวโมเดลไม่เคยได้ token สักดอก
Tilde เปิดโค้ดตัวอย่างบอทรีวิวโค้ดบน GitHub ให้โคลนไปดีพลอยบนบัญชีตัวเองได้ ของที่น่าหยิบไปใช้ต่อไม่ใช่ตัวบอท แต่คือกติกาสามข้อที่ทำให้มันเข้าไปแตะโค้ดจริงได้ โดยที่ตัวโมเดลไม่เคยถือกุญแจสักดอก

บอทรีวิวโค้ดของ Tilde อ่านโค้ดทั้งโปรเจกต์จริงของทีมได้ แต่ตัวโมเดลไม่เคยถือ token ที่เป็นกุญแจเข้า GitHub เลยสักครั้ง
วิธีใช้คือแท็กมันไว้ในคอมเมนต์ของ pull request ซึ่งก็คือก้อนโค้ดที่ขอรวมเข้าโปรเจกต์หลัก จากนั้นรอไม่นานมันจะกลับมาชี้ทีละบรรทัดว่าตรงไหนน่าจะมีปัญหา แล้วปิดท้ายด้วยสรุปอีกหนึ่งก้อน
Tilde เองคือชุดเครื่องมือสำหรับประกอบ AI agent ให้ไปรันอยู่บนคลาวด์ ส่วนบอทรีวิวโค้ดคือของที่คนสร้างมันหยิบมาโชว์ว่าเอาไปทำอะไรได้จริง โค้ดทั้งชุดเปิดอยู่บน GitHub ในชื่อ code-review-bot ใครจะโคลนไปดีพลอยบนบัญชีตัวเองก็ทำได้
คนที่น่าจะได้ใช้ก่อนใครคือทีมขนาดเล็กกับฟรีแลนซ์ ที่ไม่มีเพื่อนร่วมงานว่างพอจะนั่งอ่านโค้ดให้ก่อนกดรวม และยิ่งเราปล่อยให้ AI ช่วยเขียนได้เร็วขึ้นเท่าไร กองโค้ดที่ลงระบบไปโดยยังไม่ผ่านสายตาใครเลยก็ยิ่งหนาขึ้นเท่านั้น
แท็กใน PR หนึ่งครั้ง แล้วเกิดอะไรขึ้นบ้างกว่าคอมเมนต์แรกจะโผล่
ลำดับการทำงานของบอทตัวนี้มีแปดจังหวะ นับตั้งแต่คนพิมพ์แท็กลงไปในคลังโค้ดของทีมที่เรียกกันสั้นๆ ว่าเรโป ไปจนถึงคอมเมนต์แรกที่โผล่ขึ้นมา และแต่ละจังหวะก็มีเจ้าของงานคนละเจ้า
- คนพิมพ์แท็กเรียก GitHub App ตัวที่ติดตั้งเอาไว้กับเรโป ลงในคอมเมนต์ของ PR
- GitHub ยิงสัญญาณแจ้งเหตุออกไปหา Tilde ว่ามีคนเรียกบอทแล้ว
- Tilde แปลงสัญญาณนั้นเป็นข้อความที่เซ็นกำกับไว้ แนบข้อมูลของ PR แบบมีโครงสร้างไปด้วย แล้วส่งต่อไปยังตัว agent ที่วางไว้บน Vercel
- agent ต่อเข้ากับระบบเซิร์ฟเวอร์ MCP ที่ระบุไว้ล่วงหน้า เพื่อหยิบเฉพาะเครื่องมือที่ได้รับอนุญาตให้ใช้ในงานรีวิว
- agent เปิดทางกลับไปหา Modal เพื่อสั่งสร้างแซนด์บ็อกซ์ คือเครื่องชั่วคราวที่แยกออกมาต่างหากสำหรับรีวิวรอบนี้โดยเฉพาะ ตรงนี้เองที่ Tilde เป็นคนเติมคีย์ของ Modal ให้
- แซนด์บ็อกซ์โคลนโค้ดของ PR ลงมา โดยคำสั่งวิ่งผ่านทางที่ Tilde ตั้งไว้ให้
- agent อ่านรายละเอียดของ PR อ่าน diff ที่บอกว่าบรรทัดไหนเพิ่มบรรทัดไหนหาย อ่านรีวิวรอบก่อนหน้า และอ่านไฟล์กติกาของเรโป จากนั้นวนเปิดไฟล์อื่นในโปรเจกต์เพิ่มเอง
- agent โพสต์คอมเมนต์ทีละบรรทัดพร้อมสรุปกลับขึ้นไปบน PR
จังหวะที่แปดยังไม่ใช่จุดจบ ระบบจะกลับไปอ่านคอมเมนต์ที่ตัวเองเพิ่งโพสต์อีกรอบ เพื่อยืนยันว่ามันขึ้นจริงก่อนจะรายงานว่างานเสร็จ
และในแปดจังหวะนี้ ไม่มีจังหวะไหนเลยที่ตัวโมเดลได้ถือกุญแจจริงไว้ในมือ
กุญแจถูกเติมที่ทางผ่าน ไม่ใช่ที่ตัวโมเดล

ปกติถ้าจะให้โปรแกรมสักตัวโคลนโค้ดจากเรโปส่วนตัวลงมา เราต้องเอา token ไปวางไว้ในเครื่องนั้นก่อน พอวางแล้วใครสั่งเครื่องนั้นได้ก็หยิบมันไปใช้ต่อได้ และเมื่อ agent เป็นคนสั่งเครื่อง ก็แปลว่าโมเดลอยู่ห่างจากกุญแจแค่คำสั่งเดียว
ตัวอย่างนี้เลือกอีกทาง แซนด์บ็อกซ์จะตั้งค่า Git ไว้ครั้งเดียวตอนเปิดเครื่อง ให้เขียนที่อยู่ทุกอันที่ชี้ไป GitHub เสียใหม่ ให้วิ่งอ้อมผ่าน Tilde ก่อน พอบอทสั่งโคลน คำสั่งจึงไม่ได้ไปถึง GitHub ตรงๆ มันไปหยุดที่ Tilde แล้ว Tilde เป็นคนเติม GitHub installation token ให้ตอนส่งต่อ โค้ดถึงไหลกลับลงมาในแซนด์บ็อกซ์
ตอนโพสต์คอมเมนต์กลับขึ้น PR ก็ใช้หลักเดียวกัน โมเดลสั่งได้แค่ว่าจะคอมเมนต์อะไรตรงบรรทัดไหน ส่วนกุญแจที่ทำให้คอมเมนต์นั้นโพสต์ขึ้นจริง Tilde มาเติมให้ทีหลังในชั้นที่โมเดลมองไม่เห็น
รอบตัวแซนด์บ็อกซ์ยังมีการจำกัดซ้อนอยู่อีกสองชั้น ชั้นแรกคือตัวเครื่องเป็นของใช้แล้วทิ้งต่อหนึ่งคำขอ ออกเน็ตได้ทางเดียวคือกลับไปหา Tilde เท่านั้น ค่าที่ตั้งไว้ทั้งหมดหายไปพร้อมกับเครื่องเมื่อมันหยุดทำงาน และถ้าไม่มีงานเข้าเลยห้านาที มันจะหมดอายุไปเอง ชั้นที่สองคือขอบเขตสิทธิ์ตั้งแต่ต้นทาง GitHub App ควรติดตั้งเฉพาะเรโปที่ยอมให้บอทเข้าไปรีวิวจริงๆ ควรอ่านสิทธิ์ที่ Tilde ร่างมาให้ก่อนกดติดตั้ง และชุดเครื่องมือที่เปิดให้บอทใช้ก็ควรมีแต่ของที่จำเป็นต่อการรีวิว ไม่ใช่เครื่องมือแก้อะไรก็ได้บน GitHub
P0 ถึง P2 เท่านั้น ที่เหลือตัดทิ้งตั้งแต่ต้น

คำสั่งที่เขียนไว้ให้โมเดลในตัวอย่างนี้เลือกข้างชัดเจน คือเอาความแม่นก่อนจำนวนคอมเมนต์ สิ่งที่บอทเจอจึงแบ่งออกเป็นสามระดับ
| ระดับ | หมายถึงอะไร |
|---|---|
| P0 | เสี่ยงโดนเจาะระบบ ข้อมูลสูญหาย หรือระบบล่มทั้งยวง |
| P1 | บั๊กที่ผิดจริง หรือทำให้ของเดิมที่เคยใช้ได้พังอย่างมีนัยสำคัญ |
| P2 | ข้อบกพร่องระดับกลางที่แก้ไหว และชี้ได้ว่ามันพังตรงไหน |
ส่วน P3 กับคอมเมนต์ที่เป็นเรื่องสไตล์ล้วนๆ ระบบคัดทิ้งไม่ให้ขึ้นมาตั้งแต่แรก ไม่ใช่ปล่อยขึ้นมาแล้วรอคนไล่ปิดทีหลัง
อีกจุดที่วางกรอบไว้แน่นคือขอบเขตอำนาจ บอทโพสต์กลับได้ในรูปแบบคอมเมนต์อย่างเดียว มันกดอนุมัติไม่ได้ และกดขอให้แก้ก่อนรวมก็ไม่ได้ กฎที่ทีมตั้งไว้ว่าโค้ดจะรวมเข้าโปรเจกต์หลักได้ต้องผ่านอะไรบ้าง จึงยังทำงานเหมือนเดิม และคนยังเป็นคนเคาะครั้งสุดท้ายอยู่ดี
ค่าความมั่นใจที่บอทแนบมากับสรุปก็ไม่ได้มาจากอารมณ์ของโมเดล แต่คิดจากหลักฐานที่หาได้ในเรโปนั้น ถ้าโปรเจกต์ไม่มีเทสต์ให้รัน หรือรันตรวจแล้วไม่ผ่าน ค่านี้จะต่ำลงทันที ถึงแม้รอบนั้นจะไม่เจอบั๊กสักตัวก็ตาม อ่านกลับด้านคือตัวเลขนี้กำลังบอกว่าเรโปให้หลักฐานกับมันได้แค่ไหน ไม่ได้บอกว่าโค้ดสะอาดแค่ไหน
ถ้าอยากเทียบกับของสำเร็จรูปที่ไม่ต้องประกอบเอง ฝั่งนั้นก็มีทางเลือกอยู่แล้ว เช่น ฟีเจอร์ Code Review ของ Claude Code ที่ส่ง AI หลายตัวมาช่วยกันตรวจ ซึ่งติดตั้งจบเร็วกว่ามาก แลกกับการที่กติกาการรีวิวไม่ได้อยู่ในมือเรา
ของที่ต้องมีก่อนจะลองประกอบเอง
ตัวอย่างนี้ประกอบขึ้นจากเครื่องมืออย่าง Next.js, Vercel AI SDK, Tilde และ Modal ของที่ต้องเตรียมก่อนลองจึงพ่วงกันมาเป็นชุด
- Node.js ตั้งแต่เวอร์ชัน 22 เป็นต้นไป กับ pnpm 10 สำหรับรันโปรเจกต์
- บัญชีและทีมบน Tilde สำหรับตั้งค่าตัวกลางทั้งหมด
- คีย์ของ Modal workspace สำหรับเปิดแซนด์บ็อกซ์
- องค์กรบน GitHub ที่เรามีสิทธิ์สร้าง GitHub App ขึ้นมาแล้วติดตั้งเองได้
- คีย์ของ OpenAI สำหรับตัวโมเดลที่อ่านโค้ด
- โปรเจกต์บน Vercel เอาไว้ปล่อยตัว agent ขึ้นไปอยู่จริง
ขั้นแรกหลังโคลนโปรเจกต์ลงมาคือสองบรรทัดนี้
pnpm install
cp .env.example .env.localจากนั้นเป็นงานตั้งค่าที่ทำครั้งเดียว คือแก้ที่อยู่ปลายทางในไฟล์ tilde-state.yaml แล้วนำเข้าไปในบัญชี Tilde ไฟล์นี้คือของที่ทำให้ยกทั้งระบบไปวางที่อื่นได้ เพราะมันเขียนไว้ครบว่า Tilde ต้องสร้างอะไรให้บ้าง ทั้งฝั่ง GitHub และฝั่งแซนด์บ็อกซ์ ส่วนกุญแจตัวจริงไม่ได้อยู่ในไฟล์นี้ ของพวกนั้นเป็นผลลัพธ์จากขั้นตอนตั้งค่ากุญแจ และห้ามคอมมิตขึ้นเรโปเด็ดขาด
พอตั้งค่าเสร็จ รันด้วย pnpm dev แล้วเปิดพอร์ตออกไปผ่านทันเนลของ Tilde เพื่อทดสอบ เวลาจะเรียกใช้จริง ก็ไปพิมพ์ในคอมเมนต์ของ PR ที่มีอยู่แล้วว่า @your-app-name review this PR โดยเปลี่ยนชื่อให้ตรงกับ GitHub App ที่เราสร้างไว้ ถ้าอยากให้รีวิวใหม่ทั้งก้อนก็สั่ง @your-app-name full review และถ้าอยากถามต่อจากคอมเมนต์ไหน ก็ตอบกลับใต้คอมเมนต์นั้นแล้วแท็กมันอีกครั้ง
เอกสารประกอบอยู่ที่ Tilde docs ซึ่งฝั่งผู้สร้างระบุไว้เองว่ายังไม่สมบูรณ์และกำลังทยอยเก็บงาน ส่วนใครที่อยากเริ่มจากของที่เบากว่านี้ก่อน ยังมีสกิลที่ประกอบ agent ให้แล้วปล่อยขึ้นคลาวด์ในบัญชีของตัวเอง ให้ลองจับทางดูได้เหมือนกัน
ข้อจำกัดที่ควรรู้ก่อนคิดว่าจะย้ายมาใช้
ข้อแรกคือมันไม่ได้ทำงานจบอยู่ในเครื่องเราเครื่องเดียว ตัวอย่างนี้พาดอยู่บนบริการคลาวด์อย่างน้อยสามเจ้าคือ Tilde, Vercel และ Modal คำว่าเป็นเจ้าของบอทในที่นี้จึงหมายถึงเราเป็นคนเขียนกติกาการรีวิวเองและวางมันบนโครงสร้างของเราเอง ไม่ได้แปลว่าไม่ต้องพึ่งใครเลย
ข้อสองคือมันไม่ได้ทำดัชนีของโค้ดทั้งโปรเจกต์เก็บไว้ล่วงหน้า ทุกครั้งที่รีวิว มันอ่านเรโป ณ ตอนนั้นใหม่หมด จึงเอาไปวางเทียบตรงๆ กับเจ้าที่ขายบริการรีวิวแบบทำดัชนีเก็บไว้ก่อนไม่ได้ และมันก็ไม่ได้เรียนรู้รสนิยมของทีมจากการที่คนไปกดรับหรือกดปัดคอมเมนต์ของมัน ถ้าอยากให้มันรู้จักสไตล์ของทีม ต้องไปเขียนไว้ในไฟล์กติกาของเรโปเอง
ข้อสามเป็นเรื่องเทคนิคที่จะเจอตอนดีพลอยจริง ชุดเครื่องมือ SDK ของ Modal ฝั่ง JavaScript ยังติดป้ายเอาไว้เองว่าเบื้องหลังของมันยังไม่นิ่ง ควรล็อกเวอร์ชันแล้วทดสอบก่อนอัปเกรดทุกครั้ง ส่วนฝั่ง Vercel ตัวฟังก์ชันกำหนดเวลาสูงสุดไว้ที่ maxDuration = 300 วินาที ต้องเช็กก่อนว่าแพลนที่ใช้อยู่รองรับฟังก์ชันที่รันนานขนาดนั้น
และข้อสุดท้ายคือค่าใช้จ่ายที่เดินตามจำนวนรีวิวจริง ทั้งค่าโมเดลและค่าแซนด์บ็อกซ์ ยิ่งทีมเปิด PR เยอะ บิลก็เดินตาม ของแบบนี้ไม่มีคำว่าฟรี
บล็อกที่ Tilde เขียนเล่าเองบอกว่าโจทย์ตั้งต้นของบอทตัวนี้มีอยู่ห้าข้อ และมีข้อเดียวเท่านั้นที่พูดถึงความสามารถของตัวโมเดล ที่เหลือเป็นเรื่องการต่อระบบกับการกันกุญแจล้วนๆ
ก่อนจะเปิดให้ agent ตัวไหนก็ตามเข้าไปแตะของจริงในบริษัท มีคำถามหนึ่งข้อที่ตอบได้เร็วกว่าการไล่อ่านสเปกทั้งหน้า คือถ้ามันเข้าใจผิดกลางทางขึ้นมา ตอนนั้นมันถือกุญแจอะไรอยู่ในมือบ้าง
ที่มา:
- บทความ How to build a code review agent จาก Tilde
- โปรเจกต์ trytilde/examples · code-review-bot บน GitHub
ชอบเรื่องแนวนี้ มีอีบุ๊คฟรีให้อ่านต่อ
สร้าง Claude Skill แบบไม่ต้องรู้โค้ด คู่มือสร้าง Claude Skill ของคุณเองด้วยการคุยกับ Claude Code เป็นภาษาไทย
กดสมัครแล้วเราจะส่งเทคนิค AI และของแจกใหม่ๆ ให้ทางอีเมล เลิกรับได้ตลอด
Claude Cowork · The Business Playbook

ฉบับภาษาไทย 15 บท เรียนรู้ผ่านโปรเจกต์จำลองต่อเนื่องทั้งเล่ม ตั้งแต่ตั้งค่า Workspace จัดการไฟล์ เชื่อมแอป ตั้งระบบอัตโนมัติ จนถึงสร้าง Plugin


