/goal trong Claude Code: để Claude tự làm tới khi đạt điều kiện
Tóm tắt
/goal cho Claude Code tự làm hết lượt này tới lượt khác cho tới khi một điều kiện đo được thành sự thật, do một model nhỏ khác chấm. Viết điều kiện có lệnh kiểm tra, ràng buộc và giới hạn lượt, kết hợp auto mode nếu muốn chạy không người trông.
Bạn giao Claude Code "sửa hết lỗi test trong thư mục auth", nó sửa vài chỗ rồi dừng lại hỏi. Bạn gõ "tiếp đi", nó làm thêm một chút rồi lại dừng. Lặp lại mười lần. Lệnh /goal giải quyết đúng chuyện này: bạn đặt một điều kiện hoàn thành, và Claude tự làm hết lượt này tới lượt khác cho tới khi điều kiện đạt, mà không cần bạn nhắc từng bước.
Cơ chế hoạt động
- Sau mỗi lượt, một model nhỏ và nhanh (model "haiku" bạn cấu hình) đọc điều kiện và hội thoại, rồi trả một trong ba kết luận: chưa đạt (Claude làm tiếp, dùng lý do làm gợi ý), đạt (goal tự xoá), hoặc bất khả thi (goal xoá, ghi lý do).
- Điểm hay: người chấm "xong chưa" là một model khác với model đang làm việc.
- Bên dưới,
/goallà một Stop hook dạng prompt, gắn với phiên hiện tại.
/goal tất cả test trong test/auth pass và lint sạch
/goal # xem trạng thái: thời gian, số lượt, token đã dùng
/goal clear # huỷ (stop, off, cancel cũng được)
Viết điều kiện thế nào cho hiệu quả?
Người chấm không tự chạy lệnh hay đọc file; nó chỉ đánh giá dựa trên những gì Claude đã hiển thị trong hội thoại. Vì vậy điều kiện tốt cần:
- Một trạng thái đo được: kết quả test, exit code của build, số file, hàng đợi rỗng.
- Cách chứng minh: ví dụ "
npm testtrả về exit 0", "git statussạch". - Ràng buộc quan trọng: ví dụ "không sửa file test nào khác".
- Giới hạn: thêm "hoặc dừng sau 20 lượt" để không chạy mãi. Điều kiện dài tối đa 4.000 ký tự.
So với /loop và Stop hook
| Cách | Lượt tiếp bắt đầu khi | Dừng khi |
|---|---|---|
/goal | Lượt trước xong | Người chấm xác nhận đạt hoặc bất khả thi |
/loop | Hết một khoảng thời gian | Bạn dừng hoặc Claude tự cho là xong |
| Stop hook | Lượt trước xong | Script hoặc prompt của bạn quyết định |
/goal không đổi permission mode. Muốn chạy không người trông, kết hợp với auto mode: auto mode bỏ prompt cho từng tool, còn /goal bỏ prompt cho từng lượt.
Chạy không tương tác
claude -p "/goal CHANGELOG.md có mục cho mọi PR đã merge tuần này" \
--output-format stream-json --verbose
Không có stream-json, output chỉ in khi vòng lặp kết thúc nên trông như bị treo.
Rủi ro và lưu ý
- Điều kiện mơ hồ = chạy lãng phí: "code sạch đẹp" không đo được; người chấm có thể không bao giờ cho đạt.
- Tốn token theo số lượt: phí của người chấm thường không đáng kể, nhưng các lượt làm việc thì có. Luôn đặt giới hạn số lượt.
- Tự dừng khi không tiến triển: nếu Claude vài lượt liền không dùng tool, Claude Code dừng vòng lặp và trả quyền điều khiển cho bạn.
- Lỗi phải tự sửa sẽ xoá goal: hết credit, lỗi xác thực, context tràn mà không compact được, model không khả dụng.
Áp dụng thế nào?
- Dev: Dùng cho việc có điểm kết rõ: migrate API tới khi build và test pass, tách file lớn tới khi mỗi file dưới N dòng.
- Tech Lead: Viết sẵn mẫu điều kiện cho team (lệnh kiểm tra, ràng buộc, giới hạn lượt) để goal không chạy vô hạn.
- PM: Mô tả tiêu chí nghiệm thu dạng đo được; đó cũng chính là điều kiện goal tốt.
Nguồn & tham khảo
- Keep Claude working toward a goal — Claude Code Docs