🎯 แก่นของเรื่อง
แก่นความคิด: ไม่ต้องแตะน้ำหนักโมเดล แต่ปรับ "สิ่งที่ห่อรอบโมเดล" (harness) ให้เหมาะกับงานตรงหน้า แล้วเก็บบทเรียนที่ได้ไว้ใช้กับงานถัดไป
ทำไมถึงได้ผล (กลไก):
- Harness กำหนดว่าโมเดลเห็นอะไร ใช้เครื่องมืออะไร และจำอะไรได้ ดังนั้นการแก้ส่วนนี้เปลี่ยนพฤติกรรมโดยไม่ต้องฝึกโมเดลใหม่
- ระบบรันงานเดิมด้วย harness ฐานหลายรอบ (
kรอบ) แล้วเทียบการรันแต่ละครั้งกัน จึงเห็นว่าจุดไหนพลาดโดยไม่ต้องมีเฉลย - ข้อเสนอที่ผ่านการทดลองจริง (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 สำหรับรันซ้ำ | ใช้ในสภาพแวดล้อมที่ปล่อยเน็ตเปิดไม่ได้ | เครือข่ายที่ควบคุมได้ |
ขั้นแรกที่เล็กที่สุด
- รัน
harness2-demo --output runs/demo --k 2เพื่อดูโครงผลลัพธ์โดยไม่เสียเงิน - รัน
--dry-runกับ benchmark ที่เลือกเพื่อดูงานที่จะถูกเลือก - รันจริง 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 |
| 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 ส่วน |




