Để debug bằng AI, mô tả hành vi mong đợi và thực tế, cung cấp mã tối thiểu cùng lỗi đã khử bí mật, rồi yêu cầu giả thuyết trước khi sửa. Áp dụng thay đổi nhỏ trên nhánh riêng, chạy test tái hiện và regression, kiểm tra diff; chỉ nhận bản sửa khi hiểu nguyên nhân. Ngữ cảnh an toàn giúp thu hẹp giả thuyết.
Mục lục

- AI hỗ trợ debug ở đâu?
- Quy trình sáu bước
- Mẫu prompt
- Ngữ cảnh an toàn, đủ dùng
- Ví dụ chẩn đoán
- Xác minh bản sửa
- Khi kết quả không như ý
- Câu hỏi thường gặp
- Nguồn tham khảo
AI hỗ trợ debug ở đâu?

AI coding assistant có thể giải thích stack trace, đọc đoạn code, đề xuất nguyên nhân khả dĩ, gợi ý test tái hiện và nhận xét bản sửa. Nó hữu ích khi bạn cần một góc nhìn thứ hai hoặc chưa quen thư viện. Nhưng phản hồi là giả thuyết, không phải kết luận: model có thể bỏ qua runtime, cấu hình, dữ liệu thực tế hoặc thay đổi gần đây vốn quyết định lỗi.
Phân biệt ba khái niệm trước khi hỏi. Triệu chứng là điều quan sát được như test fail hay HTTP 500. Nguyên nhân là điều kiện khiến triệu chứng xảy ra, có thể nằm ở caller, dữ liệu hoặc môi trường. Bản sửa là thay đổi loại bỏ nguyên nhân mà không phá hành vi hợp lệ khác. Một câu trả lời chỉ chặn exception nhưng không tìm lý do dữ liệu sai có thể làm lỗi biến mất khỏi log mà hệ thống vẫn sai.
GitHub Docs hướng dẫn người dùng Copilot cung cấp lỗi và bối cảnh dự án để hỏi chẩn đoán. Tài liệu mô tả hành vi của Copilot; các nguyên tắc tái hiện, thử giả thuyết và xác minh dưới đây là quy trình kỹ thuật tổng quát, không phụ thuộc vào một nhà cung cấp.
Quy trình sáu bước

- Tái hiện: ghi lệnh, bước, đầu vào mẫu đã làm sạch và kết quả. Xác nhận lỗi xuất hiện ổn định; nếu lỗi chập chờn, ghi tần suất và điều kiện.
- Thu bằng chứng: lấy thông báo lỗi, stack trace liên quan, log trước/sau, test fail, phiên bản runtime và vùng mã trực tiếp liên quan. Phân biệt dữ liệu bị lược bỏ với nội dung thực.
- Khử bí mật: xóa token, cookie, mật khẩu, khóa riêng, dữ liệu khách hàng và đường dẫn nội bộ. Thay bằng giá trị giả nhất quán; chỉ gửi mã theo chính sách nhóm và điều khoản công cụ đã rà soát.
- Hỏi chẩn đoán trước: yêu cầu tối đa vài giả thuyết, bằng chứng hỗ trợ, cách bác bỏ và phép thử nhỏ. Chưa yêu cầu model sửa code ngay.
- Thử một thay đổi: sau khi xác nhận giả thuyết, đề xuất diff hẹp trong nhánh riêng. Không cho phép xóa assertion, tắt xác thực, bắt mọi lỗi rồi bỏ qua hoặc thêm dependency ngoài ý muốn.
- Chứng minh: chạy test tái hiện trên code gốc để chắc nó bắt lỗi; chạy lại sau sửa, test lân cận, regression suite và kiểm tra diff. Người phát triển review trước khi merge.
Quy trình này giúp tách việc “AI nói hợp lý” khỏi việc “bằng chứng cho thấy thay đổi đúng”. Lưu lệnh kiểm thử và kết quả trong mô tả thay đổi để reviewer có thể lặp lại.
Mẫu prompt debug có cấu trúc
Thay phần trong ngoặc vuông bằng thông tin đã được phép chia sẻ. Đưa dữ liệu tối thiểu nhưng đủ liên hệ đầu vào, stack trace và đoạn mã.
Bạn hỗ trợ chẩn đoán, chưa sửa mã cho đến khi tôi yêu cầu.
- Mục tiêu/hành vi mong đợi: [mô tả]
- Hành vi thực tế và tần suất: [mô tả]
- Cách tái hiện: [lệnh và bước với dữ liệu giả]
- Môi trường: [runtime, framework, hệ điều hành nếu liên quan]
- Log đã khử bí mật: [dán phần liên quan]
- Mã tối thiểu: [dán hàm/test liên quan]
- Thay đổi gần đây đã biết: [nếu có]
Trước tiên hãy nêu tối đa ba giả thuyết và gắn từng giả thuyết với bằng chứng. Nêu thông tin còn thiếu và phép thử phân biệt chúng. Không khẳng định nguyên nhân nếu chưa có bằng chứng. Sau khi tôi xác nhận, đề xuất diff nhỏ nhất và test tái hiện/regression. Không thêm thư viện, không xóa kiểm tra bảo mật, không yêu cầu bí mật.
Yêu cầu AI giải thích test nào sẽ thất bại nếu giả thuyết đúng. Nếu mọi giả thuyết đều không thể kiểm tra, đầu vào còn thiếu hoặc câu hỏi quá rộng. Hãy thu hẹp ví dụ thay vì dán thêm toàn bộ repository.
Ngữ cảnh an toàn, đủ dùng
Stack trace cho thấy nơi lỗi nổi lên, chưa chắc nơi gây lỗi. Với exception, giữ frame liên quan và phần thông báo cần thiết; với race condition, nêu thứ tự sự kiện và thời gian tương đối; với lỗi …
