Domain 3: Claude Code Configuration & Workflows·Task 3.5
Tinh chỉnh lặp lại cho tới khi đúng
Bốn cách để mỗi vòng sửa với Claude Code đều tiến lên. Đưa ví dụ đầu vào và đầu ra, viết test trước, để Claude hỏi lại, và biết khi nào gom lỗi một lần.
- 6 phút đọc
- Đối chiếu docs 02/11/2026
- 2 nguồn
Đọc xong bạn nắm được
- Đưa 2–3 ví dụ đầu vào và đầu ra khi mô tả bằng lời bị hiểu mỗi lần một kiểu
- Viết test trước rồi sửa dần bằng cách gửi Claude các test bị fail
- Để Claude phỏng vấn bạn trước khi làm việc ở lĩnh vực bạn chưa quen
- Gom các lỗi liên quan nhau vào một tin nhắn, sửa lần lượt các lỗi độc lập
Ít khi Claude làm đúng ngay lần đầu với một việc phức tạp. Chuyện bình thường là làm, xem kết quả, góp ý, làm lại. Điều quyết định là mỗi vòng góp ý có đưa Claude lại gần kết quả đúng hơn không, hay chỉ làm nó đổi sang một kiểu sai khác.
Bài này giúp bạn trả lời: nên đưa cho Claude thông tin gì, theo cách nào, để mỗi vòng sửa đều tiến lên?
Ví dụ xuyên suốt: chuyển dữ liệu khách hàng của chuỗi phòng khám thú y
Một chuỗi phòng khám thú y đổi phần mềm quản lý. Bạn nhờ Claude Code viết script chuyển dữ liệu chủ nuôi và thú cưng từ file xuất của hệ thống cũ sang hệ thống mới. Trên đường đi, bạn gặp mấy chuyện:
- Bạn dặn "chuẩn hoá số điện thoại". Lần chạy thì Claude bỏ dấu cách, lần thì thêm
+84, lần thì giữ nguyên số 0 đầu. - Có những dòng không ghi ngày sinh của thú cưng. Script chết ở dòng đó.
- Chuỗi muốn thêm tính năng gửi tin nhắn nhắc lịch tiêm phòng. Bạn chưa làm hệ thống gửi tin nhắn hàng loạt bao giờ.
- Sau một lượt chạy thử, bạn thấy ba lỗi cùng lúc.
Đưa ví dụ đầu vào và đầu ra
Vấn đề 1 xảy ra vì "chuẩn hoá" có nhiều nghĩa. Bạn có thể viết thêm cả đoạn giải thích, nhưng mô tả bằng lời vẫn còn chỗ để hiểu khác. Khi đó, cách hiệu quả nhất để nói rõ bạn muốn biến đổi dữ liệu thế nào là đưa ví dụ cụ thể có đầu vào và đầu ra (concrete input/output examples).
Đưa 2–3 ví dụ, chọn sao cho mỗi ví dụ cho thấy một khía cạnh:
Chuẩn hoá số điện thoại theo các ví dụ sau:
"0903 123 456" -> "+84903123456"
"(028) 3822 1234" -> "+842838221234"
"84 912-345-678" -> "+84912345678"Nhìn ba dòng này, Claude thấy ngay: bỏ hết dấu cách, ngoặc, gạch nối; số 0 đầu đổi thành +84; số đã có 84 ở đầu thì chỉ thêm dấu +. Không cần giải thích thêm câu nào.
Viết test trước, sửa theo test bị fail
Thay vì đọc code Claude viết rồi góp ý bằng lời, bạn viết bộ test trước: hành vi mong muốn, các trường hợp biên, cả yêu cầu về tốc độ (ví dụ chuyển 200.000 dòng trong dưới một phút). Rồi bảo Claude viết code cho test chạy qua. Mỗi vòng, bạn gửi lại cho Claude những test bị fail kèm thông báo lỗi.
Đề thi gọi đây là lặp theo test (test-driven iteration). Tài liệu Claude Code cũng khuyên: đưa cho Claude thứ gì đó chạy được và trả về đạt hay không đạt, vì khi đó Claude tự khép được vòng lặp: sửa, chạy kiểm tra, đọc lỗi, sửa tiếp.
Với vấn đề 2, đừng chỉ nói "xử lý trường hợp thiếu ngày sinh". Đưa một ca cụ thể có đầu vào và đầu ra mong muốn:
test("thú cưng không có ngày sinh", () => {
const dong = { ten: "Mít", loai: "chó", ngaySinh: null };
expect(chuyenThuCung(dong)).toEqual({
ten: "Mít", loai: "dog", ngaySinh: undefined, canKiemTra: true,
});
});Ca test này nói rõ điều lời dặn không nói: thiếu ngày sinh thì không được dừng script, không được tự đặt một ngày, mà để trống và đánh dấu để nhân viên kiểm lại.
Để Claude phỏng vấn bạn trước
Vấn đề 3 khác: bạn không biết mình còn thiếu gì. Nếu chỉ bảo "gửi tin nhắn nhắc lịch tiêm trước 3 ngày", Claude sẽ làm đúng câu đó, và những chuyện bạn chưa nghĩ tới sẽ lộ ra khi đã chạy thật.
Cách làm ở đây là để Claude phỏng vấn bạn (interview pattern): bảo Claude hỏi bạn trước khi làm. Ví dụ câu bạn gõ: "Hỏi mình từng câu về tính năng nhắc lịch tiêm cho tới khi đủ để viết đặc tả." Claude có thể hỏi những điều như:
- Gửi lúc mấy giờ? Khách ở múi giờ khác thì sao?
- Khách đã báo không muốn nhận tin thì lưu ở đâu?
- Nhà mạng báo lỗi thì có gửi lại không, gửi lại mấy lần, làm sao để khách không nhận hai tin giống nhau?
- Một chủ nuôi có năm con mèo cùng lịch tiêm thì gửi một tin hay năm tin?
Tài liệu Claude Code gợi ý cách làm tương tự: khi chưa biết chính xác mình muốn gì, để Claude phỏng vấn cho tới khi viết được đặc tả và lưu ra file, rồi mở một phiên mới để làm từ đặc tả đó.
Gom vào một tin nhắn hay sửa lần lượt
Vấn đề 4: chạy thử thấy ba lỗi. Gửi cả ba trong một tin nhắn, hay sửa từng lỗi?
Tuỳ vào việc sửa lỗi này có ảnh hưởng tới lỗi kia không:
| Các lỗi | Cách làm | Vì sao |
|---|---|---|
| Liên quan nhau: ngày giờ bị lệch múi giờ, việc sắp xếp lịch hẹn dựa trên ngày giờ đó, và báo cáo lịch theo tuần dựa trên kết quả sắp xếp | Một tin nhắn, mô tả kỹ cả ba và mối liên quan | Sửa riêng từng lỗi thì sửa lỗi sau có thể làm hỏng lỗi trước; Claude cần thấy cả ba để sửa cho khớp |
| Độc lập: sai chính tả trong mẫu email, thiếu cột ghi chú khi xuất file, nút xuất file đặt sai chỗ | Sửa lần lượt từng lỗi | Mỗi lỗi một chỗ, sửa xong kiểm được ngay, không lỗi nào kéo theo lỗi nào |
Quy tắc ngắn gọn: lỗi có ảnh hưởng qua lại thì đưa hết vào một tin nhắn chi tiết, lỗi độc lập thì sửa lần lượt.
Anthropic Exam Pro