เลิกสั่งงาน GitHub Copilot แบบปากเปล่า! ลองเขียนกฎลงไฟล์ .github/copilot-instructions.md ดีกว่า

8 นาที 17 views บันทึกเป็น PDF
เลิกสั่งงาน GitHub Copilot แบบปากเปล่า! ลองเขียนกฎลงไฟล์ .github/copilot-instructions.md ดีกว่า

เบื่อไหมที่ต้องคอยย้ำกฎเดิม ๆ ให้ AI? มาเปลี่ยนวิธีสั่งงาน GitHub Copilot ด้วยการสร้างไฟล์ .github/copilot-instructions.md ให้ AI เข้าใจมาตรฐานโค้ดของคุณแบบมือโปร

ทำไมการสั่งงาน AI ด้วยการพูดถึงไม่ได้ผลในระยะยาว

เวลาเราเริ่มฝึกเขียนโค้ด เรามักจะตื่นเต้นกับ GitHub Copilot (ผู้ช่วยอัจฉริยะที่ช่วยเขียนโค้ดในโปรแกรม) หลายคนใช้วิธีบอกมันว่า "ช่วยเขียนโค้ดให้สะอาด" หรือ "ช่วยเขียนฟังก์ชันนี้หน่อย" ซึ่งช่วงแรกมันก็ดูได้ผลดี แต่พอโปรเจกต์เริ่มใหญ่ขึ้น วิธีการสั่งงานแบบนี้จะเริ่มตันและไม่ได้ผลตามที่ต้องการ

ปัญหาคือการบอกด้วยคำพูด (Prompt Engineering) เหมือนการสั่งงานลูกน้องปากเปล่าโดยไม่มีคู่มือ ทุกครั้งที่เราสั่ง เราต้องคอยย้ำเตือนกฎเดิมๆ ซ้ำแล้วซ้ำเล่า ถ้าวันไหนเราลืมบอก AI ก็จะกลับไปเขียนโค้ดแบบเดิมที่ไม่ได้มาตรฐาน การสั่งงานด้วยข้อความ จึงเป็นเหมือนการขอร้องให้ AI พยายามให้มากขึ้น แทนที่จะเป็นการสอนให้มันรู้จักมาตรฐานของทีมเราจริงๆ

ลองนึกภาพว่าคุณกำลังสอนเพื่อนร่วมงานใหม่ ถ้าคุณบอกแค่ว่า "ทำงานให้ดีนะ" เพื่อนคุณก็คงงงว่าดีแค่ไหน แต่ถ้าคุณยื่น คู่มือการทำงาน (Document) ที่ระบุชัดเจนว่าต้องทำอะไรบ้าง เพื่อนคุณก็จะทำงานได้ถูกต้องตั้งแต่ครั้งแรก การเปลี่ยนจากการ "สั่งปากเปล่า" มาเป็นการ "เขียนกฎไว้ในไฟล์" คือกุญแจสำคัญที่จะทำให้ผู้ช่วย AI ของคุณทำงานได้แม่นยำเหมือนคนในทีมจริงๆ

รู้จักกับไฟล์ .github/copilot-instructions.md

วิธีแก้ปัญหาที่ยั่งยืนที่สุดคือการสร้างไฟล์ที่ชื่อว่า .github/copilot-instructions.md ไว้ในโฟลเดอร์หลักของโปรเจกต์ ไฟล์นี้เปรียบเสมือน กฎเหล็ก ที่ GitHub Copilot จะต้องอ่านทุกครั้งก่อนที่มันจะตอบคำถามหรือเขียนโค้ดให้เรา ทำให้มันเข้าใจบริบทของงานโดยที่เราไม่ต้องคอยพิมพ์บอกซ้ำๆ

สถานที่วางไฟล์นี้ต้องเป๊ะ คือต้องอยู่ในโฟลเดอร์ .github เท่านั้น และต้องตั้งชื่อให้ถูกเพื่อให้ระบบมองเห็น การเขียนกฎในไฟล์นี้เป็นเพียงการเขียนข้อความแบบ Markdown (รูปแบบการเขียนเอกสารที่อ่านง่าย) ปกติ ไม่ต้องมีคำสั่งพิเศษอะไรให้ยุ่งยาก เป็นวิธีที่เรียบง่ายแต่ทรงพลังอย่างเหลือเชื่อ

ลองดูตัวอย่างการสร้างไฟล์นี้กันครับ

# กฎการเขียนโค้ดสำหรับโปรเจกต์นี้
# ห้ามใช้ float ในการคำนวณเงิน ให้ใช้ Decimal เท่านั้น
# การจัดการวันที่ต้องระบุ Timezone เป็น UTC เสมอ

อธิบายส่วนประกอบของตัวอย่าง:

  1. บรรทัดแรก: เป็นการตั้งชื่อหัวข้อเพื่อให้ AI รู้ว่าเป็นกฎสำหรับโปรเจกต์
  2. บรรทัดที่สอง: ระบุข้อห้ามชัดเจนว่าห้ามใช้ float (ตัวเลขทศนิยมแบบไม่แม่นยำ) ในงานการเงิน
  3. บรรทัดที่สาม: กำหนดมาตรฐานเรื่องเวลาให้เป็น UTC (เวลามาตรฐานสากล) เพื่อป้องกันข้อผิดพลาด

ผลลัพธ์ที่ได้: ทุกครั้งที่คุณถาม Copilot เกี่ยวกับการคำนวณเงินหรือเวลา มันจะใช้กฎที่คุณเขียนไว้ในไฟล์นี้เป็นหลักโดยอัตโนมัติ

กฎที่ดีต้องชัดเจนและตรวจสอบได้

กฎที่เขียนในไฟล์นี้ต้องมีความเฉพาะเจาะจง ถ้าเราเขียนกว้างๆ เช่น "เขียนโค้ดให้ดี" AI จะไม่เข้าใจ แต่ถ้าเราเขียนว่า "ห้ามใช้ datetime.utcnow() เพราะมันคืนค่าเวลาที่ไม่มีโซนเวลา" AI จะรู้ทันทีว่าต้องทำอย่างไร กฎที่ดีต้อง Durable (ใช้ได้นาน) Specific (ระบุชัดเจน) และ Checkable (ตรวจสอบได้ว่าทำตามไหม)

การใช้กฎแบบ "ห้ามทำ" (Prohibitions) มักจะได้ผลดีกว่าการบอกให้ "ทำแบบนั้นแบบนี้" เพราะมันเป็นการระบุจุดที่ผิดพลาดให้ AI เลี่ยงไปเลย การบอกเหตุผลประกอบสั้นๆ ว่าทำไมถึงห้าม จะช่วยให้ AI เข้าใจเจตนาของเรามากขึ้น แม้ในสถานการณ์ที่เราไม่ได้คาดคิดไว้

เปรียบเทียบระหว่างกฎที่ได้ผลกับไม่ได้ผล:

# แบบที่ไม่ได้ผล (คลุมเครือเกินไป)
- จัดการเรื่องเวลาให้ถูกต้องนะ

# แบบที่ได้ผล (ชัดเจนและตรวจสอบได้)
- ห้ามใช้ datetime.utcnow() เพราะมันไม่ได้ระบุโซนเวลา 
  ให้ใช้ datetime.now(timezone.utc) แทนเสมอ

อธิบายความแตกต่าง:

  1. แบบแรก: เป็นคำสั่งกว้างๆ AI อาจจะเดาใจเราผิดและทำตามความเข้าใจของมันเอง
  2. แบบที่สอง: ระบุชื่อฟังก์ชันที่ห้ามใช้ พร้อมคำสั่งที่ถูกต้องให้แทนที่ ทำให้ AI ทำงานได้แม่นยำ 100%

ผลลัพธ์: โค้ดที่ได้จะไม่มีบั๊กเรื่องเวลาและเป็นไปตามมาตรฐานที่คุณกำหนดไว้ตั้งแต่ต้น

กฎต้องสั้นและเน้นเรื่องที่สำคัญจริงๆ

อย่าพยายามเขียนกฎเป็นร้อยบรรทัด เพราะไฟล์ที่ยาวเกินไปจะทำให้ AI สับสนและอาจลืมกฎข้อสำคัญได้ ให้เลือกเขียนเฉพาะเรื่องที่ ไม่ชัดเจน หรือเรื่องที่คนทั่วไปมักจะทำผิดบ่อยๆ อะไรที่ Linter (เครื่องมือตรวจหาข้อผิดพลาดในโค้ดอัตโนมัติ) ตรวจสอบได้อยู่แล้ว ไม่ต้องเอามาใส่ในไฟล์นี้ให้รก

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

ตัวอย่างกฎสำหรับ Infrastructure (โครงสร้างพื้นฐานของระบบ):

# กฎสำหรับ Terraform
- ใช้ for_each สำหรับการจัดการข้อมูลหลายรายการ
- อย่าใช้ hardcoded (ค่าที่เขียนตายตัวในโค้ด) สำหรับ region หรือ account id

อธิบายส่วนประกอบ:

  1. for_each: คือคำสั่งใน Terraform (เครื่องมือสร้างระบบคลาวด์) ที่ช่วยให้จัดการข้อมูลได้ปลอดภัยกว่า
  2. hardcoded: คือการระบุค่าลงไปตรงๆ ซึ่งไม่ดีเพราะแก้ไขยากในอนาคต

ผลลัพธ์: AI จะช่วยตรวจสอบและแนะนำการเขียนโค้ดที่รองรับการขยายตัวของระบบได้ดีขึ้น

การทำงานร่วมกันเป็นทีมผ่านไฟล์กฎ

ความพิเศษที่สุดของการเก็บกฎไว้ในไฟล์ คือการที่มันต้องถูก Commit (บันทึกการเปลี่ยนแปลงโค้ด) และผ่านการตรวจสอบเหมือนการเขียนโค้ดปกติ เมื่อกฎอยู่ในไฟล์ ทุกคนในทีมสามารถมองเห็นและเสนอแก้ได้ มันจึงไม่ใช่แค่ความชอบส่วนตัวของคนใดคนหนึ่ง แต่กลายเป็น มาตรฐานของทีม อย่างแท้จริง

เมื่อมีการถกเถียงกันเรื่องวิธีการเขียนโค้ดในทีม แทนที่จะเถียงกันยาวๆ ให้สรุปว่า "เอาไปใส่ในไฟล์กฎเถอะ" วิธีนี้จะเปลี่ยนความเห็นส่วนตัวให้กลายเป็นข้อเสนอที่ทุกคนต้องเห็นชอบร่วมกันผ่านการทำ Pull Request (การส่งคำขอรวมโค้ดที่แก้ไขแล้วเข้าโปรเจกต์หลัก)

สถานการณ์ตัวอย่างในทีม:

  • นาย A อยากให้ใช้ชื่อตัวแปรแบบหนึ่ง นาย B อยากใช้อีกแบบหนึ่ง
  • ทั้งคู่ถกเถียงกันนาน 15 นาทีโดยไม่ได้ข้อสรุป
  • หัวหน้าทีมสรุปให้บันทึกมาตรฐานที่ตกลงกันลงในไฟล์กฎ
  • จากนั้น Copilot จะเขียนโค้ดให้ทุกคนในทีมตามมาตรฐานเดียวกันทันที

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

สรุป: เริ่มต้นเขียนกฎแรกของคุณวันนี้

การปรับปรุงการทำงานกับ AI ไม่ได้อยู่ที่การใช้คำพูดที่ซับซ้อน แต่อยู่ที่การสร้าง System (ระบบ) ที่ชัดเจนให้มันได้เรียนรู้ การเริ่มต้นง่ายมาก แค่เปิดไฟล์ .github/copilot-instructions.md แล้วเขียนกฎ 3 ข้อที่คุณอยากให้มือใหม่ในทีมรู้ไว้ตั้งแต่สัปดาห์แรก แค่นี้ก็เพียงพอแล้ว

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

ตัวอย่างการนำไปใช้จริง:

  1. สร้างไฟล์ .github/copilot-instructions.md ในโฟลเดอร์โปรเจกต์
  2. ใส่กฎ 3 ข้อ เช่น: ห้ามใช้ any ใน TypeScript, ต้องใส่ docstring (คำอธิบายฟังก์ชัน) ทุกครั้ง, และต้องทำ Unit Test (การทดสอบโค้ดส่วนย่อย) เสมอ
  3. สังเกตผลลัพธ์หลังจากถามคำถาม Copilot ครั้งถัดไป คุณจะพบว่าโค้ดที่ได้ถูกปรับให้เข้ากับกฎที่คุณตั้งไว้โดยอัตโนมัติ

ที่มา: Stop Prompt-Engineering Copilot. Write Three Rules in a File Instead. — DEV Community

แชร์บทความ

Facebook X LINE

บทความที่เกี่ยวข้อง

จัดการเซิร์ฟเวอร์ผ่าน VS Code ให้ง่ายขึ้นด้วย Easy SSH พร้อมฟีเจอร์โหลดไฟล์ผ่านคลิกเดียว

จัดการเซิร์ฟเวอร์ผ่าน VS Code ให้ง่ายขึ้นด้วย Easy SSH พร้อมฟีเจอร์โหลดไฟล์ผ่านคลิกเดียว

เบื่อไหมที่ต้องสลับหน้าจอไปมาเพื่อจัดการเซิร์ฟเวอร์? มาลองใช้ Easy SSH ปลั๊กอิน VS Code ที่ช่วยให้คุณรีโมทผ่าน Terminal ได้สะดวก แถมโหลดไฟล์ได้ง่ายแค่กด Ctrl+click

ที่มา: DEV Community

3 hours ago 11 นาที
3 views
วิธีดึงข้อมูลราคาจาก Google Hotels ด้วย API สำหรับนักพัฒนา

วิธีดึงข้อมูลราคาจาก Google Hotels ด้วย API สำหรับนักพัฒนา

อยากทำแอปท่องเที่ยวแต่ดึงข้อมูลราคาจาก Google Hotels ไม่ได้? มาดูวิธีใช้ Apify Actor ช่วยดึงข้อมูลแบบอัตโนมัติด้วย Python ง่ายๆ ไม่ต้องกลัวเว็บพัง

ที่มา: DEV Community

6 hours ago 8 นาที
4 views
วิธีเช็กความพร้อมโปรเจกต์ก่อนปล่อยงานจริงด้วย ReleaseReady

วิธีเช็กความพร้อมโปรเจกต์ก่อนปล่อยงานจริงด้วย ReleaseReady

เคยไหม? โค้ดรันได้ในเครื่องแต่พอปล่อยจริงกลับพัง! มาดูวิธีตรวจสอบความพร้อมของโปรเจกต์ก่อนอัปขึ้น GitHub ด้วยเครื่องมือ ReleaseReady กัน

ที่มา: DEV Community

10 hours ago 9 นาที
5 views