Harness² ของ Google Research — framework โอเพนซอร์สที่ปรับ prompt, tool, memory และ skill รอบ agent ใหม่ทุกงาน โดยไม่แตะ weights ของโมเดล (ย้อนข่าว)
ย้อนข่าว: Google Research ขึ้นโค้ด Harness² บน GitHub เมื่อ 8 ต.ค. 2026 และลงเปเปอร์ใน arXiv เมื่อ 9 ต.ค. แต่เพิ่งเริ่มถูกพูดถึงกันมากช่วงสุดสัปดาห์ที่ผ่านมา ตอนนี้มีมากกว่า 7,500 ดาว เราพลาดข่าวนี้ไปตอนออกจึงนำมาเขียนตอนนี้
ช่วงนี้ทีมที่สร้าง agent เริ่มเห็นตรงกันว่า harness หรือทุกอย่างที่ห่อหุ้มโมเดลไว้ ได้แก่ system prompt, tool, memory, skill และ subagent มีผลต่อคะแนนพอ ๆ กับตัวโมเดลเอง ปัญหาคือ harness มักถูกออกแบบครั้งเดียวโดยคน แล้วถูกใช้กับทุกงานโดยไม่เปลี่ยนเลย Harness² จาก Google Cloud AI Research เสนอว่า harness ควรถูกปรับใหม่ตามงานแต่ละชิ้น โดยให้ agent อีกตัวเป็นคนปรับ และไม่ต้องเทรนโมเดลใหม่
โค้ดใช้สัญญาอนุญาต Apache-2.0 อยู่ที่เวอร์ชัน 0.1.0 ใน README ระบุว่า “ไม่ใช่ผลิตภัณฑ์ที่ Google รองรับอย่างเป็นทางการ”
ทำงานอย่างไร: Propose–Probe–Compose
Harness² แบ่งการปรับออกเป็นสองชั้น
- ชั้นงาน (task-level) เมื่อเจองานใหม่ ระบบจะให้ executor รันด้วย harness เริ่มต้นก่อน จากนั้น harness editor อ่าน trajectory แล้ว เสนอ (propose) การแก้ไขสองแบบ คือแบบทั่วไป (invariant) กับแบบเฉพาะโดเมน แล้ว ลองรัน (probe) แต่ละแบบกับงานชิ้นเดิมจริง ๆ สุดท้าย composer จะดูว่าการรันแต่ละครั้งต่างกันอย่างไร แล้ว ประกอบ (compose) เป็น harness ตัวใหม่ ขั้นตอนนี้ไม่ต้องมีเฉลยของงาน
- ชั้นการปรับ (harnessing-level) หลังจบแต่ละงาน ระบบจะเก็บ harness ที่ถูกเลือกใช้และบทเรียนที่มีหลักฐานรองรับไว้ใน library เพื่อใช้ตั้งต้นในงานถัดไป
ส่วนที่แก้ได้มี 8 อย่าง ได้แก่ system prompt, guardrails, memory, tool guidance, subagents, skills, scripts และ plugins การขยายการปรับทำได้สองแบบ แบบ --mode parallel จะลอง harness หลายตัวพร้อมกัน ส่วนแบบ --mode sequential จะปรับต่อจากรอบก่อนไปเรื่อย ๆ ตัว executor ที่รองรับตอนนี้คือ OpenCode (ค่าเริ่มต้น) และ Codex (--substrate cx)
ผลการทดลอง
ในเปเปอร์ executor คือ Gemini 3.5 Flash และ GLM-5 รันบน OpenCode และ Codex ส่วน harness editor ตั้งต้นคือ Claude Opus 4.8 ผลที่รายงานมีดังนี้
- ปรับรอบเดียว (
k=1) คะแนนเพิ่มสูงสุด 11.5 จุดบน WorkBuddy-Bench, 4.5 จุดบน JobBench และ 11.8 percentage point บน LAB (benchmark งานกฎหมายของ Harvey วัดด้วย partial pass rate) - เมื่อเพิ่มเป็น
k=5Gemini 3.5 Flash บน OpenCode ได้คะแนนเพิ่มจาก 4.5 เป็น 7.5 จุดบน JobBench และจาก 5.1 เป็น 8.4 จุดบน WorkBuddy-Bench - เมื่อใช้โมเดลตัวเดียวกันเป็นทั้ง executor และ editor ทั้ง 5 โมเดลที่ทดสอบ (ตั้งแต่ GLM-5 ถึง Claude Opus 5) ได้คะแนนดีขึ้นทุก benchmark ทีมวิจัยจึงสรุปว่าวิธีนี้ไม่จำเป็นต้องใช้ editor ที่เก่งกว่า executor
- เทียบกับ harness ที่ใช้งานจริงบน WorkBuddy-Bench (Gemini 3.5 Flash บน CodeBuddy, OpenCode, Codex และ Claude Code แบบไม่ปรับอะไร) ไม่มีตัวไหนชนะทุกโดเมน Claude Code ได้ที่หนึ่งใน Code และ Office ส่วน Codex ได้ที่หนึ่งใน Web เมื่อ Harness² เริ่มจาก OpenCode ที่
k=5ได้คะแนนสูงกว่าตัวที่ดีที่สุดของแต่ละโดเมน 4.6–5.8 จุด
ข้อจำกัดที่ทีมวิจัยเขียนไว้เอง
- ต้องจ่าย compute เพิ่ม การปรับแต่ละรอบหมายถึงการรันงานซ้ำหลายครั้งและเปิด session ของ editor เพิ่ม การรันแบบขนานลดเวลารอได้แต่ไม่ลดค่าใช้จ่าย
- ไม่มีเฉลย จึงต้องอาศัยการตัดสินของโมเดล เปเปอร์ยอมรับว่าวิธีนี้ “อ่อนไหวต่อความผันผวนของการรันและ bias ร่วมของโมเดล” ในส่วน failure analysis ยังมีกรณีที่ระบบเลือกผลงานที่ได้ 55 คะแนน แทนตัวที่ได้ 95 คะแนน
- ความปลอดภัยของการรัน README เตือนว่า executor ใช้เน็ตได้ไม่จำกัด และ Codex รันโดย ปิด sandbox ถ้าไม่จำกัด network ก่อน agent อาจค้นเจอ rubric ของ benchmark ที่เปิดเผยอยู่ออนไลน์
มุมมอง AI Curator
ข้อที่ควรสังเกตก่อนตื่นเต้นกับตัวเลขคือ ตัวที่เสนอการแก้ไขกับตัวที่ให้คะแนนเป็นโมเดลเดียวกัน ในเปเปอร์ editor และ selector คือ Claude Opus 4.8 ส่วน deliverable ของ JobBench ก็ตัดสินโดย Claude Opus 4.8 ด้วย เมื่อระบบเลือก harness จากความเห็นของโมเดลตัวหนึ่ง แล้ววัดผลด้วยโมเดลตัวเดิม คะแนนที่เพิ่มขึ้นส่วนหนึ่งอาจมาจากการทำงานให้ตรงกับรสนิยมของ Opus 4.8 มากกว่าทำงานได้ดีขึ้นจริง ผลบน WorkBuddy-Bench ที่ตรวจด้วย test อัตโนมัติจึงน่าเชื่อถือกว่า ใครจะนำไปใช้ควรวัดด้วยเกณฑ์ที่ไม่ได้มาจากโมเดลตระกูลเดียวกับ editor
ในทางปฏิบัติ สิ่งที่มีค่าที่สุดของ Harness² อาจไม่ใช่ตัว loop แต่เป็นการแยก harness ออกเป็น 8 ส่วนอย่างชัดเจน และแยกส่วนที่อยู่ใน context ตลอดเวลา เช่น guardrails และ memory ออกจากส่วนที่ถูกเรียกใช้เมื่อจำเป็น เช่น skill และ plugin ทีมไทยที่ใช้ Claude Code หรือ OpenCode กับงานเฉพาะทาง เช่น เอกสารกฎหมายไทยหรืองานบัญชี นำโครงนี้ไปใช้ได้ทันทีโดยไม่ต้องรัน Harness² เลย คือเก็บ trajectory ของงานที่ล้มเหลว แล้วถามว่าปัญหาควรแก้ที่ส่วนไหนในแปดส่วนนี้ ตัวอย่างใน appendix ที่ agent ทำงานวิจัยไม่ยอมเขียนไฟล์จนหมดเวลา ถูกแก้ด้วย plugin ที่เตือนเมื่อเรียก tool ครบจำนวนหนึ่งแล้วยังไม่มีผลงานออกมา เป็นปัญหาที่หลายทีมเคยเจอ
ส่วนการนำไปใช้จริง ให้คิดเรื่องต้นทุนก่อน การปรับแต่ละงานด้วยการรันซ้ำหลายรอบเหมาะกับงานที่มีมูลค่าสูงและทำซ้ำบ่อย ไม่เหมาะกับ chatbot ทั่วไป และ README ที่ปิด sandbox ของ Codex เป็นค่าเริ่มต้นเป็นเหตุผลที่ไม่ควรรันบนเครื่องที่มีข้อมูลจริงหรือ credential อยู่
แหล่งข่าว
อ่านเพิ่มในหมวด เครื่องมือนักพัฒนา
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