คนส่วนใหญ่พยายามแก้ไข AI agent ในจุดที่ผิด
เมื่อ agent ทำงานผิดพลาด พวกเขาก็ไปแก้ prompt พอพลาดอีกก็เพิ่มคำสั่งเข้าไป เปลี่ยนโมเดล ขยาย context window หรือต่อเครื่องมือเพิ่ม
แล้วปัญหาเดิมก็วนกลับมาอีก
agent ลืมการตัดสินใจที่สำคัญ เลือกใช้เครื่องมือผิด จำไม่ได้ว่าเกิดอะไรขึ้นในสามขั้นตอนก่อนหน้า อ้างว่างานเสร็จแล้วโดยไม่ได้ตรวจผลลัพธ์ หรือลองทำซ้ำในสิ่งที่ล้มเหลวไปเรื่อยๆ จนงบหมด
ปัญหาไม่ได้อยู่ที่ตัวโมเดลเสมอไป
แต่อยู่ที่สภาพแวดล้อมรอบๆ มันต่างหาก
และสภาพแวดล้อมนั้นก็คือ harness
Harness Engineering คือการสร้างระบบล้อมรอบโมเดล เพื่อควบคุมว่ามันจะเห็นอะไรได้ ทำอะไรได้ จดจำอะไรได้ อะไรคือความสำเร็จ และจะเกิดอะไรขึ้นเมื่อมีข้อผิดพลาด
prompt ที่ดีขึ้นอาจช่วยปรับปรุงคำตอบได้แค่ครั้งเดียว
แต่ harness ที่ดีจะช่วยให้การทำงานทุกครั้งดีขึ้น
ติดตาม Substack ของผมเพื่ออ่านบทวิเคราะห์เชิงปฏิบัติเกี่ยวกับ AI agent, ระบบ automation และ production systems เพิ่มเติม:
1. โมเดลไม่ใช่ Agent
โมเดลสามารถให้เหตุผล สร้างเนื้อหา เปรียบเทียบ และเลือกได้
แต่นั่นไม่ได้ทำให้มันเป็น agent ที่ไว้ใจได้
agent จริงๆ ยังต้องค้นหา context ที่ถูกต้อง ใช้เครื่องมือ รักษา state เคารพสิทธิ์ ตรวจสอบงานของตัวเอง และกู้คืนระบบได้เมื่อสภาพแวดล้อมทำงานไม่เหมือนที่คาดไว้
โมเดลเป็นเพียงเครื่องยนต์ที่ใช้คิด
ส่วน harness คือทุกสิ่งที่เปลี่ยนความคิดนั้นให้กลายเป็นการลงมือทำจริง
1คำขอจากผู้ใช้ (USER REQUEST)2 |3 v4+-----------------------------+5| HARNESS |6| |7| contract context |8| tools state |9| policy verification |10| traces recovery |11+-----------------------------+12 |13 v14 MODEL15 |16 v17สภาพแวดล้อมจริง (REAL ENVIRONMENT)
เอาโมเดลเดียวกันไปใส่ในช่องแชท มันก็จะตอบคำถาม

แต่ถ้าเอาไปใส่ใน repository ที่มี terminal access, tests, เครื่องมือ browser, project memory, การควบคุมสิทธิ์ และ review loop มันจะทำงานจริงได้สำเร็จ
ตัวโมเดลไม่ได้เปลี่ยนไปเลย
แต่ harness ต่างหากที่เปลี่ยน
2. เปลี่ยนทุกคำขอให้เป็น Contract
ภาษาธรรมชาตินั้นยืดหยุ่น
แต่การทำงานแบบอัตโนมัติไม่ควรยืดหยุ่นตาม
คำขออย่างเช่น:
ปรับปรุง onboarding flow ให้ดีขึ้น
ถือว่าโอเคถ้ามีคนนั่งประกบอยู่ข้างๆ โมเดล
แต่ห่วยแตกมากถ้านำมาใช้เป็นคำสั่งในระบบ production
ก่อนที่ agent จะลงมือทำ ให้แปลงคำขอนั้นเป็น task contract ที่มีขอบเขตชัดเจน

1objective: ลดอัตราการหลุดออกจากระหว่าง onboarding23inputs:4 - product brief5 - analytics data6 - repository78constraints:9 - เก็บระบบ authentication ไว้เหมือนเดิม10 - ห้ามเปลี่ยน database schema11 - รักษาพฤติกรรมบนมือถือแบบปัจจุบันไว้1213deliverable:14 - pull request ที่พร้อมให้รีวิว1516done_when:17 - tests ผ่าน18 - analytics event ทำงานถูกต้อง19 - desktop flow ผ่านการรีวิว20 - mobile flow ผ่านการรีวิว2122approval_required:23 - production deployment
ส่วนที่สำคัญที่สุดคือ done_when
ถ้าไม่มีสิ่งนี้ agent อาจแก้ปัญหาเวอร์ชันที่ง่ายกว่านิดหน่อย แล้วบอกอย่างมั่นใจว่างานเสร็จแล้วก็ได้
แต่ถ้ามี การวัดผลความสำเร็จจะเป็นรูปธรรมทันที
agent ไม่ควรถามว่า:
ฉันควรทำอะไรต่อไปดี?
แต่ควรถามว่า:
การกระทำใดที่จะพาสภาพแวดล้อมปัจจุบันเข้าใกล้ผลลัพธ์ตาม contract มากที่สุด?
นั่นคือลูปการทำงานที่แข็งแกร่งกว่ามาก
3. ให้แผนที่กับ Agent ไม่ใช่ Context Window ขนาดยักษ์
ปฏิกิริยาทั่วไปเวลา agent ทำพลาดคือการยัด context ให้โมเดลมากขึ้น
เอกสารมากขึ้น
ประวัติการสนทนามากขึ้น
ไฟล์มากขึ้น
ผลลัพธ์จากเครื่องมือมากขึ้น
สุดท้าย agent ได้รับทุกอย่าง แต่เข้าใจน้อยลง
context ไม่ใช่พื้นที่เก็บข้อมูล
แต่มันคืองบความสนใจ (attention budget)

แทนที่จะโยนทั้งโปรเจกต์ลงไปในการรันทุกครั้ง ควรให้แผนที่เล็กๆ แก่ agent เพื่อบอกว่าข้อมูลที่มีประโยชน์อยู่ที่ไหน
1PROJECT MAP23product rules -> docs/product/4architecture -> docs/architecture.md5frontend -> apps/web/6backend -> services/api/7tests -> tests/8commands -> docs/commands.md9security -> docs/security.md
แล้วค่อยขยายเฉพาะตอนที่จำเป็นจริงๆ
1TASK2 |3 v4PROJECT MAP5 |6 v7RELEVANT SYSTEM8 |9 v10EXACT FILES11 |12 v13LOCAL INSTRUCTIONS
แหล่งข้อมูลต้นฉบับเรียกสิ่งนี้ว่า progressive disclosure: harness ควรโหลดข้อมูลเพิ่มเติมเพราะงานต้องการมัน ไม่ใช่แค่เพราะข้อมูลนั้นมีอยู่
เป้าหมายไม่ใช่การยัด context ให้มากที่สุด
แต่คือการดึงสัญญาณที่มีประโยชน์ออกมาให้ได้มากที่สุด
4. วาง Gateway กั้นระหว่างโมเดลกับเครื่องมือ
โมเดลที่มีเครื่องมือ 20 ตัว ไม่ได้เก่งขึ้น 20 เท่าโดยอัตโนมัติ
มันอาจจะมีวิธีพังเพิ่มขึ้นอีก 20 แบบต่างหาก
เครื่องมือทุกตัวควรมี contract ของตัวเอง
1TOOL: edit_file23INPUTS4path5patch67PRECONDITIONS8path ต้องมีอยู่จริง9path ต้องอยู่ใน workspace1011SUCCESS12patch ถูกนำไปใช้แล้ว13ส่ง diff กลับมา1415FAILURE16error แบบมีโครงสร้าง17ห้ามเขียนทับบางส่วน1819RISK20ย้อนกลับได้
จากนั้นเส้นทางการทำงานจะกลายเป็น:
1MODEL PROPOSES2 |3 v4GATEWAY VALIDATES5 |6 v7POLICY AUTHORIZES8 |9 v10TOOL EXECUTES11 |12 v13HARNESS RECORDS RESULT
โมเดลเป็นคนตัดสินใจว่าจะทำอะไร
ส่วน harness เป็นคนตัดสินว่าการกระทำนั้นถูกต้อง อนุญาต และปลอดภัยหรือไม่

ความแตกต่างนี้สำคัญมากเมื่อเครื่องมือสามารถส่งข้อความ แก้ไขระบบ production ใช้เงิน หรือลบข้อมูลได้
tool gateway ที่ดียังช่วยเพิ่ม timeout, ตรวจสอบ arguments, จำกัด file path, จัดรูปแบบ error ให้เป็นมาตรฐาน และทำให้การ retry ปลอดภัยขึ้นด้วย
เครื่องมือที่ดีช่วยลดจำนวนสิ่งที่โมเดลต้องเดา
5. ย้าย Memory ออกไปจากการสนทนา
การสนทนาไม่ควรเป็นที่เก็บข้อมูลหลักของระบบ
agent ที่ทำงานนานๆ จะชนขีดจำกัด context, คราช, รีสตาร์ท หรือส่งงานต่อให้ session อื่นในที่สุด
ถ้าการตัดสินใจสำคัญทุกอย่างอยู่แค่ใน transcript ระบบงานจะเปราะบางมาก
ให้แยกเก็บ state ถาวรไว้ต่างหาก

1{2 "task_id": "feature_042",3 "status": "verifying",4 "current_step": "mobile_check",56 "completed": [7 "implementation",8 "unit_tests",9 "desktop_check"10 ],1112 "decisions": [13 "reuse existing export endpoint",14 "preserve current date format"15 ],1617 "artifacts": [18 "export.csv",19 "desktop-after.png"20 ],2122 "open_risks": [23 "mobile toolbar may overflow"24 ],2526 "next_action": "render mobile viewport"27}
ระบบที่มีประโยชน์จะแบ่ง memory ออกเป็น 4 หมวด:
1FACTS2ความรู้ที่คงที่34DECISIONS5สิ่งที่เลือกไปแล้วและเหตุผล67STATE8ตอนนี้การรันไปถึงไหนแล้ว910LESSONS11ความล้มเหลวที่ควรส่งผลต่อการรันครั้งถัดไป
agent session ถัดไปควรสืบทอด state ของงาน ไม่ใช่เรื่องย่อของการสนทนาก่อนหน้า
6. ใช้หลักฐานเป็นด่านสุดท้ายก่อนจบงาน
การที่ agent บอกว่า "เสร็จแล้ว" ไม่ได้แปลว่างานเสร็จจริง

มันก็เป็นแค่อีกหนึ่งผลลัพธ์จากโมเดล
harness ต้องการหลักฐานที่สังเกตได้
1CLAIM EVIDENCE23"แก้บั๊กแล้ว" test ที่เคยตกตอนนี้ผ่าน45"หน้าเว็บใช้งานได้" browser flow ทำงานจนจบ67"ข้อมูลถูกต้อง" ค่าตรงกับ source89"migration ปลอดภัย" dry run + rollback ผ่าน1011"งานเสร็จแล้ว" ทุก acceptance check ผ่าน
ใช้ deterministic checks ก่อนเสมอ
1syntax2 |3 v4types5 |6 v7focused tests8 |9 v10integration tests11 |12 v13visual / semantic review14 |15 v16human approval
อย่าไปถามโมเดลอีกตัวในเรื่องที่ compiler, test, schema หรือ database query พิสูจน์ได้แล้ว
ใช้โมเดลสำหรับการตัดสิน
ใช้ระบบ deterministic สำหรับข้อเท็จจริง
โมเดลสร้าง artifact ขึ้นมา
สภาพแวดล้อมสร้างหลักฐานเกี่ยวกับ artifact นั้น
ส่วน harness ตัดสินว่าหลักฐานนั้นเพียงพอหรือไม่
7. แยกคนสร้างออกจากคนตรวจสอบ
การรีวิวงานตัวเองยังมีอีกปัญหาหนึ่ง
agent ที่สร้างข้อผิดพลาด มักจะพกสมมติฐานชุดเดิมเข้ามาใช้ในการรีวิวด้วย

สถาปัตยกรรมที่แข็งแกร่งกว่าจะแยก worker กับ verifier ออกจากกัน
1BUILDER2 |3 v4creates candidate5 |6 v7VERIFIER8 |9 +-- checks contract10 +-- searches for missing cases11 +-- tests unsupported claims12 +-- tries to break result13 |14 +------ PASS ------> ACCEPT15 |16 +------ FAIL ------> RETURN EVIDENCE
verifier ไม่ควรถามว่า:
อันนี้ดูดีไหม?
แต่ควรถามว่า:
อะไรที่จะทำให้สิ่งนี้ยอมรับไม่ได้?
นั่นจะเปลี่ยนการรีวิวจากการยืนยัน เป็นการพยายามหาข้อพิสูจน์หักล้าง
แหล่งข้อมูลต้นฉบับแนะนำอย่างชัดเจนว่าควรให้กระบวนการ verify มีเกณฑ์การปฏิเสธเป็นของตัวเอง และมีอิสระมากพอที่จะตั้งคำถามกับสมมติฐานที่สร้างผลลัพธ์แรกขึ้นมา
8. ย้าย Permissions ออกไปจากโมเดล
กฎบางอย่างไม่ควรพึ่งพาความจำของโมเดลเด็ดขาด
1ห้าม publish โดยไม่ได้รับอนุมัติ2ห้ามเปิดเผย secrets3ห้ามใช้งบเกินที่กำหนด4ห้ามเขียนไฟล์นอก workspace5ห้ามอ้างว่า tests ผ่านถ้ายังไม่ได้รัน
สิ่งเหล่านี้ไม่ใช่คำแนะนำใน prompt

แต่มันคือนโยบาย
ลำดับขั้นสิทธิ์แบบง่ายๆ:
1LOW RISK23read4search5inspect67-> automatic89REVERSIBLE1011edit workspace12run tests13create draft1415-> automatic + trace1617EXTERNAL EFFECT1819send20deploy21purchase2223-> approval required2425IRREVERSIBLE / SENSITIVE2627delete data28rotate credentials29publish globally3031-> hard gate or prohibited
ผลกระทบยิ่งรุนแรง การควบคุมก็ต้องยิ่งเข้มงวด
โมเดลสามารถแนะนำการกระทำได้
แต่ harness เป็นผู้อนุมัติ
และเครื่องมือเป็นผู้ลงมือทำ
ความเป็นอิสระไม่ได้แปลว่าไร้การควบคุม
แต่มันคือเสรีภาพภายในขอบเขตที่ถูกบังคับใช้
9. เลิก Retry แบบหลับหูหลับตา
หนึ่งในนโยบายการกู้คืนที่แย่ที่สุดคือ:
มีอะไรผิดพลาด ลองใหม่สิ
ถ้าไม่มีอะไรเปลี่ยนไป ระบบก็แค่จ่ายเงินเพื่อสร้างความล้มเหลวเดิมซ้ำๆ
ควรจัดประเภทความล้มเหลวก่อนเสมอ

1TOOL TIMEOUT2-> retry ด้วย backoff34INVALID ARGUMENTS5-> ซ่อม tool call67MISSING CONTEXT8-> ดึง source ที่หายไปมา910FAILED TEST11-> ตรวจสอบพฤติกรรมที่ทำให้ตก1213PERMISSION DENIED14-> ขอการอนุมัติ1516CONFLICTING REQUIREMENTS17-> escalate1819UNCHANGED REPEATED FAILURE20-> หยุด
ลูปการทำงานของ agent ที่ดีควรหน้าตาแบบนี้:
1OBSERVE2 |3 v4DECIDE5 |6 v7ACT8 |9 v10MEASURE11 |12 +---- ACCEPT13 |14 +---- REPAIR15 |16 +---- ESCALATE17 |18 +---- STOP
ทุกลูปควรมีขีดจำกัดจำนวนครั้ง เวลา งบประมาณ และขอบเขตการทำลายล้าง
agent ที่เชื่อถือได้ต้องรู้ว่าควรไปต่ออย่างไร
และต้องรู้ด้วยว่าเมื่อไหร่ที่ไม่คุ้มจะลองอีกแล้ว
10. เปลี่ยนคำสั่งที่ต้องพูดซ้ำให้เป็น Infrastructure
สมมติว่าใน prompt เขียนว่า:
รัน formatter ทุกครั้ง
กฎนี้จะแข็งแกร่งขึ้นมากถ้า formatter รันอัตโนมัติ
หรือสมมติว่าคำสั่งบอกว่า:
โค้ด UI ห้ามเข้าถึง database โดยตรง
สิ่งนี้จะแข็งแกร่งกว่าถ้าทำเป็น architecture test ที่ fail ทันทีเมื่อมีการละเมิดกฎ
ลำดับการพัฒนาจะเป็นแบบนี้:
1EXPLANATION2 |3 v4CHECKLIST5 |6 v7TEMPLATE8 |9 v10AUTOMATED CHECK11 |12 v13ENFORCED POLICY
prompt ควรอธิบายเรื่องการตัดสิน
ส่วน harness ควรบังคับใช้เงื่อนไขที่ต้องเป็นจริงเสมอ
ความผิดพลาดที่เกิดซ้ำๆ ทุกครั้งควรถูกเลื่อนลงมาตามบันไดนี้ทีละนิด
จนสุดท้ายโมเดลไม่ต้องจดจำบทเรียนนั้นอีกต่อไป
เพราะสภาพแวดล้อมจะจำไว้ให้มันเอง
11. บันทึกการรันทุกครั้ง
artifact สุดท้ายที่สมบูรณ์แบบอาจซ่อนเส้นทางการทำงานที่เลวร้ายไว้ก็ได้
บางที agent อาจไปดึงข้อมูลจาก source ผิด
บางทีมันอาจเพิกเฉยต่อคำสั่งที่ล้มเหลว
บางทีมันอาจสั่งการภายนอกซ้ำสองรอบ
บางทีมันอาจใช้งบไปสิบเท่าของที่คาดไว้
หรือบางทีมันอาจได้คำตอบที่ถูก ด้วยเหตุผลที่ผิด
จงบันทึกข้อมูลให้มากพอที่จะประกอบร่างเหตุการณ์ที่เกิดขึ้นใหม่ได้
109:14 สร้าง task contract แล้ว209:15 โหลด architecture.md แล้ว309:17 แก้ไข checkout.ts แล้ว409:18 focused test ตก509:21 ซ่อม implementation แล้ว609:22 focused test ผ่าน709:24 integration test ผ่าน809:25 deployment ถูกบล็อก: ต้องรอการอนุมัติ
trace ที่มีประโยชน์ควรประกอบด้วย context sources, tool calls, state changes, verification results, retry reasons, approval decisions, cost และ latency
จุดประสงค์ไม่ใช่การเก็บ log เล่นๆ
แต่เพื่อให้จับจุดที่ล้มเหลวได้เฉพาะเจาะจง
ถ้าขั้นตอนที่ 18 พัง คุณควรซ่อมได้แค่ขั้นตอนที่ 18
โดยไม่ต้องย้อนกลับไปรันใหม่ทั้งหมด
12. ออกใบเสร็จให้ทุกการรัน
อย่าบังคับให้คนมานั่งอ่าน transcript ยาวสี่สิบข้อความ
ให้สรุปผลลัพธ์ออกมาเป็นใบเสร็จสั้นๆ
1OBJECTIVE23แก้ไขปัญหาคูปองถูกใช้ซ้ำ45CHANGED67checkout validation8regression test910VERIFIED1112lint passed13unit tests passed14integration test passed1516NOT VERIFIED1718production payment provider1920RISKS2122legacy mobile client unavailable2324APPROVAL NEEDED2526deploy to staging
นี่ไม่ใช่สรุปเรื่องที่โมเดลอ้างว่าเกิดขึ้น
แต่เป็นสรุปสิ่งที่ harness พิสูจน์ได้ว่าเกิดขึ้นจริง
ความแตกต่างนี้ทำให้ใบเสร็จมีประโยชน์ต่อการรีวิว การส่งต่องาน และ agent sessions ในอนาคต
13. ทำให้ทุกความล้มเหลวช่วยพัฒนา Harness
ทีมส่วนใหญ่มักไปแก้ที่ผลลัพธ์ที่ผิดพลาด
แต่วิธีที่ดีกว่าคือการแก้ระบบที่เปิดช่องให้เกิดความผิดพลาดนั้น
1MISSING CONTEXT2-> ปรับปรุง project map34WRONG TOOL5-> ปรับปรุง routing หรือ tool contract67BAD OUTPUT8-> เพิ่ม validator910REPEATED LOOP11-> เพิ่ม retry cap1213UNSAFE ACTION14-> เพิ่ม permission gate1516LOST DECISION17-> persist state1819UNKNOWN FAILURE20-> ปรับปรุง tracing
นี่คือจุดที่ harness engineering เริ่มทวีคูณคุณค่า
การแก้ผลลัพธ์หนึ่งชิ้นช่วยได้แค่การรันครั้งเดียว
แต่การแก้ harness หนึ่งจุดจะช่วยปรับปรุงการรันทุกครั้งหลังจากนั้น
ระบบ agent ที่ดีที่สุดจะเชื่อถือได้มากขึ้นเรื่อยๆ เพราะความผิดพลาดทิ้ง infrastructure เอาไว้เบื้องหลัง
14. เริ่มจาก Harness ที่เล็กที่สุดแต่ใช้ได้จริง
คุณไม่จำเป็นต้องมี orchestration platform ขนาดใหญ่ตั้งแต่แรก
ให้สร้างเป็นชั้นๆ ไป
1LEVEL 023prompt4model56LEVEL 178task contract9project map10tools1112LEVEL 21314structured state15verification16bounded loop1718LEVEL 31920permissions21traces22recovery23human gates
งาน research สั้นๆ อาจต้องการแค่ prompt กับการรีวิวครั้งเดียว
แต่งาน coding หกชั่วโมงที่ต้องเข้าถึงไฟล์ เข้าถึงเครือข่าย และ deploy ได้ ต้องการอะไรมากกว่านั้นเยอะ
เพิ่มความซับซ้อนเมื่อขอบเขตของความล้มเหลวเรียกร้องให้ทำ
ไม่ใช่เพราะสถาปัตยกรรม agent มันดูเท่
Checklist สำหรับ Harness Engineering
ก่อนจะให้สิทธิ์ agent ทำงานได้อย่างอิสระ ลองถามตัวเองว่า:
1[ ] นิยามความสำเร็จไว้ก่อนเริ่มทำงานหรือยัง?23[ ] agent หา context ที่ถูกต้องได้ไหม4 โดยไม่ต้องโหลดทุกอย่าง?56[ ] เครื่องมือทุกตัวมีจุดประสงค์7 schema และ failure state ชัดเจนไหม?89[ ] การตัดสินใจสำคัญถูกเก็บไว้10 นอกการสนทนาหรือไม่?1112[ ] การจบงานต้องมีหลักฐานประกอบไหม?1314[ ] การกระทำที่มีความเสี่ยงถูกปกป้องด้วยนโยบายหรือเปล่า?1516[ ] ทุกลูปมีขีดจำกัดการ retry หรือไม่?1718[ ] การรันสามารถทำต่อหลังถูกขัดจังหวะได้ไหม?1920[ ] คุณสามารถประกอบร่างการกระทำสำคัญทุกอย่างใหม่ได้หรือไม่?2122[ ] ความล้มเหลวช่วยพัฒนากฎ เครื่องมือ23 test map หรือ permission ไหม?2425[ ] การเปลี่ยนแปลงสุดท้ายสามารถ rollback ได้หรือไม่?
ถ้าหลายข้อตอบว่าไม่ โมเดลที่เก่งขึ้นก็ไม่ได้ทำให้ agent เชื่อถือได้ขึ้นมาโดยอัตโนมัติ
มันอาจแค่ทำให้ระบบพังเร็วขึ้นและแพงขึ้นเท่านั้น
การเปลี่ยนแปลงที่แท้จริง
Prompt engineering ถามว่า:
ฉันควรบอกอะไรกับโมเดล?
Context engineering ถามว่า:
ตอนนี้โมเดลควรรู้อะไร?
ส่วน Harness engineering ถามว่า:
ระบบแบบไหนที่จะปล่อยให้โมเดลลงมือทำ ตรวจสอบงานตัวเอง กู้คืนจากความล้มเหลว และทำงานได้อย่างปลอดภัย?
1PROMPT2-> instruction34CONTEXT5-> working view67HARNESS8-> operating environment910LOOP11-> local correction1213GRAPH14-> coordination
โมเดลจะเปลี่ยนไปเรื่อยๆ
แต่ความได้เปรียบที่ยั่งยืนอยู่รอบๆ ตัวมัน
contract ของคุณจะดีขึ้น
เครื่องมือของคุณจะดีขึ้น
test ของคุณจะดีขึ้น
state ของคุณจะสะอาดขึ้น
permission ของคุณจะปลอดภัยขึ้น
logic การกู้คืนของคุณจะฉลาดขึ้น
ความล้มเหลวของคุณจะกลายเป็น infrastructure
นี่คือวิธีที่โมเดลเก่งๆ จะกลายเป็น agent ที่เชื่อถือได้
และนี่คือ Harness Engineering
ถ้าคุณอ่านมาถึงตรงนี้
บุ๊กมาร์กไกด์นี้ไว้เลย
ติดตามผมบน X: x.com/0xjmori
สมัครรับข่าวสารทาง Substack ของผม: substack.com/@lunarresearcher
ส่งบทความนี้ไปให้คนที่กำลังพยายามแก้ agent พังด้วยการเขียน prompt ให้ยาวขึ้นอ่านดู



![[คำขอโทษ] ผมไม่แนะนำการทำงานฟรีแลนซ์เพื่ออิสรภาพอีกต่อไป](/cdn-cgi/image/width=1920,quality=90,format=auto,metadata=none/https%3A%2F%2Fcms-assets.youmind.com%2Fmedia%2F1790615558140_ndvona_HTQ9s6laYAAX4J7.jpg)

