~/VibeHandbook
PDF ฟรี

บท 19 · 03

กำหนดขอบเขตงานให้เดินหลงไม่ได้

เอเจนต์อัตโนมัติล้มเหลวในแบบเฉพาะตัว: มันเดินหลงทาง คุณขอสิ่งหนึ่ง มันกลับ "ช่วยเหลือ" ด้วยการปรับโครงสร้าง (refactor) อีกสามอย่าง แตะไฟล์ที่คุณไม่เคยพูดถึง แล้วกลับมาพร้อม diff ที่คุณอ่านไม่ออก การแก้ปัญหาไม่ใช่เอเจนต์ที่ฉลาดกว่า — แต่คือบรีฟ (brief) ที่รัดกุมกว่า

งานอัตโนมัติที่ดีมีสี่ส่วน: เป้าหมาย (goal) ที่ชัดเจน ข้อจำกัด (constraints) ที่ระบุไว้ชัด เกณฑ์ความเสร็จสิ้น (done-criterion) ที่เป็นรูปธรรม และ รั้วกั้นความปลอดภัย (guardrails) ที่เอเจนต์รันตรวจสอบเองได้ รั้วกั้นความปลอดภัยเป็นส่วนสำคัญที่สุด เพราะมันคือรั้วที่เอเจนต์ปีนข้ามไม่ได้โดยที่คุณไม่รู้ตัว

Goal: Make the failing tests in tests/checkout/ pass.

Constraints:
- Only edit files under src/checkout/. Do not touch src/auth/,
  the database schema, or anything in config/.
- Do not add new dependencies.
- Do not change the tests themselves — the tests define correct behavior.

Done when:
- `npm test tests/checkout/` is fully green.
- `npm run typecheck` passes.
- `git diff --stat` shows changes only under src/checkout/.

If you get stuck after two real attempts, stop and report what you
tried and what's still failing. Don't paper over a failure to make
the suite go green.

บรีฟนี้ใช้ได้ผลเพราะมันขังเอเจนต์ไว้ในกล่อง: ข้อจำกัดกั้นกำแพงว่าอะไรที่มันแตะได้ เกณฑ์ความเสร็จสิ้นคือคำสั่งที่มันรันได้จริง และวงจรการตรวจสอบ (verify loop) ทำให้มันซื่อสัตย์:

 ┌───────────────────────── SCOPE FENCE ─────────────────────────┐
 │  may edit:  src/checkout/                                      │
 │  ✗ off-limits: src/auth/ · db schema · config/ · the tests    │
 │                                                               │
 │     ┌─────────┐   edit    ┌──────────────┐                    │
 │     │  AGENT  │──────────▶│ src/checkout/ │                   │
 │     │         │◀──────────┤              │                    │
 │     └────┬────┘  run test └──────────────┘                    │
 │          │                                                    │
 │          ▼  npm test + typecheck                              │
 │     ┌─────────────┐   green ──▶ DONE                          │
 │     │ VERIFY LOOP │   red   ──▶ retry (max 2)                 │
 │     └─────────────┘   stuck ──▶ STOP & report ────────────────┼─▶ you
 └───────────────────────────────────────────────────────────────┘

มีสามสิ่งที่ทำให้บรีฟนี้ยากที่จะเดินหลงออกไป ข้อจำกัดวาดกำแพงล้อมรอบไฟล์ที่เอเจนต์แตะได้ เกณฑ์ความเสร็จสิ้นคือคำสั่งที่ใครก็รันได้ ไม่ใช่ความรู้สึก และย่อหน้าสุดท้ายให้สิทธิ์มันที่จะ หยุดและถาม แทนที่จะดิ้นรนต่อไป — ซึ่งป้องกันหายนะแบบสโลว์โมชันที่เอเจนต์ยัง "แก้ไข" สิ่งต่างๆ ต่อไปเรื่อยๆ นานยี่สิบนาทีแล้วทิ้งต้นไม้ (tree) ไว้ในสภาพแย่กว่าตอนที่มันพบ

ชุดทดสอบคือรั้วกั้นตัวจริง เอเจนต์ที่รันชุดทดสอบของตัวเองได้จะมีวงจรป้อนกลับ (feedback loop) ที่แน่นและซื่อสัตย์ และส่วนใหญ่จะอยู่ในนั้น ส่วนตัวที่ไม่มีวิธีตรวจสอบงานตัวเองจะส่งมอบสิ่งที่พังให้คุณอย่างมั่นใจ ถ้าคุณจะจำนิสัยเดียวจากบทนี้: มอบวิธีให้เอเจนต์ตรวจสอบตัวเองได้ และทำให้การผ่านมันเป็นนิยามของ "เสร็จแล้ว"

อยากได้แบบออฟไลน์?

ดาวน์โหลดหนังสือทั้งเล่มเป็น PDF หรือ EPUB — ฟรี