Knowledge Hub

Harness²: ปรับ Harness รอบโมเดลให้ดีขึ้นแบบวนซ้ำ

เรียนรู้วิธีปรับ harness (prompt, เครื่องมือ, memory, skills) รอบโมเดลที่คงที่ ด้วย Propose–Probe–Compose ระดับงานและคลังบทเรียนข้ามงาน พร้อมวิธีรันและทดสอบผล

AI และเทคโนโลยีอ่าน 12 นาทีเผยแพร่ 20 ตุลาคม 2569

🎯 แก่นของเรื่อง

แก่นความคิด: ไม่ต้องแตะน้ำหนักโมเดล แต่ปรับ "สิ่งที่ห่อรอบโมเดล" (harness) ให้เหมาะกับงานตรงหน้า แล้วเก็บบทเรียนที่ได้ไว้ใช้กับงานถัดไป

ทำไมถึงได้ผล (กลไก):

  1. Harness กำหนดว่าโมเดลเห็นอะไร ใช้เครื่องมืออะไร และจำอะไรได้ ดังนั้นการแก้ส่วนนี้เปลี่ยนพฤติกรรมโดยไม่ต้องฝึกโมเดลใหม่
  2. ระบบรันงานเดิมด้วย harness ฐานหลายรอบ (k รอบ) แล้วเทียบการรันแต่ละครั้งกัน จึงเห็นว่าจุดไหนพลาดโดยไม่ต้องมีเฉลย
  3. ข้อเสนอที่ผ่านการทดลองจริง (probe) ถูกรวม (compose) เป็น harness ใหม่ แล้วเก็บเป็นบทเรียนในคลังต่อโดเมน

20% ที่สำคัญที่สุด:

ต้องเข้าใจก่อน รอได้
ลูป Propose–Probe–Compose รายละเอียดของแต่ละ benchmark
พารามิเตอร์ k, --mode การตั้งค่า Codex เทียบ OpenCode
ความเสี่ยงเรื่องเครือข่ายตอนประเมิน การทำ split ของงาน
8 ส่วนประกอบของ harness ที่แก้ได้ วิธีอ่านโครง runs/ ละเอียด

📈 ช่วยให้ดีขึ้นอย่างไร

ตัวเลขด้านล่างเป็นค่าสูงสุดที่ README รายงาน (อ่านจาก repo วันที่ 2026-10-20) ไม่ใช่ค่าเฉลี่ย และ README ไม่ได้ให้ตัวเลขต่อโมเดลต่อโดเมนในส่วนที่อ่านได้

สถานการณ์ ถ้าไม่ใช้ ถ้าใช้ Harness² หนึ่งขั้น วัดอย่างไร หลักฐาน
งานออฟฟิศ เว็บ โค้ด คะแนนฐานของ harness เดิม เพิ่มสูงสุด 11.5 คะแนน คะแนน WorkBuddy-Bench อ่านจาก repo (2026-10-20)
งานวิชาชีพ คะแนนฐาน เพิ่มสูงสุด 4.5 คะแนน คะแนน JobBench อ่านจาก repo (2026-10-20)
งานกฎหมาย partial pass rate ฐาน เพิ่มสูงสุด 11.8 จุดเปอร์เซ็นต์ partial pass rate บน LAB อ่านจาก repo (2026-10-20)
งบ task-level มากขึ้น ผลจากงบน้อย README ระบุว่าได้กำไรเพิ่ม เทียบ k ต่างกัน อ่านจาก repo (ไม่มีตัวเลขที่อ่านได้)
ต้นทุนและเวลา รันครั้งเดียว ต้องรันฐานซ้ำ k รอบ จึงเสียโทเคนและ API มากขึ้น ค่า API ต่องาน ตีความ
ความเสถียรข้ามโดเมน - ยังไม่รู้ว่าใช้ได้กับงานนอก 3 benchmark ทดลองกับงานตัวเอง ยังไม่ทดสอบ

ผลวัดบอกว่า "สูงสุดถึง" เท่านั้น ยังไม่มีข้อมูลที่อ่านได้ว่าบางกรณีดีขึ้นน้อยหรือแย่ลง ให้ถือว่าผลเฉลี่ยของคุณอาจต่ำกว่านี้

🧩 Harness คืออะไร

Harness คือระบบทั้งหมดที่ห่อรอบโมเดล ส่วน harnessing คือการปรับระบบนั้นโดยน้ำหนักโมเดลคงเดิม

ส่วนประกอบ หน้าที่ ตัวอย่างการปรับ (ตีความ)
System prompt กำหนดบทบาทและวิธีทำงาน เพิ่มขั้นตอนตรวจงานก่อนส่ง
Guardrails จำกัดสิ่งที่ห้ามทำ ห้ามแก้ไฟล์นอกโฟลเดอร์งาน
Memory สิ่งที่จำข้ามขั้นตอน บันทึกข้อสรุปเอกสารที่อ่านแล้ว
Tool guidance คำแนะนำการใช้เครื่องมือ บอกว่าเมื่อไรควรค้นก่อนเขียน
Subagents ตัวช่วยย่อย แยกตัวตรวจทานออกจากตัวเขียน
Skills ชุดความสามารถที่เรียกใช้ซ้ำ สกิลสรุปสัญญา
Scripts สคริปต์ที่เรียกใช้ได้ สคริปต์แปลงไฟล์ PDF
Plugins ส่วนเสริมภายนอก ปลั๊กอินอ่านสเปรดชีต

คอลัมน์ตัวอย่างเป็นการตีความของเราเพื่ออธิบาย ไม่ได้อ่านจาก repo

🔁 สองระดับของการวนซ้ำ

flowchart TD
    A[งานใหม่ในโดเมน] --> B[รัน harness ฐาน k ครั้ง]
    B --> C[Propose: เสนอแนวปรับ]
    C --> D[Probe: ทดลองแนวที่เสนอ]
    D --> E[Compose: รวมเป็น harness ใหม่]
    E --> F[ใช้ harness ที่รวมแล้วทำงานจริง]
    F --> G[Reflection: เก็บ harness และบทเรียนลงคลัง]
    G --> H[งานถัดไปอ่านคลังก่อน]
    H --> A
ระดับ ทำอะไร ใช้ข้อมูลอะไร หลักฐาน
Task-level recursion ปรับ harness ของงานปัจจุบันด้วย PPC การเปรียบเทียบการรันหลายครั้ง ไม่ต้องมีเฉลย อ่านจาก repo (2026-10-20)
Harnessing-level recursion สะสม harness ที่นำมาใช้และบทเรียนไว้ช่วยงานอนาคต คลังต่อโดเมน อ่านจาก repo (2026-10-20)

README ไม่ได้อธิบายแต่ละขั้นย่อยของ PPC ละเอียด รายละเอียดข้างต้นจึงจำกัดเท่าที่เขียนไว้ และ repo ไม่ได้นิยามคำว่า "improvement harness" แยกต่างหากในเอกสารที่อ่าน ที่นี่ตีความว่าคือ harness ที่ปรับแล้วร่วมกับคลังบทเรียน

โหมดการวนซ้ำ

โหมด วิธีทำงาน เหมาะเมื่อ
parallel เสนอผู้สมัครทั่วไป k และเฉพาะโดเมน k แล้วรวมอิสระ k ครั้ง อยากสำรวจทางเลือกกว้าง
sequential ทำ PPC k ขั้นต่อกัน ส่ง harness และหลักฐานที่สะสมไปขั้นถัดไป อยากขัดเกลาเชิงลึก

ทั้งสองโหมดเริ่มจากการรัน harness ฐาน k ครั้ง --k 1 คือ PPC หนึ่งขั้น ตามด้วย reflection หลังนำมาใช้

กฎของคลัง: งานในโดเมนเดียวกันรันตามลำดับและอ่านเฉพาะรายการก่อนหน้า คลังแยกตาม benchmark, executor, mode, งบ และ seed

🛠️ วิธีรัน

ลองก่อนโดยไม่ต้องมีเครดิต (อ่านจาก repo):

uv venv --python 3.12 .venv
source .venv/bin/activate
uv pip install -e '.[render]'
harness2-demo --output runs/demo --k 2

รัน benchmark จริง (ตัวอย่าง LAB):

cp .env.example .env   # ตั้งค่า Vertex AI project และ model ID
gcloud auth application-default login
harness2-setup lab
harness2-check --bench lab
harness2 --bench lab --k 1 --mode parallel \
  --only-domains antitrust-competition --max-tasks 1
harness2-judge --bench lab --k 1 --mode parallel
harness2-report --bench lab --k 1 --mode parallel
ต้องมี รายละเอียด
ระบบ Linux, Python 3.12, uv
รันโมเดลจริง Node.js 20+, Google Cloud CLI, บัญชี Vertex AI
LAB Pandoc, Poppler
WorkBuddy-Bench Docker
Benchmark อื่น harness2-setup jb (JobBench), harness2-setup wb (WorkBuddy-Bench)

ตัวเลือกที่ควรรู้

ตัวเลือก ความหมาย
--bench เลือก benchmark
--k, --mode งบการวนซ้ำและโหมด
--substrate cx ใช้ Codex แทน OpenCode (ค่าเริ่มต้น)
--workers N รัน N โดเมนพร้อมกัน งานในโดเมนยังเรียงลำดับ
--seed N สับลำดับงานให้ทำซ้ำได้ ไม่ควบคุมการสุ่มของโมเดล
--only-domains จำกัดเฉพาะโดเมนที่ระบุ
--max-tasks จำกัดงานต่อโดเมน ไม่ใช่รวมทั้งหมด
--dry-run ดูงานที่จะถูกเลือกโดยไม่เรียกโมเดล
--bases (ใน harness2-judge) ให้คะแนนการรันฐานด้วย

ผลลัพธ์

  • ที่เก็บ: runs/lab/, runs/jb/, runs/wb/<subset>/ เปลี่ยนด้วย HARNESS2_RUNS_DIR
  • มี: สรุปงาน, artifacts ของการรัน, harness ที่นำมาใช้, บันทึก reflection, ผลตรวจ
  • base_judged.json เก็บคะแนนฐานเมื่อใช้ --bases ส่วน harness2-report รายงานเฉพาะ harness ที่ปรับแล้ว
  • การประเมินที่ล้มเหลวจะไม่มีคะแนน ไม่ถูกนับเป็น 0
  • รันคำสั่งเดิมซ้ำจะต่อจากเดิม เปลี่ยนโมเดลหรือชุดงานต้องใช้ HARNESS2_RUNS_DIR ใหม่

🚀 ลองใช้

ตัวอย่างประกอบ (ตัวเลขสมมติ คำนวณซ้ำได้)

สมมติเลือก 1 โดเมน 10 งาน ใช้ --k 1 --mode parallel

รายการ ค่า
คะแนนฐาน (--bases) 40.0
คะแนนหลัง Harness² 46.0
ส่วนต่าง 46.0 − 40.0 = +6.0 คะแนน
เกณฑ์ผ่านที่ตั้งก่อนรัน อย่างน้อย +3.0
ผล ผ่านเกณฑ์

ถ้างานแต่ละงานเสียค่า API ประมาณ 2 หน่วยต่อการรัน และ k = 1 ต้องรันฐานอย่างน้อย 1 รอบ บวกขั้น PPC ต้นทุนรวมสูงกว่ารันเดียวแน่นอน ต้องเทียบ +6.0 คะแนนกับต้นทุนที่เพิ่ม

เมื่อไรควรใช้

ใช้เมื่อ ไม่ควรใช้เมื่อ ต้องมีก่อน
โมเดลคงที่และแก้น้ำหนักไม่ได้ ต้องการผลทันทีในงานเดียวแบบราคาถูก ชุดงานที่ซ้ำโดเมนกันพอให้คลังเรียนรู้
งานเป็นโดเมนเดียวที่ทำซ้ำหลายงาน ไม่มีทางวัดคุณภาพงานเลย วิธีตรวจ (judge) ที่เชื่อถือได้
มีงบ API สำหรับรันซ้ำ ใช้ในสภาพแวดล้อมที่ปล่อยเน็ตเปิดไม่ได้ เครือข่ายที่ควบคุมได้

ขั้นแรกที่เล็กที่สุด

  1. รัน harness2-demo --output runs/demo --k 2 เพื่อดูโครงผลลัพธ์โดยไม่เสียเงิน
  2. รัน --dry-run กับ benchmark ที่เลือกเพื่อดูงานที่จะถูกเลือก
  3. รันจริง 1 โดเมน --max-tasks 1 แล้วอ่านโฟลเดอร์ runs/

การทดสอบก่อน/หลัง

หัวข้อ ค่า
ตัวชี้วัด คะแนนจาก harness2-judge
ฐานเปรียบเทียบ harness2-judge --bases บนชุดงานเดียวกัน
เกณฑ์ผ่าน กำหนดก่อนรัน เช่น เพิ่มอย่างน้อย 3 คะแนนและไม่มีงานที่ไม่มีคะแนนมากกว่าฐาน
ข้อควรระวัง Judge, benchmark, executor, subset, --k, --mode, seed ต้องตรงกับการรัน

✅ ทดสอบความเข้าใจ

คำถาม คำตอบ คำตอบผิดที่พบบ่อย
ทำไมการเทียบการรันหลายครั้งทำให้ปรับ harness ได้โดยไม่มีเฉลย ความต่างระหว่างการรันบอกจุดที่พลาด จึงใช้หาแนวปรับได้ แม้ไม่รู้คำตอบ "ต้องมีเฉลยเสมอจึงจะรู้ว่าอะไรดีกว่า"
--k 3 ในโหมด parallel กับ sequential ต่างกันอย่างไร parallel: ทั่วไป 3 เฉพาะโดเมน 3 รวม 3 ครั้ง; sequential: PPC 3 ขั้นต่อกัน "เหมือนกัน แค่ชื่อต่าง"
--max-tasks 5 กับ 4 โดเมนรันกี่งาน สูงสุด 20 เพราะจำกัดต่อโดเมน "รวม 5 งาน"
ผลเพิ่ม 11.5 คะแนนแปลว่าใช้กับงานของฉันได้เท่านั้นหรือไม่ ไม่ เป็นค่าสูงสุดบน benchmark และโมเดลที่ทดสอบ ผลกับงานของคุณต้องวัดเอง "จะได้ +11.5 ทุกงาน"
เปลี่ยนโมเดลแล้วรันคำสั่งเดิมต่อ มีปัญหาอะไร รันซ้ำจะต่อจากผลเดิม ผลเก่าปนกับโมเดลใหม่ ต้องใช้ HARNESS2_RUNS_DIR ใหม่ "ระบบแยกโมเดลให้เอง"
(กับดัก) ถ้าปล่อยเครือข่ายเปิดตอนประเมินจะเกิดอะไร โมเดลอาจเข้าถึงเฉลยหรือเกณฑ์ตรวจ คะแนนจึงเชื่อถือไม่ได้ "เน็ตเปิดช่วยให้ค้นข้อมูลดีขึ้น จึงดีกว่า"

⚠️ Risks

⚠️ Warning — Executor มีเครือข่ายไม่จำกัด และ Codex รันโดยปิด sandbox README ให้ตั้งข้อจำกัดเครือข่ายก่อนประเมิน เพื่อไม่ให้โมเดลเข้าถึงเฉลยหรือเกณฑ์ตรวจ

ความเสี่ยง/ข้อจำกัด รายละเอียด หลักฐาน
ค่า API รันโมเดลจริงมีค่าใช้จ่าย เริ่มจากงานเล็ก อ่านจาก repo (2026-10-20)
รั่วของคำตอบ เครือข่ายเปิด อาจเห็นเฉลย อ่านจาก repo (2026-10-20)
ไม่ใช่ผลิตภัณฑ์ทางการ README ระบุว่าไม่ใช่ผลิตภัณฑ์ที่ Google รับรองอย่างเป็นทางการ อ่านจาก repo (2026-10-20)
ผลเป็นค่าสูงสุด ไม่ทราบการกระจายของผล ตีความ
ใช้ข้ามโดเมนอื่น ยังไม่มีหลักฐาน ยังไม่ทดสอบ
ผลบางส่วนผูกกับ Linux ระบบที่ระบุคือ Linux อ่านจาก repo (2026-10-20)

ข้อผิดพลาดที่พบบ่อย (ตีความ): เปลี่ยนโมเดลโดยไม่เปลี่ยนโฟลเดอร์ผลลัพธ์, ตัดสินผลด้วยการตั้งค่า judge ที่ไม่ตรงกับตอนรัน, เริ่มรันเต็มชุดโดยไม่ทำ --dry-run

✔️ Checklist ก่อนรัน

ข้อ สถานะ
ตั้งข้อจำกัดเครือข่ายกันเข้าถึงเฉลย 🔴 ต้องทำก่อน
ตั้ง .env และล็อกอิน gcloud ⚪
ติดตั้ง Pandoc/Poppler (LAB) หรือ Docker (WorkBuddy) ⚪
harness2-check --bench <ชื่อ> ผ่าน ⚪
--dry-run เพื่อตรวจชุดงาน ⚪
กำหนดเกณฑ์ผ่านล่วงหน้า ⚪
เริ่มด้วย --max-tasks 1 ⚪

🧭 Decision / next steps

✅ Recommendation — เริ่มจาก demo ที่ไม่ใช้เครดิต แล้วรัน 1 โดเมน 1 งานด้วย --k 1 ตั้งข้อจำกัดเครือข่ายก่อน และขยายเมื่อเห็นว่าคะแนนเพิ่มถึงเกณฑ์ที่ตั้งไว้

Sources

รายการ ข้อมูล
Repo google-research/harness2
Commit ที่อ่าน 1cfe254 (14 ตุลาคม 2026)
วันที่อ่าน 2026-10-20
ไฟล์ที่อ่าน README.md และ docs/EXPERIMENTS.md ผ่านการสรุปของเครื่องมือดึงเว็บ
ไฟล์ที่ไม่ได้อ่านเอง docs/SETUP.md, docs/BENCHMARKS.md, โค้ดใน harness2/
ใบอนุญาต Apache 2.0 (benchmark และ dataset ของบุคคลที่สามคงใบอนุญาตเดิม)

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

ตัวย่อที่ใช้ในหน้านี้

ตัวย่อ ชื่อเต็ม คืออะไร อ่านค่าอย่างไร
PPC Propose–Probe–Compose ขั้นปรับ harness: เสนอ ทดลอง แล้วรวม --k 1 = PPC 1 ขั้น
LAB ชื่อ benchmark งานกฎหมายใน repo ชุดทดสอบงานกฎหมาย partial pass rate +11.8 จุด = สัดส่วนงานที่ผ่านบางส่วนเพิ่ม 11.8 จุดเปอร์เซ็นต์
JB JobBench benchmark งานวิชาชีพ harness2-setup jb
WB WorkBuddy-Bench benchmark งานออฟฟิศ เว็บ โค้ด harness2-setup wb
API Application Programming Interface ช่องทางเรียกบริการโมเดล ค่าใช้จ่ายคิดตามการเรียก
CLI Command-Line Interface เครื่องมือคำสั่ง gcloud คือ Google Cloud CLI
GLM-5 โมเดลภาษา หนึ่งในโมเดลที่ README รายงานผลทดสอบ ผลเทียบกับ harness ฐานของโมเดลเดียวกัน
Gemini 3.5 Flash โมเดลภาษาของ Google โมเดลที่ README รายงานผลทดสอบ เช่นเดียวกัน
Vertex AI แพลตฟอร์ม AI ของ Google Cloud บริการเรียกโมเดลที่ต้องตั้งค่าใน .env ใส่ project และ model ID
OpenCode / Codex ชื่อ executor ตัวรันเอเจนต์ ค่าเริ่มต้นคือ OpenCode --substrate cx = Codex
PDF Portable Document Format รูปแบบเอกสาร ใช้ในตัวอย่างสคริปต์
MD Markdown รูปแบบไฟล์เอกสาร README.md
k จำนวนรอบ/งบการวนซ้ำ ตัวแปรกำหนดจำนวนการรันฐานและผู้สมัคร k = 3 = 3 รอบฐาน
bps / หน่วย - ไม่ใช้ในหน้านี้ -

สัญลักษณ์ในสูตร

สัญลักษณ์ ความหมาย อ่านค่า
k งบการวนซ้ำ --k 2 = สองรอบ
N จำนวนโดเมนที่รันพร้อมกัน (--workers N) N = 4 = 4 โดเมนพร้อมกัน

แถวที่มาจากความรู้ทั่วไป ไม่ได้นิยามโดยหัวข้อนี้: API, CLI, PDF, MD, Vertex AI และคำอธิบายของ GLM-5 / Gemini 3.5 Flash

Summary

ข้อสรุป: Harness² ปรับ harness รอบโมเดลคงที่ ไม่ต้องเทรนใหม่ ผลที่รายงานดีขึ้นสูงสุด 11.5 / 4.5 / 11.8 บน 3 benchmark แต่ต้องวัดซ้ำกับงานของคุณ

  • แก่น: รันฐาน k ครั้ง → Propose → Probe → Compose → เก็บบทเรียนเข้าคลังต่อโดเมน
  • ปรับได้ 8 ส่วนของ harness รวมถึง prompt, memory, skills, subagents
  • parallel สำรวจกว้าง, sequential ขัดเกลาลึก
  • ต้องจำกัดเครือข่ายก่อนประเมิน เพราะเฉลยอาจรั่ว
  • ขั้นแรกที่ปลอดภัย: demo, --dry-run, แล้ว --max-tasks 1
ตัวเลขสำคัญ ค่า
WorkBuddy-Bench +11.5 คะแนน (สูงสุด)
JobBench +4.5 คะแนน (สูงสุด)
LAB partial pass rate +11.8 จุดเปอร์เซ็นต์ (สูงสุด)
ส่วนประกอบ harness 8 ส่วน
Facebook

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