GEIST
All blog posts

หยุดให้ AI “เดาใจ”: วิธีใช้ Grill Me สั่งงานให้ได้ของตรงปกตั้งแต่รอบแรก

Grill Me คือสกิลที่ให้ AI สัมภาษณ์เราเป็นรอบ ๆ จนเข้าใจตรงกันก่อนลงมือเขียนโค้ด บทความนี้อธิบายหลักที่ผู้เขียนใช้ออกแบบมัน คือการแยก "ข้อเท็จจริง" ที่ AI ไปหาเอง ออกจาก "การตัดสินใจ" ที่ต้องเป็นของเรา

@samithiwat
ซ้ายเป็นข้อความตัวใหญ่ว่าหยุดให้ AI เดาใจ โดยคำว่าเดาใจเป็นสีส้ม ขวาเป็นการ์ดคำถามจาก AI หัวข้อ Q1 ล็อกอินค้างไว้กี่วัน พร้อมบรรทัดสีส้มที่แนะนำว่า 30 วัน มุมขวาล่างเป็นมาสคอตผีสวมมงกุฎ

คำถามหนึ่งข้อจาก Grill Me หน้าตาประมาณนี้ พร้อมคำตอบที่มันแนะนำมาให้

ในการทำ Product จะมีหลักการสำคัญอยู่ข้อหนึ่งที่ทุกคนต่างรู้กันดีก็คือ "ลูกค้าไม่รู้ว่าตัวเองต้องการอะไรจนกว่าจะได้เห็นมัน" สอดคล้องกับคำพูดของ Andrew Hunt และ David Thomas ผู้เขียนหนังสือระดับตำนานอย่าง The Pragmatic Programmer ที่เคยกล่าวไว้ว่า "No-one knows exactly what they want"

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

Grill Me จึงถูกออกแบบขึ้นมาแก้ปัญหานี้ โดยให้ AI Agent คอยตั้งคำถามกับเราเป็นรอบ ๆ เพื่อเข้าใจความต้องการของเราให้มากที่สุด ก่อนที่จะลงมือสร้างจริง

ของที่เปิดอ่านได้ AI จัดการเอง ของที่ต้องเลือกถึงจะมาถึงเรา

ทำไมการสั่ง AI มักจะได้งานที่ไม่ตรงใจ?

เวลาเราสั่งงาน AI เรามักจะเริ่มจากเป้าหมายกว้าง ๆ เช่น "อยากได้ระบบสมาชิก" หรือ "ช่วยเขียนแบบร่างโครงการนี้ให้หน่อย" แต่ในความเป็นจริง มันจะมีรายละเอียดสำคัญซ่อนอยู่อีกมากมาย เช่น:

  • ระบบสมาชิก จะให้จดจำการใช้งานกี่วัน?
  • ถ้าสมัครด้วยอีเมลที่มีอยู่แล้ว จะให้แจ้งเตือน หรือรวมบัญชีเข้าด้วยกัน?
  • ต้องมีการยืนยันตัวตนผ่าน SMS ด้วยหรือไม่?

หากไม่มีการบอกรายละเอียดที่ชัดเจน AI Agent จะเติมช่องว่างเหล่านี้ด้วย "ค่าที่พบบ่อยที่สุด" จากข้อมูลที่มันเคยเรียนรู้มา ซึ่งอาจจะไม่ตรงกับโจทย์ของคุณ และทำให้คุณต้องมานั่งสั่งแก้ทีหลัง

Grill Me คืออะไร

Grill Me เป็นสกิลสำหรับ AI (สร้างโดย Matt Pocock ใน series Skills for Real Engineers) ทำหน้าที่สัมภาษณ์ผู้ใช้งานเกี่ยวกับแผนงานหรือไอเดีย จนกว่าทั้งสองฝ่ายจะเห็นภาพตรงกัน 100% แล้วค่อยเริ่มลงมือ ตัวมันเองจะไม่แตะต้องหรือแก้ไขไฟล์งานใด ๆ ในระบบเลยจนกว่าจะสัมภาษณ์จบ

มี Skill Grill แบบไหนบ้าง?

ในชุดสกิลนี้ถูกแบ่งบทบาทออกเป็น 3 ตัวหลัก เพื่อทำงานร่วมกัน:

สกิลใครเป็นคนเรียกหน้าที่
grill-meเราพิมพ์เรียกเองประตูหน้าบ้าน สั่งให้ไปรัน grilling อีกที
grillingAI เรียกเองตัวจริงที่เก็บวิธีสัมภาษณ์ไว้ทั้งหมด
grill-with-docsเราพิมพ์เรียกเองรุ่นต่อยอด เพิ่มการจดเอกสารเข้าไป

เมื่อรัน grill-me สิ่งที่คุณจะได้กลับมาคือ "ไอเดียที่ชัดมากขึ้น" และบทสนทนาที่เข้าใจตรงกัน

Grill Me ทำงานอย่างไร

เพื่อไม่ให้ผู้ใช้งานรู้สึกโดนยิงคำถามใส่จนมึนหัว Grill Me มีโครงสร้างการถามที่เรียกว่า Design Tree โดยในแต่ละรอบจะเลือกถามเฉพาะส่วนที่เรียกว่า Frontier พูดง่ายๆ ก็คือ ถามเฉพาะคำถามที่ตอบได้แล้วตอนนี้ คำถามที่ต้องการคำตอบของข้ออื่นก่อน จะให้ถามในรอบถัดไป

แถวที่ไฮไลต์คือ frontier ของรอบนี้

วิธีการติดตั้ง Grill Me

ใช้ CLI:

npx skills@latest add mattpocock/skills

ถ้าอยากได้เฉพาะบางตัว ใส่ --skill ต่อท้าย:

npx -y skills add mattpocock/skills --skill grill-me --agent claude-code

หรือถ้าใช้ Claude Code สามารถลงเป็น plugin ก็ได้:

claude plugins install mattpocock-skills

เทคนิคใช้งาน Grill Me

พอเริ่มเซสชัน คำถามจะออกมาหน้าตาแบบนี้ ทุกข้อจะมีคำตอบที่ AI Agent แนะนำติดมาด้วยเสมอ:

❓ **Q1** - **<หัวข้อคำถาม>**: <รายละเอียด อาจยาวหลายย่อหน้า และมีตัวเลือก>

➡️ <คำตอบที่ AI แนะนำ>
บรรทัดที่สองคือที่ที่คนส่วนใหญ่ยอมแพ้

เวลาตอบ เราสามารถอ้างอิงตามหมายเลขข้อได้เลย ข้อไหนที่อ่านแล้วเห็นด้วยกับ AI ก็ตอบสั้น ๆ ได้ทันที:

Q1: follow rec.
Q2: <คำตอบของคุณ>
Q3: ขอเป็นแบบที่สาม แต่ไม่ต้องมีส่วนแจ้งเตือน

หรือถ้าอ่านครบทุกข้อในรอบนั้นแล้วเห็นด้วยทั้งหมด สามารถพิมพ์บรรทัดเดียวจบได้เลย:

all follow your rec.

TIP 1: เปลี่ยนให้ถามเป็น HTML เพื่อให้เข้าใจได้ง่ายขึ้น

ถ้ารู้สึกว่าคำถามเป็นตัวหนังสือยาวจนท้อที่จะต้องตอบทั้งหมด ลองสั่งให้ AI Agent ถามมาในรูปแบบ interactive HTML ได้ เพื่อช่วยให้เห็นภาพมากขึ้น

ask me in the interactive HTML format with infographics to explain each questions.

คำสั่งนี้จะเปลี่ยนรูปแบบคำถามในรอบนั้นให้ออกมาเป็นหน้าเว็บที่อ่านง่าย มีรูปภาพประกอบความเข้าใจชัดเจน

คำถามชุดเดียวกัน ต่างกันแค่รูปแบบที่มันส่งมาให้เรา

TIP 2: ใช้สกิล /wait-what ถ้าไม่เข้าใจคำถาม

ในชุดสกิลเดียวกันจะมีคำสั่งย่อยชื่อ /wait-what สำหรับใช้ย้อนถาม AI เมื่อเราเริ่มงงว่า "กำลังคุยเรื่องอะไรกันอยู่?"

สามารถลงด้วยคำสั่ง

npx -y skills add mattpocock/skills --skill wait-what --agent claude-code

เมื่อเราพิมพ์ /wait-what AI Agent จะปรับวิธีอธิบายใหม่ทันที:

  • ปูบริบทสั้น ๆ ก่อน ว่าเรื่องนี้เกี่ยวกับอะไร
  • ใช้ภาษาง่าย ๆ
  • ใช้เฉพาะคำศัพท์กลาง ที่เคยตกลงกันไว้ในโปรเจกต์เท่านั้น
ย่อหน้าที่อ่านไม่ไหวมักไม่ได้ยากที่เนื้อหา แต่ยากที่รูปร่าง

สามารถเรียกใช้ระหว่างตอบคำถามได้เลย เช่น:

Q1: /wait-what explain what do you mean, show me in HTML with infographic
Q2: <คำตอบของคุณ>
Q3: follow rec.

Grill with Docs คืออะไร

ข้อจำกัดสำคัญของ grill-me คือ มันไม่สร้างหรือแก้ไขไฟล์ใด ๆ ในเครื่องเลย

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

กรอบเส้นประคือการไม่มีไฟล์อยู่จริง

สกิล grill-with-docs จึงถูกสร้างขึ้นมาเพื่อแก้ปัญหานี้ โดยนำแนวคิด Domain-Driven Design (DDD) หรือเรียกง่ายๆ ว่า "การสร้างพจนานุกรมคำศัพท์ร่วมกัน" มาใช้ทำเอกสารสรุปให้อัตโนมัติ

แนวคิดนี้เข้าใจได้ไม่ยาก ยกตัวอย่างเช่น ร้านกาแฟ:

  • ใบสั่งกาแฟที่ลูกค้าถือ เรียกว่า "Order"
  • ใบเรียกเก็บเงินที่ออกตามมาทีหลัง เรียกว่า "Invoice"

ทั้งสองใบนี้คือเอกสารคนละฉบับและมีความหมายต่างกัน แต่ในการทำงานจริง คนเรามักจะเรียกรวม ๆ กันว่า "บิล" หรือ "ใบแจ้งหนี้" จนทำให้ระบบทำงานสับสน สิ่งที่ grill-with-docs ทำคือ บังคับให้เราและ AI เลือกใช้คำคำเดียวให้ตรงกันทุกที่ ทั้งในเอกสาร ในการคุยแชท และในชิ้นงานจริง

การคัดกรองอะไรควรจด และอะไรควรปล่อยผ่าน

ความฉลาดของ grill-with-docs ไม่ใช่การตั้งหน้าตั้งตาจดทุกอย่างลงเอกสาร แต่คือ "การมีกฎคัดกรองอย่างเข้มงวดว่าเรื่องไหนควรจด และเรื่องไหนควรข้าม"

ปลายทางที่สามเป็นเส้นประ เพราะมันคือการไม่ถูกจดไว้เลย

1. CONTEXT.md — จดเฉพาะ "คำศัพท์ที่ใช้ประจำ"

ไฟล์ CONTEXT.md ทำหน้าที่เป็นสมุดคำศัพท์ของโปรเจกต์เท่านั้น ห้ามนำรายละเอียดขั้นตอนการทำงานหรือข้อบันทึกอื่น ๆ มาใส่เด็ดขาด

จุดที่น่าสนใจคือ แต่ละคำศัพท์จะมีบรรทัด _Avoid_ เพื่อระบุ "คำที่ห้ามนำมาใช้แทน" เอาไว้ด้วย:

หนึ่งรายการมีสามส่วน คำที่ใช้ ความหมาย และคำที่ห้ามใช้

ตัวอย่าง CONTEXT.md จากร้านกาแฟ:

## Language

**Order**:
A request from a customer to buy something.
_Avoid_: Purchase, transaction

**Invoice**:
A request for payment sent to a customer after delivery.
_Avoid_: Bill, payment request

2. ADR (Architecture Decision Record) — จดเฉพาะ "การตัดสินใจเรื่องใหญ่"

ADR คือบันทึกสั้น ๆ สรุปว่า "เราตัดสินใจเลือกอะไร และทำไมถึงเลือกทางนี้" โดยจะถูกบันทึกก็ต่อเมื่อเรื่องนั้นผ่านด่านคัดกรอง ครบทั้ง 3 ข้อดังนี้:

เงื่อนไขความหมาย
Hard to reverseเป็นเรื่องที่ถ้าเปลี่ยนใจในอนาคต จะต้องจ่ายราคาแพงหรือเสียเวลามาก
Surprising without contextคนอื่นมาอ่านงานทีหลังแล้วจะต้องงงว่า "ทำไมถึงทำแบบนี้?"
The result of a real trade-offมีทางเลือกอื่น ๆ อยู่จริง และเรายอมแลกข้อดีข้อเสียเพื่อเลือกทางนี้
แปดเข้า สองออก และนั่นคือผลลัพธ์ปกติ

หากขาดข้อใดข้อหนึ่งไป AI จะไม่เขียน ADR บันทึกไว้เลย เพราะถ้าเปลี่ยนใจได้ง่ายก็ไม่จำเป็นต้องจด หรือถ้าไม่มีทางเลือกอื่นตั้งแต่แรก ก็ไม่มีอะไรต้องบันทึกเพิ่มเติมนอกจาก "ทำตามปกติ"

3. ส่วนที่เหลือทั้งหมด — ให้จบอยู่แค่ในบทสนทนา

ข้อตกลงเล็ก ๆ น้อย ๆ ทั้งหมดที่ไม่ใช่คำศัพท์หลัก และไม่ผ่านด่านคัดกรอง ADR จะถูกปล่อยให้อยู่ในแชทเท่านั้น ไม่ถูกบันทึกลงไฟล์ใด ๆ

การตัดสิ่งที่ไม่จำเป็นทิ้ง คือหัวใจสำคัญที่ทำให้เอกสารที่เหลืออยู่ยังมีคุณค่าและน่ากลับมาอ่านเสมอ

คำแนะนำในการใช้งาน

  1. /grill-me เหมาะสำหรับงานที่ไม่ได้ต้องการจดบันทึกการตัดสินใจลงไว้เป็นลายลักษณ์อักษร เช่น แก้ไขเล็กๆ น้อยๆ หรือทำงานที่ไม่ได้ซับซ้อนมาก ไม่ได้ต้องกลับมาทำซ้ำแบบเดิมอีก
  2. /grill-with-docs เหมาะสำหรับงานที่มีความซับซ้อน ต้องเอากลัับมาทำอีกเรื่อยๆ หรือมีความยุ่งเกี่ยวกับงานอื่นๆ ที่ต้องใช้คำศัพท์เฉพาะในการทำงาน (ส่วนมากมักจะเป็นแบบนี้)