Cách Viết Prompt Debug Bug Khó Với AI Mà Không Phụ Thuộc Mù Quáng
Giới Thiệu
Rất nhiều người dùng AI để debug bằng cách paste exception rồi hỏi: "lỗi gì vậy?". Cách đó đôi khi cho câu trả lời nhanh, nhưng cũng rất dễ đưa bạn vào một vòng sửa mò. Bug khó thường không nằm ở message lỗi. Nó nằm ở ngữ cảnh: request nào gây ra lỗi, dữ liệu đầu vào ra sao, state cache thế nào, job nào chạy trước, và điều gì mới thay đổi.
AI chỉ hữu ích khi prompt buộc nó suy luận từ bằng chứng thay vì đoán.
Mục lục
- Một prompt debug tốt cần gì
- Vì sao prompt debug kém thường đưa bạn đi sai hướng
- Khung prompt debug thực dụng
- Ví dụ với cache invalidation và queue race condition
- Những điều không nên paste vào prompt
- Checklist debug với AI và FAQ
Một Prompt Debug Tốt Cần Gì?
Ít nhất nên có 5 phần:
- Mô tả triệu chứng quan sát được
- Bước tái hiện bug
- Đoạn code liên quan ngắn gọn
- Log hoặc stack trace thật
- Điều bạn đã thử nhưng không hiệu quả
Ví dụ:
Tôi đang debug lỗi trong Laravel 12.
Triệu chứng: người dùng cập nhật profile thành công nhưng avatar URL cũ vẫn hiển thị trong 5-10 phút.
Tái hiện: PATCH /settings/profile, sau đó reload dashboard.
Hạ tầng: Redis cache, Horizon queue, Cloudflare CDN.
Tôi nghi cache invalidation chưa đúng.
Hãy đưa ra 3 giả thuyết có khả năng cao nhất, mỗi giả thuyết kèm theo một bước kiểm tra rẻ nhất để xác minh.
Không đề xuất sửa code trước khi liệt kê giả thuyết.
Điểm mạnh của prompt này là nó ép AI suy nghĩ theo giả thuyết và kiểm chứng, gần hơn với cách một developer senior debug thật.
Đừng Yêu Cầu Sửa Ngay
Khi bug chưa rõ nguyên nhân, việc yêu cầu AI sửa ngay rất nguy hiểm. Nó sẽ tối ưu cho việc đưa ra câu trả lời nghe hợp lý nhất, không phải nguyên nhân đúng nhất.
Thứ nên hỏi đầu tiên là:
- 3 giả thuyết mạnh nhất là gì?
- log nào cần thêm?
- biến nào cần dump?
- đâu là bước kiểm tra rẻ nhất để loại trừ một giả thuyết?
Vì Sao Prompt Debug Kém Thường Đưa Bạn Đi Sai Hướng
Prompt kiểu đây là stack trace, fix giúp tôi có ba vấn đề:
- không nói rõ triệu chứng thực tế
- không nói bug tái hiện thế nào
- không cho AI biết bạn đang nghi phần nào của hệ thống
Khi thiếu ba thứ đó, AI sẽ bám vào pattern phổ biến nhất trong dữ liệu train. Điều này có thể hữu ích với lỗi rất đơn giản, nhưng với bug khó thì thường chỉ tạo thêm đường vòng.
Một Khung Prompt Debug Thực Dụng
Bạn có thể dùng khung này cho hầu hết bug production hoặc integration bug:
Hệ thống: Laravel 12 + Redis + Horizon + MySQL
Triệu chứng: ...
Bước tái hiện: ...
Điều mới thay đổi gần đây: ...
Giả thuyết hiện tại của tôi: ...
Log/stack trace: ...
Hãy đưa ra:
1. 3 giả thuyết mạnh nhất
2. bước xác minh rẻ nhất cho từng giả thuyết
3. log hoặc metric cần thêm nếu chưa đủ dữ liệu
Không đề xuất sửa code trước khi hoàn thành 3 phần trên.
Khung này buộc AI hỗ trợ đúng thứ bạn cần nhất ở giai đoạn đầu: tư duy điều tra.
Chia Bug Thành Nhóm Sẽ Khiến AI Hữu Ích Hơn
AI debug hiệu quả hơn nhiều nếu bạn nói rõ bug thuộc nhóm nào:
- bug dữ liệu
- bug cache
- bug queue/job ordering
- bug authorization
- bug query/performance
- bug external API integration
Mỗi nhóm sẽ dẫn đến kiểu giả thuyết và kiểu kiểm tra rất khác nhau.
Một Ví Dụ Với Cache Invalidation
Cache::tags(['user', 'profile'])->remember(
"user:{$user->id}:profile",
now()->addMinutes(10),
fn () => $user->fresh()
);
Nếu update profile xong mà quên Cache::tags(...)->flush() đúng scope, AI có thể đoán ra hướng này khá nhanh. Nhưng bạn vẫn phải xác nhận bằng log, TTL và luồng request thực tế.
Ví Dụ Với Queue Và Race Condition
Một loại bug khác rất khó là bug do thứ tự xử lý job. Ví dụ:
- request cập nhật post
- job A regenerate summary
- job B invalidate search index
- worker xử lý không đúng thứ tự bạn nghĩ
Trong trường hợp này, prompt nên nói rõ:
- có bao nhiêu job liên quan
- queue nào xử lý chúng
- có retry hay not
- có event nào được fire sau update
Nếu không cho AI bối cảnh đó, nó sẽ rất khó đưa ra giả thuyết đáng dùng.
Hãy Yêu Cầu AI Liệt Kê Bằng Chứng Cần Có
Một mẹo rất hữu ích là không chỉ hỏi giả thuyết, mà hỏi luôn bằng chứng cần có để xác minh hoặc bác bỏ giả thuyết đó.
Ví dụ:
Với mỗi giả thuyết, hãy liệt kê log line, database query, cache key hoặc metric nào cần kiểm tra.
Điều này biến AI từ một công cụ suy đoán thành một công cụ hỗ trợ lập kế hoạch debug.
Những Điều Không Nên Paste Thẳng Vào Prompt
- secrets hoặc API keys
- dữ liệu cá nhân của người dùng
- toàn bộ database dump
- log quá dài mà không cắt phần liên quan
Prompt tốt là prompt đủ ngữ cảnh, không phải prompt chứa mọi thứ bạn có.
Khi Nào AI Nên Dừng Ở Vai Trò Checklist
Với các bug liên quan đến:
- tiền bạc
- permission nhạy cảm
- compliance
- mất dữ liệu
AI nên được dùng để gợi ý hướng kiểm tra và câu hỏi cần đặt ra, không nên là nơi đề xuất patch cuối cùng nếu chưa có bằng chứng mạnh.
Kỹ Thuật Quan Trọng Nhất
Hãy buộc AI phân biệt giữa:
- giả thuyết
- bằng chứng
- hành động kiểm tra
- hướng sửa
Nếu một câu trả lời trộn cả 4 thứ này vào nhau, nó thường ít đáng tin.
Checklist Debug Với AI
- Tôi đã mô tả triệu chứng thực tế hay mới chỉ dán exception?
- Tôi đã nói rõ cách tái hiện chưa?
- Tôi đã cho biết phần hạ tầng liên quan chưa?
- Prompt có yêu cầu AI đưa ra giả thuyết trước, hay nhảy ngay vào fix?
- Tôi có đủ log/metric để xác minh điều AI đề xuất không?
FAQ
Có nên paste cả file code dài vào prompt không?
Thường không. Hãy cắt đúng phần liên quan và bổ sung mô tả flow xung quanh. Quá nhiều code không liên quan thường làm prompt loãng hơn, không tốt hơn.
AI có giúp debug performance issue không?
Có, đặc biệt nếu bạn đưa cho nó query, timing, số lượng records và nơi gọi query. Nhưng cuối cùng bạn vẫn phải xác nhận bằng profiler, query log hoặc EXPLAIN thật.
Key takeaways:
- Prompt debug tốt phải có triệu chứng, cách tái hiện, log và phần hạ tầng liên quan.
- Hãy yêu cầu AI đưa ra giả thuyết và bước kiểm chứng trước khi đề xuất fix.
- Với bug queue, cache và race condition, context vận hành quan trọng hơn stack trace thuần túy.
- AI hữu ích nhất khi giúp cấu trúc quá trình điều tra, không phải khi đoán root cause thay bạn.
- Với bug nhạy cảm như permission, tiền bạc hay mất dữ liệu, AI chỉ nên ở vai trò checklist hỗ trợ.
Kết Luận
AI có thể là một cộng sự debug khá tốt nếu bạn dùng nó để cấu trúc suy nghĩ, không phải để đoán thay mình. Prompt tốt cho bug khó không phải prompt xin lời giải ngay, mà là prompt ép AI cùng bạn điều tra đúng cách.