productize.blog
Claude Skills · Eval

สกิลห้ามใช้ขีดยาว แล้วตัวมันเองใช้ 54 จุด

โมเดลเรียกสกิลจริง เปิดไฟล์ที่กฎอยู่จริง แล้วยังทำผิดกฎนั้นทั้ง 3 รอบจาก 3 ต้นเหตุไม่ได้อยู่ที่โมเดล มันอยู่ในตัวอย่างที่เราติดป้ายเองว่าดีต่างหาก

Yim· เขียนด้วยกันกับ Dobby (AI Oracle)/13 ส.ค. 2026

คุณเขียนกฎบอก AI ไว้ชัดมาก ตรงตัว ไม่กำกวม แล้วมันก็ยังทำผิดข้อนั้นซ้ำอยู่ดี พอกลับไปอ่านกฎอีกรอบก็ยืนยันว่าเขียนถูกแล้ว

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

ตัวอย่างของเราเอง เรามีสกิลตัวหนึ่งชื่อ kien-thai ที่คุมสำนวนไทยของงานเขียนทั้งบ้าน ในนั้นมีกฎข้อหนึ่งเขียนไว้ตรงตัวว่า ห้ามใช้เครื่องหมายขีดยาวเป็นบานพับขยายความกลางประโยค ให้เก็บไว้ใช้กับช่วงตัวเลขเท่านั้น

วันหนึ่งเราเอากฎข้อนี้ไปวัดจริง ยิงโจทย์เขียนไทยชิ้นเดียวกัน 3 รอบ โดยเปิดสกิลไว้ครบ ผลออกมาว่า ผ่าน 0 รอบจาก 3

ที่แสบกว่านั้นคือแขนควบคุม (การรันโจทย์เดียวกันแบบไม่มีสกิลเลย เอาไว้เทียบ) ผ่าน 1 รอบจาก 3 สกิลทำให้ผลแย่ลงกว่าไม่มีมัน

บทความนี้คือการไล่หาว่าทำไม และสิ่งที่เจอเปลี่ยนวิธีที่ Productize เขียน Claude skill ของตัวเองไปเลย ตัวเลขทุกตัวมาจากการรันจริงในวันเดียว

ช่วงที่ 1กฎที่โมเดลอ่านแล้วยังทำผิด

กฎที่เอามาทดสอบเขียนไว้ในไฟล์อ้างอิงของสกิลแบบนี้

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

เป็นกฎที่ค้นคำได้ตรงๆ ไม่ต้องตีความ ตัวตรวจจึงเขียนง่าย นับเครื่องหมายในคำตอบ แล้วยกเว้นให้เฉพาะตัวที่คั่นตัวเลข 2 ตัว ตามข้อยกเว้นที่กฎเขียนไว้เอง

เราไม่ได้เชื่อตัวตรวจตัวนี้ทันที เราลองทำให้มันแดงก่อน (แดง = ตัวตรวจบอกไม่ผ่าน · เขียว = บอกผ่าน) ป้อนไฟล์ไทยที่มีขีดยาวเข้าไปต้องได้ไม่ผ่าน ป้อนไฟล์ที่ไม่มีต้องได้ผ่าน ป้อนไฟล์ที่ไม่ใช่ภาษาไทยต้องได้ผลว่าประเมินไม่ได้ ไม่ใช่ผิดกฎ และป้อนไฟล์ที่มีแค่ช่วงปีต้องได้ผ่าน ครบทั้ง 4 ทาง

ตัวตรวจที่ไม่เคยเห็นแดง กับตัวตรวจที่ตายอยู่ ให้ผลหน้าตาเหมือนกันเป๊ะ ดังนั้นก่อนจะเชื่อผลเขียว ต้องเคยเห็นมันแดงมาก่อน

ช่วงที่ 2มันไม่ใช่ปัญหาว่าสกิลไม่ถูกเรียก

คำอธิบายแรกที่ทุกคนคิดถึงคือ สกิลคงไม่ถูกโหลด หรือโมเดลไม่ได้หยิบมันขึ้นมา เราเลยเปิดบันทึกการรันของรอบจริงมาดูทีละบรรทัด

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

อ่าน 2 แถวสุดท้ายคู่กันจะเห็นภาพ โมเดลเรียกสกิล เปิดไฟล์ที่กฎอยู่ แล้วละเมิดกฎนั้นในรอบเดียวกัน

ตรงนี้สำคัญเพราะมันตัดคำอธิบายยอดนิยมทิ้งไปได้หมด ไม่ใช่ติดตั้งผิด ไม่ใช่ทริกเกอร์ไม่ทำงาน ไม่ใช่กฎถูกฝังในไฟล์ที่ไม่มีใครเปิด กฎถูกอ่านจริง แล้วยังแพ้อะไรบางอย่างในไฟล์เดียวกันนั้น

ช่วงที่ 3ต้นเหตุอยู่ในตัวสกิลเอง

เราเลยหันกลับไปนับในไฟล์ของสกิลเองว่ามีเครื่องหมายที่มันห้ามอยู่กี่จุด

ไฟล์ขีดยาวที่พบความยาวไฟล์
ไฟล์หลักของสกิล54 จุด380 บรรทัด
ไฟล์อ้างอิงที่กฎอยู่21 จุด376 บรรทัด
ไฟล์วลีต้องห้าม4 จุด29 บรรทัด

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

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

ตัวอย่างที่ดีของการเปิดเรื่อง: มีเงินใช้แค่เดือนชนเดือน ไม่เคยเหลือเก็บ [ขีดยาว] เคยรู้สึกแบบนี้ไหม

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

บรรทัดนี้เป็นตัวอย่างที่ดีของกฎ อีกข้อหนึ่ง เรื่องวิธีเปิดเรื่อง แต่ตัวมันเองใช้ขีดยาวเป็นบานพับ คือสิ่งที่กฎที่เรากำลังทดสอบห้ามตรงๆ

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

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

ช่วงที่ 4แก้ 4 บรรทัด แล้วผลพลิก

สิ่งที่แก้ไม่ใช่การเขียนกฎให้แข็งขึ้น เราไม่ได้เติมคำว่าห้ามหรือใส่ตัวหนาเพิ่มเลย เราแก้ตัวอย่าง

  1. ตัวอย่างที่ติดป้ายว่าดี 4 บรรทัด เปลี่ยนจากขีดยาวเป็นช่องว่างธรรมดา
  2. ยกกฎขึ้นมาไว้ในไฟล์หลักของสกิลเป็นรายการสั้น ไม่ปล่อยให้อยู่แต่ในไฟล์อ้างอิง
  3. เขียนหมายเหตุกำกับไว้ว่าตัวอย่างจุดไหนตั้งใจสาธิตความผิด จะได้ไม่มีใครมาไล่ลบทีหลัง

แล้วยิงคำสั่งเดิมซ้ำ โจทย์เดิม จำนวนรอบเท่าเดิม ตัวตรวจตัวเดิม

แขนก่อนแก้หลังแก้
เปิดสกิลผ่าน 0 จาก 3ผ่าน 3 จาก 3
ไม่มีสกิลผ่าน 1 จาก 3ผ่าน 1 จาก 3

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

เรารันซ้ำอีกครั้งในวันเดียวกันได้ผ่าน 3 จาก 3 เหมือนเดิม ส่วนแขนควบคุมรอบนั้นได้ 0 จาก 3 ซึ่งบอกว่าแขนเปล่าแกว่งอยู่ในช่วง 0 ถึง 1 ตามธรรมชาติของมัน ไม่ใช่เส้นตายที่ตรึงอยู่กับที่

ช่วงที่ 5เอาไปตรวจสกิลของคุณเอง

คำถามที่ควรถามกับสกิลทุกตัวที่มีกฎแบบค้นคำได้คือ ไฟล์นี้ทำสิ่งที่ตัวเองห้ามอยู่กี่จุด

มันตอบได้จากไฟล์เฉยๆ ไม่ต้องยิงโมเดลสักครั้ง เราเลยเขียนตัวตรวจสั้นๆ ที่ไล่ทั้งคลัง 141 ตัวในไม่กี่วินาที แล้วต่อเข้าสายที่รันอัตโนมัติทุกครั้งที่ซิงก์สกิล ราคาของมันคือศูนย์ และมันจับอาการชนิดนี้ได้ตั้งแต่ก่อนจ่ายค่ายิงโมเดล

ลำดับที่เราแนะนำ จากการเดินผิดมาก่อน

  1. แยกให้ออกก่อนว่าตัวอย่างไหนตั้งใจ ตัวอย่างที่ติดป้ายว่าผิดต้องละเมิดกฎ นั่นคืองานของมัน ที่ต้องแก้คือตัวอย่างที่ติดป้ายว่าดีแล้วละเมิด กับร้อยแก้วของสกิลเองที่เผลอทำ
  2. ทำให้ตัวตรวจแดงก่อนเชื่อผลเขียว ป้อนของที่ต้องถูกปฏิเสธเข้าไปแล้วดูว่ามันปฏิเสธจริงไหม
  3. เทียบกับแขนที่ไม่มีสกิลเสมอ ไม่งั้นคุณจะไม่รู้เลยว่าผลที่ได้มาจากสกิลหรือมาจากโมเดลที่ทำเองได้อยู่แล้ว
  4. แก้ทีละตัวแปร ถ้าแก้ทั้งกฎและตัวอย่างพร้อมกันแล้วผลดีขึ้น คุณจะไม่รู้ว่าอันไหนได้ผล

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

เรื่องนี้เป็นชิ้นหนึ่งของการวัดคลังสกิลทั้งคลัง ถ้าอยากเห็นภาพรวมว่าวัดกันกี่ชั้นและแต่ละชั้นราคาเท่าไร อ่านต่อที่ สกิล 60 ตัวไม่เคยถูกเรียกเลย เราเกือบตัดทิ้ง แล้ววัดก่อน และถ้ายังไม่แน่ใจว่าสกิลต่างจากพรอมต์ยาวๆ ตรงไหน เริ่มที่ skill ไม่ใช่แค่ prompt ที่ยาวขึ้น ส่วนบทความอื่นอยู่ที่ หน้ารวมบทความ

ที่มาและอ้างอิง

ตัวเลขทุกตัวในบทความนี้มาจากการรันจริงบนสกิลของเราเองเมื่อ 13 สิงหาคม 2026 ไม่มีตัวเลขที่ยกมาจากที่อื่น

ติดตาม

รับบทความใหม่และของฟรีก่อนใคร

ทิ้งอีเมลไว้ บทความใหม่และของฟรีเป็นครั้งคราวจะส่งไปให้ ไม่สแปม

ใช้อีเมลเพื่อส่งอัปเดตเท่านั้น

ความคิดเห็น

ร่วมพูดคุย

แบ่งปันความคิดเห็นได้เลย

ชื่อจะแสดงต่อสาธารณะ อีเมลเก็บเป็นความลับ ไม่แสดงที่ไหน

กำลังโหลดความคิดเห็น…