กำหนดขอบเขตงานให้เดินหลงไม่ได้
เอเจนต์อัตโนมัติล้มเหลวในแบบเฉพาะตัว: มันเดินหลงทาง คุณขอสิ่งหนึ่ง มันกลับ "ช่วยเหลือ" ด้วยการปรับโครงสร้าง (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) ที่แน่นและซื่อสัตย์ และส่วนใหญ่จะอยู่ในนั้น ส่วนตัวที่ไม่มีวิธีตรวจสอบงานตัวเองจะส่งมอบสิ่งที่พังให้คุณอย่างมั่นใจ ถ้าคุณจะจำนิสัยเดียวจากบทนี้: มอบวิธีให้เอเจนต์ตรวจสอบตัวเองได้ และทำให้การผ่านมันเป็นนิยามของ "เสร็จแล้ว"