ข้าม​ไป​ยัง​เนื้อหา

Harness Engineering: ออกแบบ 'โครง​ครอบ' รอบ model ให้ coding agent เชื่อถือ​ได้

เกี่ยว​กับ​บทความ​นี้

บทความ​นี้ เรียบเรียง​เป็น​ภาษา​ไทย​เพื่อ​การ​ศึกษา โดย​ยึด “Harness engineering for coding agent users” ของ Birgitta Böckeler (Distinguished Engineer, Thoughtworks) เผยแพร่​บน martinfowler.com เมื่อ 2 เมษายน 2026 เป็น​แกน​หลัก

และ​เสริม​ด้วย “Effective harnesses for long-running agents” โดย Justin Young บน Anthropic Engineering (26 พฤศจิกายน 2025)

เขียน​ด้วย​สำนวน​ของ​ผู้​เรียบเรียง​ใน​ลักษณะ​สังเคราะห์ ไม่ใช่​การ​แปล​คำ​ต่อ​คำ วลี​เด่น​ที่​ยก​มา​ได้​ให้​เครดิต​ไว้​ใน​เนื้อหา ศัพท์​เทคนิค​คง​เป็น​ภาษา​อังกฤษ​พร้อม​คำ​อธิบาย​ไทย​เมื่อ​พบ​ครั้ง​แรก และ ไดอะแกรม​วาด​ใหม่​เป็น Mermaid (label เป็น​ภาษา​อังกฤษ) ลิขสิทธิ์​ของ​เนื้อหา​ต้นฉบับ​เป็น​ของ​ผู้​เขียน​แต่ละ​ท่าน

ใน​ซีรีส์​นี้​เรา​ไล่​ดู​วิวัฒนาการ​ของ​การ​ทำงาน​กับ AI agent มา​เป็น​ลำดับ เริ่ม​จาก​การ​เขียน prompt ให้​ดี ต่อ​ด้วย context engineering ที่​มอง context เป็น​ทรัพยากร​จำกัด​และ​คัด​เฉพาะ token ที่​ให้​สัญญาณ​สูง

คำถาม​ถัด​ไป​ที่​ใหญ่​กว่า​ตัว prompt และ context คือ แล้ว ระบบ​ทั้งหมด​ที่​ห่อ​หุ้ม model อยู่ ล่ะ ควร​ออกแบบ​อย่างไร​ให้ coding agent ทำงาน​ได้​อย่าง​เชื่อถือ​ได้​ใน codebase จริง คำ​ตอบ​ของ Böckeler คือ​คำ​ว่า harness engineering

Böckeler ให้​นิยาม​ที่​คม​และ​จำ​ง่าย: harness (โครง​ครอบ​รอบ model) คือ ทุก​อย่าง​ใน AI agent ยกเว้น​ตัว model เอง

พูด​อีก​อย่าง model คือ “เครื่องยนต์” ส่วน harness คือ​ทุก​ชิ้น​ส่วน​ที่​เรา​ใน​ฐานะ​ผู้​ใช้​ประกอบ​ขึ้น​รอบ ๆ มัน​เพื่อ​กำกับ​และ​ควบคุม​พฤติกรรม​ให้​เข้า​กับ​บริบท​ของ​เรา ได้แก่

  • system prompt และ instruction file (เช่น AGENTS.md, CLAUDE.md)
  • ชุด tools
  • Model Context Protocol (MCP — โพรโทคอลมาตรฐาน​สำหรับ​ป้อน context/เครื่องมือ​ให้ LLM)
  • sandbox และ​สภาพ​แวดล้อม​รัน
  • memory
  • feedback loop
  • quality gate (ประตู​ตรวจ​คุณภาพ) ต่าง ๆ

นัย​สำคัญ​ที่​ตาม​มา​คือ การ​เปลี่ยน​ไป​ใช้ model ที่​เก่ง​ขึ้น​เพียง​อย่าง​เดียว มัก​ไม่​ได้​ทำให้ agent ของ​เรา​ดี​ขึ้น​เท่ากับ​การ​ลงมือ​ออกแบบ harness ที่​ดี เพราะ model ที่​เก่ง​แค่​ไหน​ก็​ยัง​ไม่รู้​ธรรมเนียม codebase ของ​เรา ไม่รู้​ว่า​อะไร​คือ “เสร็จ” ใน​องค์กร​เรา และ​ไม่มี​ทาง​รับ feedback ที่​ดี​ถ้า​เรา​ไม่​ได้​วาง​กลไก​ไว้​ให้

harness คือ​ที่​ที่​ความ​รู้​เฉพาะ​บริบท​เหล่า​นั้น​ถูก​ฝัง​ลง​ไป

นิยาม​ใจกลาง​ของ​บทความ

harness = everything in an AI agent except the model itself หรือ​ใน​สูตร​จำ​ง่าย​ของ Böckeler คือ Agent = Model + Harness — model เป็น​เพียง​ชิ้น​เดียว​ใน​ระบบ ส่วน​ที่​เหลือ​ทั้งหมด (prompts, tools, MCP, sandbox, memory, feedback loop, quality gate) คือ​สิ่ง​ที่ เรา​ออกแบบ​ได้ และ​เป็น​ตัว​ชี้ขาด​ว่า agent จะ​เชื่อถือ​ได้​แค่​ไหน — เรียบเรียง​จาก Böckeler

มอง​ใน​ภาพ​วิวัฒนาการ harness engineering คือ​ชั้น​ถัด​ไป​ที่​ต่อยอด​จาก context engineering โดยตรง

prompt engineering ดูแล​ถ้อยคำ​ของ​คำ​สั่ง context engineering ขยาย​ออก​ไป​ดูแล​ว่า​อะไร​ควร​อยู่​ใน context window ณ แต่ละ​ก้าว ส่วน harness engineering ถอย​ออก​มา​อีก​ขั้น​เพื่อ​ดูแล ระบบ​ทั้ง​ก้อน​ที่​ล้อม​รอบ model

และ​ใน​บท​ถัด​ไป​เรา​จะ​ไป​ต่อ​ที่ loop engineering ที่​ว่าด้วย​การ​ออกแบบ​วง​รอบ​การ​ทำงาน​ให้ agent วน​แก้ตัวเอง​ได้​อย่าง​มี​เสถียรภาพ

flowchart LR
  P["Prompt engineering"] --> C["Context engineering"]
  C --> H["Harness engineering"]
  H --> L["Loop engineering"]
  classDef focus fill:#2563eb,stroke:#1e3a8a,color:#ffffff;
  class H focus;

ภาพ 1 — วิวัฒนาการ​ของ​การ​ทำงาน​กับ agent แต่ละ​ชั้น​ไม่​ได้​แทนที่​ชั้น​ก่อนหน้า แต่​ห่อ​หุ้ม​มัน​ไว้​ใน​กรอบ​ที่​กว้าง​ขึ้น harness engineering เป็น​ชั้น​ที่​ดูแล​ทุก​อย่าง​รอบ model และ​เป็น​ฐาน​ที่ loop engineering จะ​มา​ต่อยอด

หัวใจ​ของ​กรอบ​คิด​ที่ Böckeler เสนอ​คือ​การ​แยก​กลไก​ควบคุม​ออก​เป็น​สอง​ประเภท​ที่​เสริม​กัน โดย​ยืม​ภาษา​จาก​ทฤษฎี​ระบบ​ควบคุม (control theory):

  • Guides (feedforward) — กลไก​ที่ นำทาง agent ก่อน​ที่​มัน​จะ​ลงมือ generate เพื่อ​เพิ่ม​โอกาส​ให้​ได้​ผลลัพธ์​ที่​ดี​ตั้งแต่​ครั้ง​แรก เช่น เอกสาร​มาตรฐาน​การ​เขียน code, rule/instruction file, spec, skill, codemod (script แปลง code อัตโนมัติ​ทั้ง codebase) หรือ scaffold (โครง​เริ่มต้น​ของ project) ที่​ตั้ง​โครง​ให้​ถูก​ตั้งแต่​ต้น
  • Sensors (feedback) — กลไก​ที่ จับ​ปัญหา​หลัง agent ลงมือ​ไป​แล้ว เพื่อ​ให้​มัน​แก้ตัวเอง​ได้ เช่น linter, type checker, ชุด test, fitness function (function ที่​วัด​ว่า code ยัง​รักษา​คุณลักษณะ​เชิง​สถาปัตยกรรม​ที่​ต้องการ​ไว้​ได้​หรือ​ไม่) และ AI code review

ทั้ง​สอง​อย่าง​ขาดกัน​ไม่​ได้ ถ้า​มี​แต่ feedback อย่าง​เดียว agent จะ​เดิน​ผิด​ซ้ำ ๆ โดย​ไม่​เรียนรู้​ทิศทาง​ล่วงหน้า แต่​ถ้า​มี​แต่ feedforward อย่าง​เดียว กฎ​ที่​เรา​วาง​ไว้​ก็​ไม่​เคย​ถูก​ตรวจสอบ​ว่า​ได้​ผล​จริง​หรือ​ไม่

Böckeler ยัง​เพิ่ม​แกน​ที่​สอง​ที่​สำคัญ​ไม่​แพ้​กัน: กลไก​แต่ละ​ตัว​จะ​ทำงาน​แบบ computational หรือ inferential

  • computational — ทำงาน​แบบ deterministic (กำหนด​ผล​ตายตัว) รัน​บน CPU เร็ว​ระดับ​มิลลิ​วินาที​ถึง​วินาที เช่น linter, type checker, test, การ​วิเคราะห์​โครงสร้าง code ผลลัพธ์​แน่นอน​และ​ถูก​เสมอ​ใน​สิ่ง​ที่​มัน​ตรวจ
  • inferential — อาศัย LLM ตีความ​เชิง​ความหมาย (semantic) ช้า​กว่า ใช้​ทรัพยากร​มากกว่า และ​ไม่ deterministic แต่​จับ​ปัญหา​เชิง​ความหมาย​ที่​กฎ​ตายตัว​จับ​ไม่​ได้ เช่น AI code review หรือ custom judge ที่​ประเมิน​คุณภาพ
flowchart LR
  subgraph GUIDES["Guides - feedforward (before generate)"]
    direction TB
    GC["Computational: codemods, scaffolds"]
    GI["Inferential: AGENTS.md, skills, specs"]
  end
  M["Model"]
  subgraph SENSORS["Sensors - feedback (after generate)"]
    direction TB
    SC["Computational: linters, types, tests"]
    SI["Inferential: AI review, LLM judges"]
  end
  GUIDES --> M
  M --> SENSORS
  SENSORS -->|self-correct| M

ภาพ 2 — harness ห่อ​หุ้ม model ด้วย​สอง​ด้าน Guides นำทาง​ก่อน generate ส่วน Sensors จับ​ปัญหา​หลัง generate แล้ว​ป้อน​กลับ​ให้ agent แก้ตัวเอง แต่ละ​ด้าน​ยัง​แยก​ได้​เป็น computational (เร็ว แน่นอน) และ inferential (อาศัย LLM ตีความ)

จัด​วางตัวอย่าง​ลง​ใน​สอง​แกน​นี้​จะ​ได้​ตาราง​ที่​ช่วย​ให้​เห็น​ภาพ​ว่า​เครื่องมือ​แต่ละ​ชิ้น​ทำ​หน้าที่​อะไร:

กลไกFeedforward (Guide)Feedback (Sensor)
Computationalcodemod, scaffold, project generatorlinter, type checker, test, structural/architecture test
InferentialAGENTS.md, skill, spec, ตัวอย่าง codeAI code review, LLM-as-judge

Böckeler จัด​กลุ่ม harness ตาม​สิ่ง​ที่​มัน​พยายาม​ควบคุม​ได้​เป็น​สาม​หมวด และ​ชี้​ว่า​แต่ละ​หมวด “โต” ไม่​เท่า​กัน

  • Maintainability harness (แข็งแรง​ที่สุด) — ดูแล​คุณภาพ​ภายใน​ของ code และ​ความ​ง่าย​ใน​การ​ดูแล​รักษา เป็น​หมวด​ที่​เครื่องมือ​สุกงอม​ที่สุด computational sensor จับ​ปัญหา​เชิง​โครงสร้าง​ได้​อย่าง​เชื่อถือ​ได้ ทั้ง​ความ​ซ้ำซ้อน (duplication), ความ​ซับซ้อน (complexity), ช่อง​โหว่​ของ coverage และ​การ​ละเมิด​สไตล์ ส่วน inferential sensor ช่วย​จับ​ปัญหา​เชิง​ความหมาย เช่น test ที่​ซ้ำซ้อน​หรือ​การ over-engineer ได้​บาง​ส่วน แต่​แพง​และ​เป็น​ความ​น่า​จะ​เป็น
  • Architecture-fitness harness (ปานกลาง) — นิยาม​และ​ตรวจ​คุณลักษณะ​เชิง​สถาปัตยกรรม​ผ่าน fitness function เช่น ข้อ​กำหนด​ด้าน performance ที่​มี performance test คอย​ให้ feedback หรือ​มาตรฐาน​ด้าน observability (ธรรมเนียม​การ logging) พร้อม​คำ​แนะนำ​สำหรับ​การ debug
  • Behaviour harness (อ่อน​ที่สุด) — Böckeler เรียก​ว่า​เป็น “ช้าง​ใน​ห้อง” ทุก​วัน​นี้​ฝั่ง feedforward พึ่ง functional specification ที่​ละเอียด​บ้าง​หยาบ​บ้าง ส่วน​ฝั่ง feedback พึ่ง​ชุด test ที่ AI generate ขึ้น​มาบวก​กับ​การ​ทดสอบ​ด้วย​มือ ปัญหา​คือ​แนวทาง​นี้ ฝาก​ความ​เชื่อ​มั่น​ไว้​กับ test ที่ AI สร้าง​เอง​มาก​เกิน​ไป ซึ่ง​ยัง​ไม่​ดี​พอ การ​ตรวจ​ว่า code “ทำ​สิ่ง​ที่​ควร​ทำ​จริง​หรือ​ไม่” จึง​ยัง​เป็น​ด่าน​ที่​เทคโนโลยี​ปัจจุบัน​ยัง​ไป​ไม่​ถึง

ข้อสังเกต​ที่​เจ็บ​แต่​จริง​คือ ไม่​ว่า sensor ฝั่ง maintainability จะ​เก่ง​แค่​ไหน มัน​ก็​ยัง​จับ​ปัญหา​ที่​กระทบ​มาก​ที่สุด​ไม่​ได้​อย่าง​น่า​เชื่อถือ ไม่​ว่า​จะ​เป็นการ​วินิจฉัย​โจทย์​ผิด (misdiagnosis), feature เกิน​ความ​จำเป็น หรือ​การ​เข้าใจ​คำ​สั่ง​คลาดเคลื่อน ปัญหา​เหล่า​นี้​ขึ้น​กับ​ความ​ชัดเจน​ของ​มนุษย์​เป็น​หลัก

แนวคิด shift-left ยืม​มา​จาก​โลก CI/CD ตรง​ที่​ว่า ยิ่ง​จับ​ปัญหา​ได้​เร็ว​ใน pipeline ต้นทุน​การ​แก้​ยิ่ง​ถูก การ​ออกแบบ harness จึง​ต้อง​ตอบ​คำถาม​เรื่อง “จังหวะ​เวลา” ว่า​จะ​วาง sensor แต่ละ​ตัว​ไว้​ตรง​ไหน

  • ก่อน commit / ตอน integrate — วาง​การ​ตรวจ​ที่ เร็ว​และ​ถูก เช่น linter, type checker, agent รีวิว​แบบ​เบา ๆ และ​ชุด test ที่​รัน​ไว
  • ใน pipeline หลัง integrate — วาง​การ​วิเคราะห์​ที่ แพง​กว่า เช่น mutation testing (การ​จงใจ​กลาย​พันธุ์ code เพื่อ​วัด​ว่า​ชุด test จับ​ข้อ​ผิดพลาด​ได้​จริง) หรือ​การ​รีวิว​เชิง​ลึก​ด้วย AI
  • เฝ้า​ระวัง​ต่อ​เนื่อง — จับ drift (code ตาย, coverage ที่​คุณภาพ​ตก, ช่อง​โหว่​ของ dependency) และ feedback จาก runtime เช่น SLO (Service Level Objective — เป้าหมาย​ระดับ​บริการ​ที่​วัด​ได้) ที่​เสื่อม​ลง และ​คุณภาพ​คำ​ตอบ

จุด​ที่ Böckeler ขุด​ลึก​และ​น่า​สนใจ​คือ​แนวคิด harnessability — codebase แต่ละ​แห่ง “รับ” harness ได้​ไม่​เท่า​กัน

เธอ​เรียก​คุณสมบัติ​ที่​ทำให้​สภาพ​แวดล้อม​อ่าน​ง่าย​และ​ควบคุม​ได้​ง่าย​สำหรับ agent ว่า ambient affordances เช่น ภาษา​ที่ strongly-typed, ขอบเขต module ที่​ชัด และ framework ที่​มี​ความเห็น​ชัด (opinionated) ล้วน​รองรับ sensor ที่​ซับซ้อน​ได้​ตาม​ธรรมชาติ

จาก​ตรง​นี้​เกิด​เป็น​ข้อ​ขัดแย้ง​ที่​น่า​ปวด​หัว: ระบบ legacy ที่​มี​หนี้​ทาง​เทคนิค​สูง​คือ​ระบบ​ที่​ต้องการ harness มาก​ที่สุด แต่​ก็​เป็น​ระบบ​ที่ harnessable น้อย​ที่สุด เพราะ​ไม่มี​ขอบเขต​ชัด​ให้​ตรวจ ไม่มี type ให้​พึ่ง และ​ไม่มี test ให้​ยึด

นี่​คือ​เหตุผล​ว่า​ทำไม​การ​ลงทุน​กับ​โครงสร้าง​พื้นฐาน (types, module boundaries, ชุด test) จึง​เป็นการ​ลงทุน​กับ​ความ​สามารถ​ใน​การ​ใช้ AI ไป​พร้อม​กัน

วลี​เด่น (อ้างอิง Böckeler)

“A good harness should not necessarily aim to fully eliminate human input, but to direct it to where our input is most important.”

harness ที่​ดี ไม่​จำเป็น​ต้อง​เล็ง​ไป​ที่​การ​กำจัด input ของ​มนุษย์​ให้​หมด แต่​ควร​นำพา input นั้น​ไป​ยัง​จุด​ที่​มัน​สำคัญ​ที่สุด — มนุษย์​ยัง​นำ​สิ่ง​ที่ agent ให้​ไม่​ได้​มา​ด้วย ทั้ง​ความ​รับผิดชอบ​ทาง​สังคม รสนิยม​เชิง​ออกแบบ ความ​รู้​ว่า​ธรรมเนียม​ท้องถิ่น​ข้อ​ไหน “รับ​น้ำหนัก” สำคัญ และ​บริบท​ทาง​ธุรกิจ

harness ที่​ดี​คือ​การ externalize ประสบการณ์​ของ​นัก​พัฒนา​ออก​มา ไม่ใช่​การ​แทนที่​ดุลยพินิจ​ของ​มนุษย์

เมื่อ​ขยับ​จาก​งาน​สั้น ๆ ไป​สู่​งาน​ที่​ยาว​จน agent ต้อง​ทำงาน​ข้าม หลาย context window ปัญหา​ใหม่​ก็​โผล่​ขึ้น​มา

บทความ “Effective harnesses for long-running agents” ของ Justin Young (Anthropic) เปรียบ​ภาพ​ไว้​คม​มาก: มัน​เหมือน project ซอฟต์แวร์​ที่​มี​วิศวกร​ทำงาน​เป็น​กะ โดย​วิศวกร​กะ​ใหม่​ทุก​คน​มา​ถึง​โดย​ไม่มี​ความ​ทรง​จำ​ใด ๆ จาก​กะ​ก่อนหน้า

จาก​การ​ให้ Claude ลอง​สร้าง​เว็บ app ที่​ซับซ้อน ทีม Anthropic พบ​รูปแบบ​ความ​ล้มเหลว​สอง​แบบ: แบบ​แรก​คือ ทะเยอทะยาน​เกิน​ไป พยายาม​ทำ​ทุก​อย่าง​ใน​คราว​เดียว (one-shot) จน context หมด​กลางคัน แล้ว​ทิ้ง feature ที่​ทำ​ค้าง​ไว้​แบบ​ไม่มี​เอกสาร

แบบ​ที่​สอง​คือ ประกาศ​ว่า​เสร็จ​ก่อน​เวลา agent รอบ​ถัด​มา​เห็น​ว่า​มี​ความ​คืบ​หน้า​อยู่​แล้ว​ก็ “ประกาศ​ว่า​งาน​จบ” ทั้ง​ที่ function ยัง​ไม่​ครบ

ทาง​แก้​ที่​เสนอ​คือ harness แบบ​สอง​ส่วน: initializer agent ทำ​หน้าที่​ตั้ง​โครง​ใน session แรก แล้ว​ส่ง​ต่อ​ให้ coding agent ที่​โฟกัส​ที​ละ feature ใน session ถัด ๆ ไป

flowchart TB
  U["User prompt"] --> INIT["Initializer Agent"]
  INIT --> FL["Feature list (JSON)"]
  INIT --> SH["init.sh"]
  INIT --> PF["Progress file"]
  INIT --> GIT["Git baseline commit"]
  FL --> CODE["Coding Agent (per session)"]
  SH --> CODE
  PF --> CODE
  GIT --> CODE
  CODE --> R1["Recover context: read git log and progress"]
  R1 --> R2["Implement one feature"]
  R2 --> R3["Verify end-to-end"]
  R3 --> R4["Commit and update progress"]
  R4 -->|next session| CODE

ภาพ 3 — harness แบบ long-running: initializer agent ตั้ง​โครง​ครั้ง​เดียว (feature list, init.sh, progress file, git baseline) แล้ว coding agent วน​ทำงาน​ที​ละ feature ต่อ​เนื่อง​ข้าม session โดย​ใช้ git และ progress file เป็น​จุด​ส่ง​ต่อ​งาน​ระหว่าง​กะ

initializer agent วาง​รากฐาน​ผ่าน​สิ่ง​ประดิษฐ์ (artifact) หลัก​ไม่​กี่​อย่าง:

  • feature list (file JSON) — ขยาย​คำ​สั่ง​เริ่มต้น​ของ​ผู้​ใช้​ออก​เป็น​รายการ feature ย่อย​ที่​ทดสอบ​ได้ (ตัวอย่าง​ใน​บทความ​มี “กว่า 200 feature” สำหรับ project เลียน​แบบ Claude.ai) แต่ละ feature เริ่มต้น​สถานะ​เป็น “failing” และ​มี field boolean ชื่อ passes โดย​ห้าม​แก้​หรือ​ลบ​รายการ​ทิ้ง​เด็ดขาด เพราะ​การ​ลบ test อาจ​กลบ function ที่​ยัง​ขาด​หรือ​ยัง bug อยู่
  • init.sh — script รัน​ได้ที่​จุด​สภาพ​แวดล้อม​พัฒนา​ให้​ทำงาน ทำให้ session ถัด ๆ ไป​เปิด server ขึ้น​มา​ได้​เร็ว
  • progress file — file บันทึก​ความ​คืบ​หน้า (เช่น claude-progress.txt) พร้อม git commit แรก ที่​ตรึง​สถานะ baseline ไว้

coding agent แต่ละ​ตัว​เดิน​ตาม​วินัย​เดียวกัน​ใน​ทุก session:

  1. กู้ context กลับ​มา​ให้​เร็ว (rapid context recovery) — อ่าน git log และ progress file เพื่อ​เข้าใจ​ว่า​กะ​ก่อน​ทำ​อะไร​ไป​แล้ว รัน test end-to-end แบบ​พื้นฐาน​ผ่าน dev server และ​ซ่อม​สถานะ​ที่​พัง​ก่อน​เดิน​หน้า
  2. โฟกัส​ที​ละ feature — ทำ​เพียง feature เดียว​ต่อ​ครั้ง ต้าน​แรง​ยั่ว​ให้​ทำ​หลาย​เรื่อง​พร้อม​กัน
  3. ทดสอบ​แบบ end-to-end จริง — ใช้​เครื่องมือ​อัตโนมัติ (เช่น browser automation ผ่าน Puppeteer MCP สำหรับ​เว็บ app) ยืนยัน feature แบบ​ที่​ผู้​ใช้​จริง​จะ​เจอ ไม่ใช่​แค่ unit test หรือ​เรียก API
  4. รักษา​ความ​สะอาด​ของ​สภาพ​แวดล้อม (environmental cleanliness) — commit ลง git พร้อม​ข้อความ​ที่​สื่อ​ความ อัปเดต progress file และ​ทิ้ง code ไว้​ใน​สถานะ​ที่ merge ขึ้น main ได้ (ไม่มี bug ใหญ่ โครงสร้าง​เป็น​ระเบียบ มี​เอกสาร​ครบ)

หลักการ​ที่​อยู่​เบื้องหลัง​สรุป​ได้​สาม​ข้อ:

  • incremental progress ดี​กว่า one-shot (แตก​งาน​เป็น feature ย่อย​กัน​ไม่​ให้ context ระเบิด​และ​สร้าง​จุด checkpoint ตาม​ธรรมชาติ)
  • environmental cleanliness (ทิ้ง​งาน​ไว้​ใน​สถานะ​ที่​กะ​ถัด​ไป​หยิบ​ต่อ​ได้​ทันที)
  • rapid context recovery (อ่าน git log/progress ก่อน​เริ่ม​เสมอ)

ทั้งหมด​นี้​คือ harness ที่​เปลี่ยน “วิศวกร​ที่​ความ​จำ​เสื่อม​ทุก​กะ” ให้​กลาย​เป็น​ทีม​ที่​ส่ง​งาน​ต่อ​กัน​ได้​อย่าง​มี​ระเบียบ

สอง​บทความ สอง​มุม แต่​แก่น​เดียวกัน

Böckeler มอง​จาก​มุม​ของ ผู้​ใช้ agent ใน​งาน​ประจำ​วัน ว่า​จะ​ประกอบ Guides/Sensors อย่างไร​ให้ agent เชื่อถือ​ได้ ส่วน Anthropic มอง​จาก​มุม งาน​ที่​ยาว​ข้าม​หลาย context window ว่า​จะ​รักษา​ความ​ต่อ​เนื่อง​อย่างไร

แต่​ทั้ง​คู่​ชี้​ไป​ที่​แก่น​เดียวกัน: คุณภาพ​ของ agent อยู่​ที่ ระบบ​รอบ model — feature list, git baseline, progress file และ end-to-end test ก็​คือ Guides และ Sensors ใน version ของ​งาน long-running นั่นเอง

จุด​ที่​ต้อง​ย้ำ​ก่อน​ปิด​คือ harness ไม่ใช่​การ​ตั้ง​ค่า​ครั้ง​เดียว​จบ แต่​เป็น practice ที่​ต้อง​ดูแล​ต่อ​เนื่อง และ​มัน​คือ ฐาน ที่ loop engineering จะ​มา​ต่อยอด เพราะ​หัวใจ​ของ​การ​ปล่อย agent ให้​วน​แก้ตัวเอง​คือ​คุณภาพ​ของ feedback ที่​มัน​ได้​รับ​ใน​แต่ละ​รอบ

นัย​ที่​สำคัญ​คือ ถ้า harness ไม่​ดี ยิ่ง​ปล่อย​ให้​วน loop ยิ่ง​พัง​เร็ว — เพราะ agent จะ​วน​ขยาย​ความ​ผิดพลาด​บน​สัญญาณ​ที่​ผิด​หรือ​ไม่​ครบ (test ที่ AI สร้าง​เอง​แบบ​หละหลวม, quality gate ที่ agent เลี่ยง​ได้, progress file ที่​ไม่​ตรง​ความ​จริง)

การ​ลงทุน​กับ harness ที่​ดี​ก่อน​จึง​เป็น​เงื่อนไข​ที่​ทำให้ loop engineering ได้​ผล เรา​จะ​เจาะ​เรื่อง​การ​ออกแบบ​วง​รอบ​นั้น​ใน​บท​ถัด​ไป loop engineering

สรุป​สั้น
  • harness = ทุก​อย่าง​ใน agent ยกเว้น​ตัว model (Agent = Model + Harness) และ​มัน​คือ​สิ่ง​ที่​เรา​ออกแบบ​ได้
  • แยก​กลไก​เป็น Guides (feedforward) กับ Sensors (feedback) และ​แต่ละ​ตัว​เป็น computational หรือ inferential
  • หมวด behaviour ยัง​อ่อน​ที่สุด เพราะ​พึ่ง test ที่ AI สร้าง​เอง​มาก​เกิน​ไป
  • งาน long-running ต้องการ harness ที่​รักษา​ความ​ต่อ​เนื่อง​ข้าม session: initializer + coding agent, progress file, git baseline
  • harness ที่​ดี​นำ input ของ​มนุษย์​ไป​ยัง​จุด​ที่​สำคัญ​ที่สุด และ​เป็น​ฐาน​ที่ loop engineering จะ​ต่อยอด