Sửa lỗi với Agentic IDE
Sửa lỗi (bug fixing) là một phần không thể thiếu trong quá trình phát triển phần mềm. Việc sử dụng Agentic IDE có thể tăng tốc đáng kể quy trình này bằng cách tự động hóa việc phân tích nguyên nhân gốc rễ và đề xuất giải pháp sửa lỗi, giúp bạn tập trung vào việc đưa ra quyết định cuối cùng.
Quy trình tương tác với AI
Tương tự như các quy trình khác, sửa lỗi với AI là một vòng lặp tương tác. Bạn cung cấp bằng chứng (lỗi), AI đưa ra giả thuyết và cách giải quyết, và bạn kiểm chứng cho đến khi vấn đề được khắc phục hoàn toàn.
Quy trình này gồm 3 bước chính:
- Thu thập Context: Tập hợp mọi thông tin liên quan đến lỗi, đặc biệt là error log.
- Phân tích & Sửa lỗi: Dùng prompt để yêu cầu AI phân tích và đề xuất giải pháp.
- Áp dụng & Kiểm tra lại: Áp dụng bản sửa lỗi và kiểm tra xem lỗi đã được khắc phục chưa.
Bước 1: Thu thập Context
Đây là bước quan trọng nhất. Context càng chi tiết, AI càng có khả năng tìm ra nguyên nhân chính xác.
Context quan trọng nhất khi sửa lỗi là Error Log và Stack Trace.
Các loại context cần thu thập:
- Error Log & Stack Trace: Cung cấp đầy đủ log lỗi. Đây là manh mối chính giúp AI xác định vị trí và nguyên nhân gây ra lỗi.
- Các bước tái hiện lỗi (Steps to Reproduce): Mô tả chính xác các bước đã thực hiện để gây ra lỗi.
- Source Code liên quan: Cung cấp các đoạn code được đề cập trong stack trace hoặc những file bạn nghi ngờ có liên quan.
- Tài liệu thiết kế/Spec chức năng: Cung cấp tài liệu mô tả chức năng bị lỗi. Điều này giúp AI hiểu được mục tiêu và logic đúng của chức năng (đặc biệt quan trọng với các lỗi phức tạp liên quan đến nghiệp vụ).
- Hành vi mong đợi vs. Hành vi thực tế: Mô tả ngắn gọn hệ thống lẽ ra phải hoạt động như thế nào và nó đã hoạt động sai ra sao.
Bước 2: Dùng Prompt để Phân tích & Sửa lỗi
Sau khi đã có đầy đủ context, hãy kết hợp chúng vào một prompt duy nhất để yêu cầu AI phân tích và đưa ra giải pháp.
prompt-sua-loi
Model: coding-model
Prompt: Tôi gặp một lỗi khi người dùng cố gắng cập nhật hồ sơ mà không thay đổi avatar.
Error Log:
TypeError: Cannot read properties of undefined (reading 'path')
at /app/src/services/user.service.ts:120:35
at async UserService.updateProfile (/app/src/services/user.service.ts:115:10)
at async UserController.update (/app/src/controllers/user.controller.ts:85:5)Code tại user.service.ts (dòng 118-122):
if (file) {
const avatarUrl = await this.s3Service.upload(file.path);
user.avatar = avatarUrl;
}Phân tích & Yêu cầu: Lỗi xảy ra ở dòng 120. Có vẻ như file là undefined khi người dùng không tải lên ảnh mới, dẫn đến việc truy cập file.path bị lỗi.
Hãy sửa lại đoạn code trên để chỉ thực hiện việc upload khi file thực sự tồn tại.
Kết quả mong đợi:
AI sẽ phân tích và đề xuất một bản sửa lỗi hợp lý, ví dụ như thêm một khối kiểm tra if (file) để đảm bảo code chỉ chạy khi có file được tải lên.
Bước 3: Áp dụng, Kiểm tra và Lặp lại
Đây là bước kiểm chứng cuối cùng.
- Review và Áp dụng: Xem xét giải pháp AI đề xuất. Nếu hợp lý, hãy ra lệnh cho AI áp dụng thay đổi vào code.
- Kiểm tra lại: Chạy lại ứng dụng và thực hiện lại các bước gây ra lỗi để xác nhận rằng nó đã được khắc phục.
- Lặp lại (nếu cần):
- Nếu lỗi vẫn còn hoặc phát sinh lỗi mới, hãy lặp lại quy trình.
- Lấy error log mới, bổ sung thêm context nếu cần, và tạo một prompt mới để AI tiếp tục phân tích.
Bằng cách tuân thủ quy trình này, bạn có thể tận dụng sức mạnh của AI để giải quyết các lỗi phức tạp một cách nhanh chóng và có hệ thống.