Agent harness
Harness แปลตรงตัวคือ “สายรัด/บังเหียน” ที่ใช้ควบคุมม้า
แล้วอะไรคือ โครงที่ครอบสิ่งหนึ่งไว้เพื่อควบคุม ขับเคลื่อน หรือทดสอบมัน(?)
ก่อนอื่นต้องเข้าใจก่อนว่า ตัวโมเดล LLM ทำได้แค่รับข้อความเข้า แล้วพิมพ์ข้อความตอบออกมาแค่นั้นจริง ๆ มันเปิดไฟล์เองไม่ได้ ค้นเว็บเองไม่ได้ รันโค้ดเองไม่ได้, Harness คือโค้ดที่ครอบโมเดลไว้ ทำให้มันกลายเป็น agent ที่ทำงานได้จริง
สมมติเราสั่งว่า “ช่วยแก้ bug ในไฟล์ app.ts” สิ่งที่เกิดขึ้นคือ
- harness ส่งข้อความของคุณไปให้โมเดล
- โมเดลตอบกลับมาเป็นข้อความว่า “ขออ่านไฟล์ app.ts หน่อย”
- harness เห็นคำขอนี้ ก็ไปเปิดไฟล์ให้จริง ๆ แล้วส่งเนื้อหาไฟล์กลับไปให้โมเดล
- โมเดลอ่านแล้วตอบว่า “แก้บรรทัด 42 เป็นแบบนี้”
- harness ก็ไปแก้ไฟล์ให้จริง
นี่คือเหตุผลที่ว่า Claude Code, Cursor, Codex CLI และ Aider หลายตัวใช้โมเดลเดียวกันได้ แต่ทำงานได้ดีไม่เท่ากัน เพราะ harness ต่างกัน จึงมีคนพูดว่า “model + harness = agent”
หน้าที่หลักของ Harness ถ้าพูดแบบทางการ คือ
- Agent loop: ส่ง prompt ให้โมเดล รับคำตอบ ถ้าโมเดลขอเรียก tool ก็รัน tool นั้น แล้วส่งผลลัพธ์กลับไปให้โมเดล วนซ้ำจนงานเสร็จ
- Tools: เตรียมเครื่องมือให้โมเดลใช้ เช่น อ่านหรือเขียนไฟล์ รัน shell ค้นเว็บ หรือ MCP server
- Context management: จัดการ system prompt, ประวัติการคุย, การย่อ context เมื่อยาวเกิน และ memory
- Permissions/safety: กำหนดว่าคำสั่งไหนต้องขออนุญาตก่อน และรันใน sandbox หรือไม่
- UI/การแสดงผล: เช่น terminal, หน้าแชต หรือ IDE
Linked from
Nothing links here yet.