Giới Hạn Phạm Vi Một Tác Vụ Để Nó Không Đi Lạc
Một tự động thất bại theo một cách đặc thù: nó trôi dạt (drift). Bạn yêu cầu một việc, nó "nhiệt tình" tái cấu trúc ba thứ khác, đụng vào những file bạn chưa từng nhắc tới, rồi quay lại với một diff bạn không đọc nổi. Cách khắc phục không phải là một agent thông minh hơn — mà là một bản mô tả công việc (brief) chặt chẽ hơn.
Một tác vụ tự động tốt có bốn phần: một mục tiêu rõ ràng, các ràng buộc cụ thể, một tiêu chí hoàn thành cụ thể, và các rào chắn (guardrails) mà agent có thể tự chạy để kiểm tra. Rào chắn là phần quan trọng nhất, vì đó là hàng rào mà agent không thể trèo qua mà không bị bạn phát hiện.
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.
Bản mô tả công việc này hiệu quả vì nó đóng khung agent lại: các ràng buộc rào chắn những gì nó được phép chạm vào, tiêu chí hoàn thành là một lệnh nó có thể chạy, và vòng lặp kiểm chứng giữ nó trung thực:
┌───────────────────────── 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
└───────────────────────────────────────────────────────────────┘
Có ba điều khiến bản mô tả này khó bị đi lạc. Các ràng buộc vẽ một bức tường quanh những file mà agent được phép chạm vào. Tiêu chí hoàn thành là một lệnh mà ai cũng có thể chạy, không phải là một cảm giác mơ hồ. Và đoạn cuối cho phép nó dừng lại và hỏi thay vì cứ loay hoay — điều này ngăn chặn thảm họa diễn ra chậm rãi, khi một agent cứ "sửa" mọi thứ trong hai mươi phút và để lại cây code còn tệ hơn lúc nó tìm thấy.
Các bài test chính là hàng rào thật sự. Một agent có thể tự chạy test của chính nó sẽ có một vòng lặp phản hồi chặt chẽ, trung thực và phần lớn sẽ ở trong đó; một agent không có cách nào để kiểm tra công việc của mình sẽ tự tin đưa cho bạn thứ gì đó bị hỏng. Nếu bạn chỉ lấy một thói quen từ chương này: cho agent một cách để tự kiểm chứng, và biến việc vượt qua kiểm chứng đó thành định nghĩa của "xong".