Claude Code เพิ่ม claude plugin eval — วัดว่าปลั๊กอินและสกิลช่วยได้จริงไหมด้วยการรันเทียบกับ "ไม่มีปลั๊กอิน" ทุกเคส แต่ค่าดีฟอลต์ threshold 1.0 จะทำให้ CI แดงทันทีถ้าไม่สมบูรณ์แบบ
ตลอดปีนี้ระบบนิเวศ agent skills กับปลั๊กอินของ Claude Code โตเร็วมาก แต่คำถามพื้นฐานที่สุดข้อหนึ่งยังไม่มีเครื่องมือทางการตอบ: สกิลที่เราเขียนมันช่วยจริง หรือ Claude ทำได้เองอยู่แล้ว? CHANGELOG ของ Claude Code v2.1.269 ที่ปล่อยเมื่อ 11 ก.ย. 2026 เวลา 19:17 UTC (ตีสองกว่าของวันที่ 12 ตามเวลาไทย) ตอบคำถามนั้นด้วยบรรทัดแรกสุดของรุ่น:
Added
claude plugin eval: run a plugin’s eval suite against Claude Code and get scored, reproducible results (JSON + HTML report)
พร้อมกันนั้น Anthropic เปิดหน้าเอกสาร Test plugins with evals ที่ยาวและละเอียดผิดปกติสำหรับฟีเจอร์ใหม่ และสิ่งที่น่าสนใจที่สุดไม่ใช่ตัวคำสั่ง แต่คือ การออกแบบให้ทุกเคสต้องพิสูจน์ตัวเองเทียบกับการไม่มีปลั๊กอินเลย
หัวใจของมัน: รันสองแขน แล้วดูส่วนต่าง
eval suite อยู่ในโฟลเดอร์ evals/ ของปลั๊กอิน แต่ละเคสคือไดเรกทอรีที่มี prompt.md (คำขอแบบที่ผู้ใช้จริงจะพิมพ์ พร้อม frontmatter กำหนด max_turns, timeout_seconds, allowed_tools) กับโฟลเดอร์ graders/ ที่มีไฟล์ละหนึ่งตัวตรวจ ถ้าไม่อยากเขียนเอง claude plugin eval init จะเปิดเซสชันที่อ่านปลั๊กอินของคุณ ถามว่าผลลัพธ์ที่ดีหน้าตาเป็นอย่างไร เสนอพรอมต์ทั้งแบบที่ ควร และ ไม่ควร ทำให้สกิลทำงาน ออกแบบ grader ลองรันหนึ่งรอบ แล้วเขียนไฟล์ให้
เมื่อรัน claude plugin eval . ทุกเคสจะรัน 3 รอบโดยมีปลั๊กอิน (with-arm) และอีก 3 รอบโดยไม่มีปลั๊กอิน (without-arm) รวม 6 รัน ตารางสรุปจะแสดง WITH, W/OUT และ Δ — ตัวอย่างในเอกสารคือเคสเดียวได้ 1.00 ต่อ 0.33 (Δ +0.67) ใช้เวลา 74 วินาที ค่าใช้จ่ายประมาณ $0.41 ตามราคา list price เอกสารเขียนตรง ๆ ว่า “ถ้าเคสได้ 1.0 ทั้งมีและไม่มีปลั๊กอิน ปลั๊กอินก็ไม่ใช่สิ่งที่ทำให้มันผ่าน”
รายละเอียดที่แสดงว่าคนออกแบบคิดมาไกล: grader ประเภท “สกิลถูกเรียกหรือเปล่า” (tool_used ที่ tool: Skill) ถูกตัดออกจากคะแนนของทั้งสองแขนโดยอัตโนมัติ เพราะมันไม่มีทางผ่านได้เลยในแขนที่ไม่มีปลั๊กอิน ถ้านับรวมก็จะดัน without-arm ลงหาศูนย์และทำให้ Δ พองเกินจริง grader แบบนี้จึงแสดงเป็นแค่ป้าย “plugin-fired indicator” ในแขนที่มีปลั๊กอิน
เอกสารยังบอกผลที่พบบ่อยที่สุดตอนรันครั้งแรกไว้ด้วย: Δ ใกล้ศูนย์ และ grader tool_used: Skill ไม่ผ่าน ซึ่งแปลว่า Claude ไม่เลือกสกิลของคุณเมื่อผู้ใช้พูดด้วยภาษาธรรมชาติ ทางแก้คือไปปรับ description ของสกิล — ปัญหาเดียวกับที่เราเขียนถึงตอน Claude Code เพิ่ม /skill-doctor เพียงแต่ตอนนี้วัดออกมาเป็นตัวเลขได้แล้ว
grader 6 แบบ — 4 แบบฟรี และไม่มีโค้ดตรวจเอง
| ประเภท | ตรวจอะไร | เสียเงินไหม |
|---|---|---|
regex | หา pattern ในข้อความตอบสุดท้าย, trace, รายชื่อไฟล์ หรือเนื้อหาไฟล์ | ฟรี |
tool_used | จำนวนครั้งที่เรียก tool (กรองด้วย regex บน input ได้) | ฟรี |
tool_order | tool A ถูกเรียกก่อน tool B | ฟรี |
file_exists | มีไฟล์ที่ตรง glob ถูก สร้าง ระหว่างรัน | ฟรี |
llm | โมเดลผู้ตัดสินโหวต PASS อย่างน้อย 2 ใน 3 ครั้ง | เสีย |
baseline | ผลดีเท่าหรือดีกว่า transcript อ้างอิง | เสีย |
ผู้ตัดสินดีฟอลต์เป็น “โมเดลเล็กที่เร็ว” (--help ระบุว่าเป็น haiku) และเอกสารเตือนเองว่าถ้าเห็น tool_used: Skill ผ่านแต่ Δ ติดลบ ให้สงสัยผู้ตัดสินก่อนสงสัยปลั๊กอิน เพราะโมเดลเล็กอาจตัดสินคำตอบที่ถูกว่าผิดแค่เพราะรูปแบบไม่ตรงรูบริก ให้ลองใหม่ด้วย --judge-model sonnet ข้อจำกัดที่ควรรู้คือ ไม่มี grader แบบเขียนโค้ดเอง ถ้าอยากเช็กว่าเทสต์ผ่าน เอกสารแนะนำให้พรอมต์สั่ง Claude รันเทสต์แล้วเขียนผลลงไฟล์ จากนั้นตรวจไฟล์นั้นแทน
สำหรับปลั๊กอินที่คุยกับ MCP server ไม่ต้องต่อบริการจริง: วางไฟล์ evals/mocks/<server>/<tool>.md แล้วเนื้อหาไฟล์คือสิ่งที่ tool ตอบกลับ ใส่ expect: เพื่อตรวจ input ที่ Claude ส่งมาได้ ถ้าผิดสเปกรันจะถูก abort ด้วยคะแนน 0 ทันที ส่วน mock แบบ type: agent ที่ให้โมเดลเล็กเล่นเป็นเซิร์ฟเวอร์ จะถูกบันทึกคำตอบไว้ให้นำไป replay ใน CI ได้โดยไม่ต้องเรียกโมเดลซ้ำ
การแยกสภาพแวดล้อม และกับดักที่เอกสารเขียนไว้เอง
แต่ละรันได้ home directory, working directory และคอนฟิก Claude Code แบบใช้แล้วทิ้ง รันเป็น claude -p ที่โหลดแค่ปลั๊กอินที่ทดสอบ — ไม่มี CLAUDE.md, ไม่มี MCP ส่วนตัว, ไม่มี memory, ไม่มีปลั๊กอินอื่น และเอเจนต์ อ่านโฟลเดอร์ eval ไม่ได้ จึงเห็นรูบริกของตัวเองไม่ได้ tool ที่เขียนไฟล์หรือรันเชลล์ต้องให้สิทธิ์เองผ่าน --allow-tools และเมื่อให้ Bash ทุกคำสั่งจะรันใน OS-level sandbox — บน Linux ต้องติดตั้ง bubblewrap กับ socat ก่อน ส่วน Windows แบบ native ไม่มี backend ต้องไปรันใน WSL2
กับดักที่ควรอ่านก่อนเอาไปใส่ CI มีสามข้อ:
--thresholdดีฟอลต์คือ 1.0 เคสไหนได้ไม่เต็มคำสั่งจะ exit 1 ทันที ตัวอย่าง CI ในเอกสารจึงตั้ง--threshold 0.8พร้อม--trust-plugin,--json,--no-publish,--max-cost-usd 20และ pin ทั้ง--modelและ--judge-modelเพื่อไม่ให้การเปลี่ยนโมเดลดีฟอลต์ถูกอ่านเป็น regression ของปลั๊กอิน- ชนลิมิตการใช้งานแล้วดูเหมือน regression — ถ้าแพลนหรือ rate limit หมดกลางชุด รันที่เหลือจะได้ประมาณ 0 แต่ผลลัพธ์ ไม่ถูกทำเครื่องหมาย
partialต้องไปดูคอลัมน์NOTESหรือฟิลด์errorใน JSON เอง - รายงาน HTML ถูก publish เป็น artifact ส่วนตัวบน claude.ai โดยดีฟอลต์ ถ้าล็อกอินด้วยแพลนสมัครสมาชิกที่เปิด artifacts ไว้ ต้องใส่
--no-publishถ้าไม่ต้องการ (ถ้าใช้ API key รายงานจะอยู่ในเครื่องเท่านั้น)
ค่าใช้จ่ายโดยประมาณของหนึ่งชุด = จำนวนเคส × จำนวนรัน × 2 แขน บวกการเรียกผู้ตัดสินสามครั้งต่อ grader แบบ llm/baseline ต่อรัน และทุกการเรียกนับเข้าโควตาแพลนหรือบิล API ของคุณ
ไบนารีรู้ก่อน CHANGELOG
เราตรวจไบนารี Claude Code v2.1.268 ที่ติดตั้งบนเครื่องนี้แล้วพบว่า claude plugin eval --help แสดงตัวเลือกครบทุกข้อแล้ว แต่พอสั่งรันจริงจะได้ข้อความ plugin eval` is currently in early access สตริงในไบนารีอธิบายว่าคำสั่งนี้ “early access, enabled per organization” — เปิดรายองค์กรผ่าน feature flag และมีตัวแปรเปิดใช้สำหรับเครื่องที่รับ rollout รายองค์กรไม่ได้ (Bedrock/Vertex/Foundry, LLM gateway, เครื่องที่ปิด telemetry และ CI runner) ซึ่งตัวไบนารีเองสั่งว่าผู้ใช้ต้องขอจากผู้ติดต่อของ Anthropic เท่านั้น
เมื่อดึงแพ็กเกจ @anthropic-ai/claude-code-linux-x64@2.1.269 จาก npm มาตรวจ สตริง early access กับ flag รายองค์กรนั้น หายไปแล้ว เหลือแต่ข้อความ plugin eval` is currently unavailable ซึ่งตรงกับหัวข้อ troubleshooting ในเอกสารที่ว่า Anthropic “ปิดคำสั่งจากฝั่งเซิร์ฟเวอร์” ได้ แปลว่าตั้งแต่ v2.1.269 คำสั่งนี้เปิดให้ทุกคน แต่ยังมีสวิตช์ปิดจากระยะไกลอยู่ รูปแบบเดียวกับ /skill-doctor ที่ลงไบนารีไปก่อนหลายวันแล้วค่อยประกาศ
v2.1.269 ยังมีของอื่นที่นักพัฒนาไทยควรรู้: แก้บั๊ก prompt suggestion หายไปเมื่อพิมพ์ภาษาที่ไม่เว้นวรรคระหว่างคำ ซึ่ง CHANGELOG ระบุชื่อภาษาไทยไว้ด้วย, เพิ่ม /output-style ที่ใช้ผ่าน Remote Control และเซสชัน headless ได้, เพิ่ม CLAUDE_CODE_WORKFLOW_MAX_CONCURRENT_AGENTS (1–256) และปิดช่องโหว่ที่ allow rule แบบ Bash(tee:*) เคยเขียนไฟล์นอก working directory ได้
มุมมอง AI Curator
ฟีเจอร์นี้คือ การยอมรับว่าสกิลเป็นซอฟต์แวร์ และซอฟต์แวร์ต้องมีเทสต์ จนถึงวันนี้วิธีที่คนส่วนใหญ่ “ทดสอบ” สกิลคือพิมพ์ลองสองสามครั้งแล้วดูว่ามันทำงานไหม ซึ่งเป็นวิธีที่หลอกตัวเองได้ง่ายที่สุดกับระบบที่ไม่ deterministic เราเคยเขียนถึง i-have-adhd สกิล 31,000 ดาว ที่พอวัดจริงแล้วผลไม่ได้ตรงกับความนิยม — ตอนนี้ทุกคนมีเครื่องมือทำการวัดแบบนั้นในคำสั่งเดียว
จุดที่ผมคิดว่าสำคัญที่สุดคือค่าดีฟอลต์ที่ บังคับให้มีแขน “ไม่มีปลั๊กอิน” เพราะโมเดลเก่งขึ้นทุกรุ่น สกิลจำนวนมากที่เคยจำเป็นเมื่อหกเดือนก่อนอาจกลายเป็นแค่ภาระคอนเท็กซ์ในวันนี้ Δ ที่เข้าใกล้ศูนย์หลังโมเดลใหม่ออก คือสัญญาณให้ลบสกิลนั้นทิ้ง ไม่ใช่ปรับให้ดีขึ้น ในโลกที่มาร์เก็ตเพลสปลั๊กอินกำลังเต็มไปด้วยของที่ติดดาวเยอะแต่ไม่มีใครวัด ผมคาดว่าอีกไม่นาน “มีรายงาน eval พร้อม Δ” จะกลายเป็นมาตรฐานขั้นต่ำของปลั๊กอินที่น่าเชื่อถือ แบบเดียวกับที่ badge CI เขียวเคยเป็นบน GitHub
แต่ต้องพูดถึงสิ่งที่ยังค้างด้วย: ตอนนี้มี รูปแบบ eval สองแบบในบ้านเดียวกัน — evals/evals.json ของปลั๊กอิน skill-creator กับรูปแบบ prompt.md + graders/ ของ plugin eval ซึ่งเอกสารยอมรับว่า “แยกกัน” คนที่ลงแรงเขียนแบบแรกไปแล้วต้องย้ายเอง และการที่ไม่มี grader แบบโค้ดทำให้การตรวจผลลัพธ์ที่ซับซ้อนต้องอ้อมผ่านไฟล์หรือพึ่งโมเดลผู้ตัดสิน ซึ่งเอกสารเองก็เตือนว่ามันแกว่ง
สำหรับทีมไทยที่ทำปลั๊กอินภายในองค์กร ข้อแนะนำเชิงปฏิบัติคือเริ่มจาก grader ฟรีสี่แบบก่อน ใช้ --ablation none ตอนปรับ grader เพื่อลดต้นทุนครึ่งหนึ่ง แล้วค่อยรันสองแขนเต็มก่อน merge และถ้าสกิลของคุณต้องรับพรอมต์ภาษาไทย ให้เขียนเคสเป็นภาษาไทยด้วย เพราะคำถามว่า “Claude เลือกสกิลนี้ไหมเมื่อผู้ใช้พูดแบบนี้” ขึ้นกับภาษาที่ผู้ใช้พูดจริง ไม่ใช่ภาษาที่เราเขียน description
แหล่งข่าว
อ่านเพิ่มในหมวด AI Skills
Anthropic แนะ “ยุบ subagent กลับเข้า agent loop เดียว” พร้อมปล่อย single-agent-loop-kit เป็น skill ของ Claude Code ที่ช่วย audit ระบบ multi-agent แล้วพับทีละตัวโดยวัดด้วย eval ก่อน-หลัง
บทความ 22 ต.ค. จากทีม Applied AI ของ Anthropic บอกว่า agent ตัวเดียวที่โหลด skill และ tool เมื่อจำเป็น มักให้คุณภาพดีกว่า ถูกกว่า และเร็วกว่าการแตก subagent ตามผังองค์กร ลูกค้ารายหนึ่งเร็วขึ้นราว 2 เท่า พร้อมปล่อย single-agent-loop-kit (Apache-2.0) เป็น skill ที่ audit ระบบเดิมแล้วพับ subagent ทีละตัว และเก็บไว้เฉพาะตัวที่ eval บอกว่ายังจำเป็น
MCP TypeScript SDK 2.4.0 เป็น SDK ทางการตัวแรกที่ปล่อย Skills over MCP (SEP-2640) ใน release จริง — loadSkills() เสิร์ฟทั้งโฟลเดอร์ SKILL.md, SkillsClient ตรวจ digest ทุกไฟล์ ส่วน Python/C# merge แล้วแต่ยังไม่ออก release
23 ต.ค. 2026 MCP TypeScript SDK 2.4.0 ปล่อยการรองรับ Skills extension (SEP-2640) ทั้งฝั่ง server และ client เป็น SDK อ้างอิงตัวแรกที่เอาฟีเจอร์นี้ขึ้น release จริง หลังสเปกขึ้นสถานะ Final มาตั้งแต่ 13 ก.ย. ทำงานได้ทั้งโปรโตคอล 2025-11-25 และ 2026-07-28 แต่ attach() ยังเป็น experimental
Anthropic ยก Agent Skills (มาตรฐาน SKILL.md) ให้ Agentic AI Foundation ใต้ Linux Foundation ต่อจาก MCP — 70+ แพลตฟอร์มรองรับแล้ว ทั้ง ChatGPT, Cursor, Copilot และ VS Code
เมื่อ 22 ต.ค. 2026 Anthropic มอบมาตรฐาน Agent Skills ให้ Agentic AI Foundation (AAIF) ใต้ Linux Foundation พร้อมชื่อ โลโก้ GitHub org และโดเมน agentskills.io มาตรฐานจะมี Technical Steering Committee จากหลายบริษัทดูแล และมี maintainer จาก Anthropic, Google, OpenAI ที่ทำงานในนามบุคคล roadmap แรกที่เสนอคือ versioned release, กระบวนการ proposal และแนวทาง security สำหรับคนเขียนและติดตั้ง skill