HarnessTax จาก Berkeley วัด 21 คู่ model–harness แล้วพบว่า harness แทบไม่ขยับความสำเร็จ แต่ขยับค่าใช้จ่ายได้ถึง 5 เท่า — และโมเดล Claude อาจไม่ต้องใช้ Claude Code
16 ก.ย. 2026 ทีมวิจัยจาก UC Berkeley Sky Lab — Melissa Z. Pan, Shuo Yang, Negar Arabzadeh, Wei-Lin Chiang (Arena), Ion Stoica และ Matei Zaharia — เผยแพร่งานชื่อ HarnessTax ที่ตั้งคำถามซึ่งนักพัฒนาทุกคนน่าจะเคยคิดแต่ไม่มีใครวัดจริงจัง: harness หรือตัวเปลือกที่ห่อโมเดลอยู่ (Claude Code, Codex CLI, Cursor ฯลฯ) มันให้อะไรเราเพิ่มขึ้นจริง ๆ และเราจ่ายเท่าไหร่ให้มัน
คำตอบสั้น ๆ ที่ทีมสรุปเองคือประโยคนี้ในบทความ: “It turns out your Claude models may not need Claude Code…” — โมเดลเดียวกันทำงานสำเร็จในอัตราที่ใกล้เคียงกันมากไม่ว่าจะรันบน harness ไหน แต่ราคาที่จ่ายต่างกันได้ถึง 5 เท่า ส่วนต่างนั้นคือสิ่งที่ทีมเรียกว่า harness tax — ภาษีที่คุณจ่ายโดยไม่รู้ตัวเวลารับ harness ที่มากับโมเดลโดยไม่เคยเทียบกับตัวอื่น
วิธีวัด และขอบเขตที่ต้องอ่านให้ครบ
การทดลองจับคู่ 7 โมเดล × 3 harness = 21 คู่ โดยรันบนชุดงานเดียวกัน คือ 30 งานที่สุ่มมา จากแต่ละเบนช์มาร์ก (SWE-bench Lite และ Terminal-Bench 2.0) คู่ละ 3 รอบต่องาน เพื่อจับความแปรปรวนระหว่างครั้ง
- โมเดล 7 ตัว: Claude Fable 5, Claude Opus 4.8, Claude Sonnet 4.6, Claude Haiku 4.5, GPT-5.6 Sol, GPT-5.6 Luna และ Kimi K3 ซึ่งเป็นโมเดล open-weight ตัวเดียวในชุด (เรียกผ่าน Fireworks AI)
- harness 3 ตัว: Claude Code 2.1.224, Codex 0.146.0 และ Pi 0.85.1
- ทุก harness ตั้งค่าตาม default ของตัวเอง เลือกโหมด high effort และจำกัดที่ 100 agent turns ต่อครั้ง
- ค่าใช้จ่ายคิดจาก ราคา direct API ตายตัว ณ วันที่ 1 ก.ย. 2026 ใช้ราคาชุดเดียวกันกับโมเดลเดียวกันทุก harness
- ช่วงความเชื่อมั่น 95% มาจาก bootstrap 10,000 รอบ
- เฉพาะ SWE-bench Lite: ตัดเน็ตออกจาก container ทั้งหมด ปิด web tool ของ Claude Code และ Codex และปฏิเสธ hosted tool declaration ที่ระดับ API request
จุดที่ต้องระวังและทีมเขียนไว้เองคือ 30 งานต่อเบนช์มาร์กเป็นตัวอย่างที่เล็กมาก และ เบนช์มาร์กทั้งสองตัวเป็น open-source ที่โมเดลอาจเคยเห็นตอนเทรน — ผลอาจต่างออกไปบน workload จริง นอกจากนี้ Pi ต้องติดตั้งแพ็กเกจเพิ่ม 2 ตัวเพื่อรองรับ subscription key และคุมจำนวน turn
Finding 1: harness ขยับ “ราคา” มากกว่าขยับ “ความถูกต้อง”
ตัวเลขบน SWE-bench Lite พูดแทนได้ชัดเจน:
| โมเดล | Claude Code | Codex | Pi |
|---|---|---|---|
| Claude Fable 5 | $1.329 / 97.8% | $0.891 / 96.7% | $0.666 / 96.7% |
| Claude Opus 4.8 | $0.976 / 86.7% | $0.694 / 88.9% | $0.473 / 82.2% |
| Claude Sonnet 4.6 | $0.669 / 66.7% | $0.745 / 68.9% | $0.680 / 64.4% |
| Claude Haiku 4.5 | $0.426 / 52.2% | $0.392 / 57.8% | $0.374 / 60.0% |
| GPT-5.6 Sol | $1.540 / 77.8% | $0.561 / 73.3% | $0.441 / 74.4% |
| GPT-5.6 Luna | $0.153 / 55.6% | $0.036 / 55.6% | $0.030 / 53.3% |
| Kimi K3 | $0.784 / 76.7% | $0.845 / 74.4% | $0.455 / 72.2% |
Fable 5 แก้งานสำเร็จ 97.8% บน Claude Code, 96.7% บน Codex และ 96.7% บน Pi — ห่างกันไม่ถึง 1.2 จุด แต่ Claude Code แพงกว่า Pi ราวสองเท่า ($1.33 เทียบกับ $0.67) ส่วนช่องว่างที่กว้างที่สุดคือ GPT-5.6 Luna: $0.153 บน Claude Code เทียบกับ $0.030 บน Pi หรือ ราว 5 เท่า ที่อัตราสำเร็จต่างกัน 2.3 จุด
เมื่อคิดเป็น geometric mean ของอัตราส่วนค่าใช้จ่ายข้ามโมเดลที่ใช้ร่วมกัน ทีมรายงานว่า Claude Code แพงกว่า Pi ราว 2.0 เท่า และแพงกว่า Codex ราว 1.6 เท่า บน SWE-bench Lite ส่วนบน Terminal-Bench 2.0 แพงกว่า Pi ราว 1.5 เท่า ขณะที่ผลของ harness ต่ออัตราสำเร็จเฉลี่ยอยู่ในกรอบ ±2% บน SWE-bench Lite และราว ±5% บน Terminal-Bench 2.0
มีรายละเอียดทางสถิติที่อ่านจากข้อมูลดิบของโปรเจกต์แล้วน่าสนใจกว่าพาดหัว: ในบรรดา 14 คู่เปรียบเทียบอัตราสำเร็จบน SWE-bench Lite (Claude Code และ Codex เทียบกับ Pi) มีเพียงคู่เดียวที่รอดการแก้ค่า Holm คือ Opus 4.8 บน Codex สูงกว่าบน Pi 6.7 จุด (p_holm = 0.042) ที่เหลือทั้งหมดช่วงความเชื่อมั่นคร่อมศูนย์ ขณะที่ป้ายกำกับหลักฐานของคู่ส่วนใหญ่กลับเขียนว่า “cost survives Holm” — พูดอีกแบบคือ ส่วนต่างราคาเป็นของจริงทางสถิติ ส่วนต่างความสำเร็จส่วนใหญ่เป็นสัญญาณรบกวน
Finding 2: harness เรียบ ๆ ก็ขึ้น Pareto frontier ได้ และภาษีเริ่มเก็บตั้งแต่ call แรก
Pi เป็น harness เปิด MIT จาก earendil-works/pi ที่นิยามตัวเองว่า “a minimal terminal coding harness” มันขึ้นถึง Pareto frontier ของทั้งสองเบนช์มาร์กโดยมี tool แค่ 4 ตัว: read, write, edit, bash ไม่มี sub-agent ไม่มี plan mode
ทีมไปวัดต่อว่าเงินหายไปตรงไหน แล้วเจอว่ามันเริ่มตั้งแต่ request แรก ก่อน agent จะทำงานอะไรเลย:
| harness | จำนวน tool | ขนาด tool schema | ขนาด instruction | context ของ call แรก |
|---|---|---|---|---|
| Pi 0.85.1 | 4 | 2,873 ตัวอักษร | 2,547 ตัวอักษร | 1,972 โทเคน |
| Codex 0.146.0 | 7.4 | 18,114 ตัวอักษร | 23,502 ตัวอักษร | 11,308 โทเคน |
| Claude Code 2.1.224 | 23 | 76,995 ตัวอักษร | 13,465 ตัวอักษร | 27,011 โทเคน |
context ของ call แรกของ Claude Code หนักกว่า Pi ราว 13.7 เท่า (บทความเขียนอย่างระวังว่า “over 10×”) โดยมาจาก tool schema ที่ใหญ่กว่า 27 เท่าเป็นหลัก
ที่สำคัญคือมันไม่ใช่เรื่องจำนวน turn: บน SWE-bench Lite กับ Fable 5 ทั้ง Pi และ Claude Code ใช้จำนวน turn เฉลี่ยพอกัน (15.4 เทียบกับ 15.3 turn ต่อครั้ง) แต่ Claude Code จ่ายราวสองเท่าเพื่อแลกอัตราสำเร็จที่สูงขึ้น 1.1 จุด — คือจ่ายต่อ turn แพงกว่า ไม่ใช่วนมากกว่า
Finding 3: โมเดลไม่จำเป็นต้องเก่งที่สุดบน harness ของค่ายตัวเอง
ข้อสรุปที่ขัดสัญชาตญาณที่สุดอยู่ตรงนี้ ผู้ผลิตบางรายบอกเองว่า optimize โมเดลมาเพื่อ environment ของตัวเอง (บทความยกตัวอย่าง OpenAI ที่อธิบาย GPT-5-Codex ว่า optimize มาสำหรับ Codex) แต่เมื่อดูโมเดลของ Anthropic และ OpenAI ทั้ง 6 ตัวข้ามสองเบนช์มาร์ก 9 ใน 12 การเปรียบเทียบ อัตราสำเร็จสูงสุดที่วัดได้เกิดขึ้นบน harness ที่ไม่ใช่ของผู้ผลิตโมเดลนั้น
ตัวอย่างที่ชัด:
- Sonnet 4.6 บน SWE-bench Lite ทำได้ 68.9% บน Codex เทียบกับ 66.7% บน Claude Code ที่ราคาพอกัน
- GPT-5.6 Sol บน Terminal-Bench 2.0 ทำได้ 83.3% บน Pi เทียบกับ 78.9% บน Codex ที่ราคาราวครึ่งเดียว ($0.42 เทียบกับ $0.76) และเทียบกับ 71.1% บน Claude Code ที่ $1.35
- Haiku 4.5 บนทั้งสองเบนช์มาร์กทำคะแนนดีที่สุดบน Pi (60.0% และ 47.8%) ซึ่งสูงกว่าบน Claude Code อย่างเห็นได้ (52.2% และ 41.1%)
ย้ำอีกครั้งว่าส่วนต่างเหล่านี้ส่วนใหญ่ยังไม่ผ่านเกณฑ์นัยสำคัญหลังแก้ค่า Holm ที่ขนาดตัวอย่าง 30 งาน — สิ่งที่ข้อมูลรองรับหนักแน่นคือ “ไม่มีหลักฐานว่า harness ของค่ายตัวเองดีกว่า” ไม่ใช่ “harness ของค่ายอื่นดีกว่า”
มุมมอง AI Curator
งานนี้มีค่ามากกว่าตัวเลข เพราะมันเปลี่ยนคำถามที่เราถามผิดมานาน ตลอดปีที่ผ่านมาการเลือก coding agent ถูกพูดราวกับเป็นการเลือกโมเดล แต่จริง ๆ เราเลือกสองอย่างพร้อมกันเสมอ และมีเพียงอย่างเดียวที่ถูกเบนช์มาร์ก HarnessTax คือความพยายามแรกที่จับตัวแปรที่สองมาวัดอย่างเป็นระบบ
สิ่งที่ผมคิดว่าสำคัญที่สุดสำหรับนักพัฒนาไทยคือ มิติต้นทุน ไม่ใช่มิติคะแนน ทีมไทยจำนวนมากยังจ่าย coding agent ด้วยงบที่คิดเป็นเงินบาทแล้วเจ็บกว่าทีมในซานฟรานซิสโกหลายเท่า ส่วนต่าง 2 เท่าบน SWE-bench Lite ที่ดูเหมือนเศษเงินในบทความ ($1.33 เทียบกับ $0.67 ต่อ task) คือส่วนต่างที่คูณด้วยจำนวน task ต่อวันแล้วกลายเป็นหลักหมื่นบาทต่อเดือนได้ง่าย ๆ และงานนี้บอกว่าคุณอาจจ่ายมันไปโดยได้คุณภาพเท่าเดิม — ข้อสรุปที่ใช้งานได้ทันทีคือ ก่อนจะอัปเกรดโมเดลเพื่อไล่คะแนน ลองย้าย harness ก่อน มันฟรีและอาจให้ผลด้านต้นทุนมากกว่า
แต่ต้องอ่านงานนี้ให้ตรงกับที่มันบอกจริง ๆ ด้วย จุดที่ผมคิดว่าถูกอ่านข้ามมากที่สุดคือ SWE-bench Lite และ Terminal-Bench 2.0 ไม่ใช่งานที่คุณทำอยู่ ทั้งคู่เป็น task ที่มีขอบเขตชัด มีเกณฑ์ตัดสินอัตโนมัติ และจบภายใน session เดียว ฟีเจอร์ที่ Claude Code มีแล้ว Pi ไม่มี — sub-agent, plan mode, todo, MCP, ระบบ permission — แทบไม่ได้ถูกใช้เลยในงานลักษณะนี้ ยิ่งไปกว่านั้นการทดลองยัง ปิด web tool และตัดเน็ตออกทั้งหมด บน SWE-bench Lite ซึ่งเท่ากับถอดเครื่องมือส่วนหนึ่งที่ harness ใหญ่ใช้แลกกับ context ที่หนักกว่าออกไปด้วย การสรุปจากงานนี้ว่า “scaffolding ไม่มีประโยชน์” จึงเป็นการอ่านเกินข้อมูล สิ่งที่ข้อมูลบอกคือ “บนงานประเภทนี้ scaffolding ไม่คุ้มราคาที่จ่าย” ซึ่งเป็นคนละเรื่อง — และทีมเองก็เขียนไว้ว่าปัญหาที่ยากขึ้นจนถึงขอบความสามารถของโมเดลอาจยังต้องการ harness ที่ให้โครงการสำรวจ
ประเด็นที่สองที่ควรพูดตรง ๆ คือ เรื่อง permission ถ้าคุณอ่านงานนี้แล้วจะย้ายไป Pi ในงานจริง README ของ Pi เขียนไว้เองว่ามัน ไม่มี ระบบ permission สำหรับจำกัดการเข้าถึงไฟล์ โปรเซส เน็ตเวิร์ก หรือ credential และรันด้วยสิทธิ์ของผู้ใช้ที่เรียกมัน — แนะนำให้ containerize เอง นั่นแปลว่า “harness tax” ส่วนหนึ่งที่วัดได้ในงานนี้คือราคาของ sandbox และ guardrail ที่คุณจะต้องไปสร้างเองถ้าย้ายออก ในเบนช์มาร์กที่รันใน container ที่ตัดเน็ตอยู่แล้ว ต้นทุนนั้นมองไม่เห็น แต่ใน repo ของลูกค้ามันเห็นแน่นอน โดยเฉพาะเมื่อโยงกับข่าวเมื่อเช้านี้เรื่อง eval ของ coding agent ที่ผ่านเพราะ sandbox รั่ว — ชุดเครื่องมือที่เรียบกว่าไม่ได้แปลว่าปลอดภัยกว่าโดยอัตโนมัติ
สุดท้าย มีเรื่องที่สะท้อนภูมิทัศน์ของวงการ: Kimi K3 ซึ่งเป็นโมเดล open-weight ตัวเดียวในชุด อยู่ใกล้ Pareto frontier ทั้งสองเบนช์มาร์ก และบน Pi ทำได้ 72.2% ที่ $0.455 บน SWE-bench Lite เทียบกับ Opus 4.8 บน Claude Code ที่ 86.7% ที่ $0.976 ช่องว่างยังมี แต่เมื่อบวกกับข้อสรุปว่า harness ที่เปิดและเรียบก็แข่งได้ ภาพที่ออกมาคือ สแต็ก coding agent ที่เปิดทั้งสองชั้น — โมเดลเปิด + harness เปิด — ไม่ใช่ของเล่นอีกต่อไปแล้ว สำหรับทีมในไทยที่มีข้อจำกัดเรื่องข้อมูลออกนอกประเทศหรืองบ API นี่คือหลักฐานเชิงปริมาณชิ้นแรกที่พอจะเอาไปวางบนโต๊ะประชุมได้จริง
ทีมบอกว่าจะปล่อย profiling traces ทั้งหมดต่อสาธารณะ ซึ่งเป็นสิ่งที่ควรรอ เพราะเมื่อ trace ออกมา ใครก็ตามจะรันซ้ำบน workload ของตัวเองได้ — และนั่นแหละคือการวัดที่ตอบคำถามของคุณจริง ๆ ไม่ใช่ 30 task ที่สุ่มมาจาก benchmark ที่โมเดลอาจเคยเห็นแล้ว
แหล่งข่าว
- HarnessTax: How Much Does the Harness Matter for Coding Agents? — Pan, Yang, Arabzadeh, Chiang, Stoica, Zaharia (UC Berkeley Sky Lab / Arena), 16 ก.ย. 2026
- earendil-works/pi — Pi Agent Harness (MIT)
- The Anatomy of Harness Engineering: How to Evaluate, Iterate, and Guard AI Coding Agents — Google Developers Blog
- Terminal-Bench: Benchmarking Agents on Hard, Realistic Tasks in Command Line Interfaces — arXiv:2601.11868
อ่านเพิ่มในหมวด เครื่องมือนักพัฒนา
Betelgeuse รัน Qwen3.8 Flash Next ขนาด 68GB บน RTX 3060 กับแรม 16GB ส่วน Basalt วัดให้เห็นว่าเอนจินที่เร่งด้วยแฟล็กลัดทำให้โมเดลลืมของ
Betelgeuse ฟอร์ก llama.cpp ที่เปิดเมื่อ 31 ต.ค. ดึง expert จาก NVMe เข้า VRAM ตามต้องการ อ้าง 22 tok/s แบบไม่ทิ้ง expert แต่ README เตือนเองว่ายังทดลองและตัวเลขมาจากคนละรอบ วันเดียวกันผู้พัฒนา Basalt เผยผลวัดว่าแฟล็กเร่งความเร็วทำคุณภาพ Q8 ตกไปใกล้ Q2
กฎห้ามโคลนเกมของ Claude Code เริ่มกระทบงานจริง บริษัทรับทำเกมกระดานร้องงานลูกค้าหยุด แต่รายงานหลายชิ้นปนกับตัวกรองไซเบอร์คนละเรื่อง
ต่อจากที่เราพบกฎนี้ในไบนารี Claude Code ผู้ใช้เริ่มรายงานว่างานเชิงพาณิชย์ถูกปฏิเสธ และ Tom's Hardware กับ Mashable หยิบไปรายงาน แต่เมื่อไล่ issue ที่อ้างถึง พบว่าหลายรายการเกิดก่อนกฎจะมา จึงน่าจะเป็นตัวกรองด้านไซเบอร์ ส่วน Anthropic ยังไม่ชี้แจง
Claude Code ส่ง transcript ของ background agent ให้โมเดลทุก ~30 วินาทีเพื่อเขียนสถานะ 3–5 คำ ผู้วัดรายงานกินราว 16% และยังปิดแบบทางการไม่ได้
รายงานอิสระพบว่าฟีเจอร์ agent_summary ของ Claude Code ส่ง transcript เต็มของ background agent ไปถามสถานะทุก ~30 วินาที คิดเป็น 16.4% ของค่าใช้จ่ายในระบบของผู้วัด Issue เปิดมาตั้งแต่ ส.ค. ยังไม่มีสวิตช์ปิดที่รองรับ เราตรวจพบโค้ดนี้ใน 2.1.314 และพบกฎใหม่เรื่องเกมที่ไม่อยู่ใน changelog