AI code assistant lỗi: Công cụ mạnh nhưng không phải chân lý
AI code assistant lỗi là tình huống các trợ lý lập trình tự động như Claude Code hay Copilot tạo ra hoặc không phát hiện được bug trong mã nguồn, dẫn đến việc chương trình vẫn hỏng dù câu trả lời nghe rất thuyết phục, buộc lập trình viên phải kiểm tra thủ công, viết thêm mã gỡ lỗi và dùng kinh nghiệm để xác nhận giải pháp thay vì tin tưởng mù quáng vào kết quả từ máy. AI coding tools đã khiến người không phải lập trình viên dễ dàng dựng prototype nhỏ và “vibe coding” hơn nhiều so với một năm trước. Nhưng khi hệ thống hỏng, khoảng cách giữa câu trả lời trơn tru và bug thực sự bắt đầu lộ rõ. Những công cụ như Claude Code cho thấy độ tin cậy cao trong việc đọc file và chỉ ra bug, nhưng ngay cả chúng cũng không thể bảo đảm sửa được mọi lỗi trong mọi ngữ cảnh. Với bug phức tạp AI, việc hỏi lại nhiều lần, đổi cách diễn đạt hay thêm ngữ cảnh không bảo đảm máy sẽ chạm đúng vào nguyên nhân gốc. Câu chuyện gần đây quanh nhân Linux và các file HTML nhỏ bị “bẻ lỗi” có chủ đích cho thấy một điều: tự động hóa lập trình là bước tiến lớn, nhưng nó không thay thế được óc phê phán và kỷ luật kiểm thử của con người.

Phiên gỡ lỗi địa ngục của Linus Torvalds: AI dừng, người tiếp tục
Một lỗi trong trình điều khiển đồ họa Intel Xe khiến Linus Torvalds trải qua một trong những phiên gỡ lỗi khó chịu nhất, nhưng AI đã giúp ông xử lý phần lớn công việc nặng và cuối cùng tìm ra nguyên nhân chỉ nằm ở một dòng mã. Lỗi này xuất hiện trên một số GPU Intel Battlemage G21, khiến trình quản lý hiển thị GDM liên tục khởi động lại. Mỗi lần hệ thống lên rồi lại sập, AI lại khẳng định vấn đề “không thể và không thể giải quyết được” và đề nghị dừng điều tra để viết báo cáo lỗi. Đây là khoảnh khắc cho thấy lập trình viên AI giới hạn ở khả năng phán đoán: công cụ làm được phần việc kỹ thuật nặng – từ bổ sung mã gỡ lỗi, phân tích kết quả, đến xử lý dữ liệu lặp đi lặp lại – nhưng quyết định tiếp tục truy bug khi mọi dấu hiệu cho thấy bế tắc lại đến từ con người. Torvalds không chấp nhận kết luận của máy. Ông buộc AI thêm log, thử nhiều bước kiểm tra mới và lặp lại chu trình qua 24 bản vá gỡ lỗi cùng 18 lần khởi động nhân Linux. Cuối cùng, nguyên nhân đơn giản đến mức đáng xấu hổ: một đoạn mã dùng round_up() thay vì round_down(), khiến vùng bộ nhớ được tính sai và GDM cứ thế khởi động lại. Bản sửa lỗi hiện đã nằm trong nhân Linux 7.3 và được đánh dấu để chuyển ngược về các nhánh ổn định. Câu chuyện này không chứng minh AI vô dụng; nó chứng minh rằng với bug phức tạp AI, nếu lập trình viên không cứng đầu, hệ thống sẽ dừng lại đúng ở chỗ máy bảo: “hết đường”.

Cùng một bug, bốn AI: độ tin cậy của Claude Code chỉ là tương đối
Một nhà thiết kế đã cố ý phá một file HTML nhỏ với ba tính năng, chỉnh cho hai trong số đó hỏng: toggle đổi chế độ billing không cập nhật nội dung, và nút chuyển mode ở góc không phản ứng khi click. Sau đó, người này đưa nguyên file và cùng một prompt cho Claude Code, Codex, Antigravity và một mô hình chạy cục bộ. Đây là bài kiểm tra trực tiếp về Claude Code độ tin cậy và sự nhất quán giữa các công cụ tự động hóa lập trình. Claude Code đọc file chặt chẽ, chỉ ra cả hai bug với số dòng, biến và thuộc tính liên quan, đồng thời phát hiện thêm một lỗi ẩn: ký tự "/mo" bị hardcode ở ba chỗ, khiến chế độ yearly luôn hiển thị sai đơn vị. Khi được yêu cầu sửa, nó thêm helper function, nối vào các handler click và viết lại khối CSS cho mode switch, chạy trơn ngay lần đầu. Codex thì đi xa hơn: không chỉ tìm đúng gốc lỗi mà còn nhận ra biến billing được gán nhưng không dùng vào render, số liệu yearly là tổng năm nên gắn với "/mo" sẽ gây hiểu nhầm, và các nút toggle không thể hiện trạng thái cho screen reader. Theo báo cáo thử nghiệm, ba trong bốn công cụ đã sửa được file, nhưng chỉ một trong số chúng đọc file kỹ ngay từ đầu. Điều này nên trở thành câu nói trích dẫn treo trên màn hình mọi nhóm dev dùng AI: “Ba công cụ sửa được file, một công cụ thực sự đọc nó trước khi sửa”. Nó tóm gọn một sự thật khó chịu: cùng một bug, mỗi mô hình lại cho mức hiểu khác nhau, nên độ tin cậy không thể xem là đồng nhất giữa các trợ lý AI.
Khi AI vấp: Antigravity, lỗi agent và ảo tưởng tự động hóa
Trường hợp Antigravity cho thấy mặt tối rõ ràng hơn của tự động hóa lập trình. Trong bài test HTML, phiên đầu chạy trên một mô hình được mô tả là "Pro Low" cho chẩn đoán ở mức chấp nhận được, nhận ra cả hai bug và nguyên nhân của chúng, nhưng lời giải thích mỏng hơn hẳn Claude Code và Codex. Vấn đề nằm ở bước sửa: thay vì sửa trực tiếp file như một agent, nó dán đoạn mã vào khung chat và thừa nhận "the full file keeps getting cut off". Một tác vụ bị báo là FAILED với không có output nào được ghi nhận. Tấm gương này nhắc chúng ta rằng AI code assistant lỗi không chỉ ở mức logic của mã, mà còn có thể ở tầng công cụ: pipeline agent, quyền truy cập file, hay các ràng buộc bảo mật. Ngay cả khi chuyển mô hình, người test nhận được thông báo "Agent execution terminated due to error" chỉ sau một giây. Lần thử thứ ba, tăng mức reasoning và khởi động hội thoại mới, công cụ mới hoạt động ổn hơn. Nhưng từ góc nhìn lập trình viên, thông điệp quá rõ: phụ thuộc hoàn toàn vào một agent để sửa file là một ảo tưởng. Dù giao diện có thông minh đến đâu, bạn vẫn cần một quy trình thủ công song song để kiểm chứng và để phòng khi agent… không động vào được chính file mà bạn muốn sửa.
Giữ hoài nghi, tăng kiểm thử: vai trò không thể thay thế của con người
Từ Linux cho đến file HTML mẫu, điểm chung là AI luôn làm tốt phần “công việc nặng”: sinh mã gỡ lỗi, đọc file dài, phân tích dữ liệu test nhiều vòng và viết báo cáo chi tiết với trạng thái PASS/FAILING, dòng lỗi, hành vi mong đợi và hành vi thực tế kèm đoạn mã minh hoạ. Nhưng ngay cả trong lời kể về phiên gỡ lỗi địa ngục của Torvalds, câu nhấn mạnh vẫn là: công cụ có thể thực hiện một lượng lớn công việc kỹ thuật, nhưng việc đánh giá khi nào một kết luận là đáng tin và khi nào cần tiếp tục nghi ngờ vẫn phụ thuộc vào con người. Khi AI cho rằng không còn khả năng giải quyết, chính ông Torvalds là người quyết định tiếp tục. Trong trường hợp Linux driver, AI không tự mình tìm ra dòng mã sai; nó hỗ trợ Torvalds thu hẹp phạm vi thông qua hàng loạt bước kiểm tra. Còn với bộ test HTML, người dùng rút ra kết luận: Codex là lựa chọn đầu tiên cho lần sau, Claude Code là phương án tin cậy cho việc cần nhanh. Đó là cách người dùng đánh giá công cụ, không phải công cụ tự đánh giá mình. Với bug phức tạp AI, phương pháp là: dùng AI như trợ lý, không như trọng tài. Luôn viết thêm test, đọc lại tài liệu, giữ kỷ luật review và dùng hoài nghi như hệ thống cảnh báo sớm. "AI có thể đảm nhiệm khối lượng lớn công việc kỹ thuật lặp đi lặp lại, trong khi con người vẫn phải đưa ra phán đoán cuối cùng". Đây không chỉ là kinh nghiệm từ một phiên debug; đó nên là nguyên tắc vận hành của mọi nhóm phát triển trong thời kỳ AI lập trình đang bùng nổ.






