~/VibeHandbook
PDF ฟรี

บริการ AI

github.com

AI Coding Harness (สายรัดควบคุมสำหรับ AI โค้ดดิ้ง)

มันคืออะไร

AI coding harness (สายรัดควบคุม/นั่งร้านเชิงบังคับใช้สำหรับ AI โค้ดดิ้ง) คือโครงนั่งร้านสำหรับบังคับใช้กฎและตรวจสอบความถูกต้องที่คุณสร้าง ล้อมรอบ เอเจนต์เขียนโค้ด เพื่อให้มันทำงานได้เองโดยอัตโนมัติโดยไม่ทำให้ระบบพัง ลองนึกภาพความต่างแบบนี้: guardrail (รั้วกันตก) คือนิสัยที่คุณต้องคอยจำเอง (เช่น ต้องรันเทสต์ ต้องอ่าน diff) แต่ harness คือเครื่องจักรที่จำแทนคุณ — มันนั่งอยู่ตรงกลางระหว่างสิ่งที่เอเจนต์ตั้งใจจะทำกับโลกจริง และในทุกขั้นตอนที่อันตราย มันจะบันทึก เตือน หรือบล็อกทันที dancinlab/harness คือเอนจินอ้างอิงที่ไม่ผูกกับโปรเจกต์ใดโปรเจกต์หนึ่ง — เป็นแกนกลาง TypeScript ที่ใช้ร่วมกัน โดยแต่ละ repo จะต่างกันแค่ตรงไฟล์ harness.config.json บวกกับไฟล์ข้อมูล .harness/*.json อีกไม่กี่ไฟล์เท่านั้น

จุดแข็ง

  • เปลี่ยน guardrail ของคุณจากนิสัยที่ทำหรือไม่ทำก็ได้ ให้กลายเป็นกฎที่ถูกบังคับใช้โดยโค้ด — เอเจนต์จะข้ามมันไปไม่ได้
  • คุมทั้งวงจรชีวิตของเครื่องมือ: ก่อนคำสั่งจะรัน ก่อนไฟล์จะถูกเขียน ตอนรับพรอมต์ ตอน และตอน push
  • ledger (สมุดบันทึก) ในที่นี้เหมือนกับสมุดโน้ตที่คุณเขียนเพิ่มบรรทัดใหม่ได้เท่านั้น ไม่มีวันลบบรรทัดเก่าทิ้ง สมุดบันทึกเหล่านี้เขียนในรูปแบบ JSONL ( Lines — หนึ่งอ็อบเจกต์ JSON ต่อหนึ่งบรรทัด) และให้บันทึกที่ตรวจจับการปลอมแปลงได้ (tamper-evident) ของทุกสิ่งที่เอเจนต์เคยทำ เขียนได้ถูกและตรวจสอบได้ง่ายมาก
  • ใส่เข้าไปใน repo ไหนก็ได้: พฤติกรรมมาจากค่าคอนฟิกและข้อมูล ไม่ใช่การ fork โค้ด
  • ออกแบบให้เงียบเมื่อทุกอย่างปกติ เพื่อให้คำเตือนที่ขึ้นมายังคงมีความหมายจริง ๆ

ข้อแลกเปลี่ยน

  • มันคืองานท่อประปา ไม่ใช่เวทมนตร์: harness ทำให้ ต้นทุนของการจับความผิดพลาดถูกลง แต่มันไม่ได้ทำให้ AI ถูกต้องขึ้นเอง
  • ต้องมีการตั้งค่าเริ่มต้นและคอนฟิกที่ปรับให้เข้ากับจุดอันตรายของโปรเจกต์คุณ
  • กฎที่เข้มงวดเกินไปจะสร้างความเสียดทาน วินัยแบบ "bitter-gate" (เลิกใช้กฎที่ไม่มีใครแตะมานานก่อนจะเพิ่มกฎใหม่) มีไว้เพื่อสู้กับปัญหานี้โดยเฉพาะ
  • มีคุณค่าสูงสุดกับโปรเจกต์จริงที่มีผู้ใช้จริง — ถ้าเป็นแค่ต้นแบบทดลองทิ้งขว้าง การใช้ harness จะเกินความจำเป็น

เหมาะกับใคร

เหมาะกับ vibe coding แบบจริงจัง ที่คุณปล่อยให้เอเจนต์แก้ไขไฟล์หลายไฟล์พร้อมกันและรันคำสั่งต่าง ๆ โดยแทบไม่มีคนคอยดูแล และคุณต้องการให้ต้นทุนของการกระทำที่ผิดพลาดต่ำใกล้ศูนย์

หลักการทั้งห้า (H1–H5)

  • H1 สำเร็จให้เงียบ ล้มเหลวให้ดัง — ไม่มีเสียงรบกวนที่จะทำให้คุณเผลอเพิกเฉยไปในที่สุด
  • H2 ห้ามแก้ไขอัตโนมัติเด็ดขาด — เสนอทางเลือก บล็อก หรือเตือนเท่านั้น การตัดสินใจสุดท้ายเป็นของมนุษย์หรือของเอเจนต์ที่ได้รับข้อมูลครบแล้ว
  • H3 Bitter-gate — เลิกใช้กฎที่ไม่มีใครแตะต้องมานานก่อนจะเพิ่มกฎใหม่เข้าไป
  • H4 ขับเคลื่อนด้วยคอนฟิก — เอนจินเดียว แต่มี harness.config.json แยกตามแต่ละโปรเจกต์
  • H5 เป็นแบบ AI-native — ใช้ ledger แบบ JSONL ที่เขียนเพิ่มได้อย่างเดียว ไม่มีทางถูกเขียนทับแบบเงียบ ๆ ได้

หน้าตาเป็นแบบไหน

ตัวอย่างร่างคอนฟิกแบบง่าย ๆ

// harness.config.json
{
  "lockedPaths": ["src/auth/**", "infra/**", ".github/**"],
  "blockCommands": ["rm -rf", "git push --force", "curl * | sh"],
  "verify": ["npm run lint", "npm run typecheck", "npm test"],
  "ledger": ".harness/ledger.jsonl"
}

และลำดับขั้นของ hook ก่อน/หลัง (pre/post) รอบการกระทำหนึ่งครั้งของเอเจนต์

agent intends an action
        │
   ┌────▼─────────────┐
   │ pre  (PreToolUse) │  block dangerous? warn? → else allow
   └────┬─────────────┘
        │  command runs / file is written
   ┌────▼──────────────┐
   │ post (PostToolUse) │  record to JSONL · warn if a locked file was touched
   └────┬──────────────┘
        │  at commit / push
   ┌────▼─────┐
   │  verify  │  lint · typecheck · tests (parallel) → green or stop
   └──────────┘

เอเจนต์ไม่มีทางเลี่ยงประตูนี้ได้เลย — นั่นคือประเด็นทั้งหมดของมัน