Tại sao các Agent lập trình AI thất bại: Khoảng cách then chốt giữa Tệp tin và Dòng mã

Mặc dù các agent lập trình AI ngày càng có khả năng giải quyết các lỗi phần mềm, một nghiên cứu mới cho thấy chúng đang gặp phải vấn đề "định vị" (localization) nghiêm trọng. Chúng có thể điều hướng đến đúng tệp tin trong một kho mã nguồn khổng lồ, nhưng thường xuyên thất bại trong việc xác định các dòng mã cụ thể cần thiết để thực hiện bản sửa lỗi.

Giới thiệu SWE-Explore: Vượt xa khỏi Tỷ lệ sửa lỗi

Từ trước đến nay, hiệu quả của các agent lập trình AI thường được đo lường bằng một chỉ số nhị phân duy nhất: agent đó có sửa được lỗi hay không? Cách tiếp cận này bỏ qua lý do "tại sao" đằng sau một thất bại. Một lần sửa lỗi thất bại có thể có nghĩa là agent đã viết một bản vá lỗi kém, hoặc cũng có thể là agent thậm chí chưa bao giờ xem xét đến logic liên quan.

Để giải quyết điểm mù này, một nhóm nghiên cứu quốc tế, bao gồm các nhà khoa học từ Đại học Giao thông Thượng Hải, đã phát triển SWE-Explore. Khác với các tiêu chuẩn đánh giá (benchmarks) truyền thống, SWE-Explore tách biệt giai đoạn tìm kiếm thượng nguồn (upstream search phase). Nó đánh giá khả năng của một agent trong việc tiếp nhận mô tả lỗi và trả về một danh sách xếp hạng các phần mã cụ thể thực sự liên quan đến vấn đề. Tập dữ liệu này rất sâu rộng, được rút ra từ 848 tác vụ thuộc 203 dự án mã nguồn mở và mười ngôn ngữ lập trình, trong đó Python là ngôn ngữ nổi bật nhất (547 tác vụ).

Khoảng cách về độ chính xác: Thành công ở cấp độ Tệp so với Thất bại ở cấp độ Dòng

Phát hiện đáng kinh ngạc nhất của nghiên cứu là sự chênh lệch khổng lồ giữa độ chính xác ở cấp độ tệp và cấp độ dòng. Khi được thử nghiệm với các agent đa năng như Claude Code, Codex, và OpenHands, kết quả cho thấy rõ:

  • Độ chính xác cấp độ tệp: Các agent hoạt động tốt, xác định thành công các tệp nguồn chính xác và xếp hạng chúng ở mức cao.
  • Độ chính xác cấp độ dòng: Hiệu suất sụt giảm nghiêm trọng. Các agent lập trình đa năng chỉ bao phủ được từ 14% đến 19% số dòng mã thực tế cần thiết cho một bản sửa lỗi.

Điều thú vị là việc chỉ đơn thuần nâng cấp Mô hình Ngôn ngữ Lớn (LLM) nền tảng không giải quyết được vấn đề này. Cho dù sử dụng các mô hình từ OpenAI, Anthropic, Google, Moonshot hay Zhipu, mô hình chung vẫn không đổi: tỷ lệ tìm thấy tệp cao nhưng độ bao phủ dòng mã cực kỳ thấp. Nghiên cứu lưu ý rằng các hệ thống chuyên dụng như CoSIL đã vượt trội hơn các agent đa năng bằng cách coi mã nguồn như một mạng lưới các khối xây dựng liên kết với nhau, cho thấy rằng những thay đổi về kiến trúc quan trọng hơn là sức mạnh thô của mô hình.

Hiệu ứng ngưỡng: Tại sao việc "Đọc nhiều hơn" lại quan trọng

Thông qua các thí nghiệm loại bỏ (ablation experiments) có kiểm soát, các nhà nghiên cứu đã phát hiện ra một "hiệu ứng ngưỡng" liên quan đến ngữ cảnh. Bằng cách thay đổi lượng mã nguồn cốt lõi được cung cấp cho mô hình (từ 0% đến 100%), họ nhận thấy rằng khả năng sửa lỗi không cải thiện theo tỷ lệ tuyến tính.

Đối với các tác vụ dễ hơn, có một điểm bước ngoặt rõ rệt: nếu một agent nhìn thấy ít hơn 50% các vùng mã cốt lõi cần thiết, tỷ lệ sửa lỗi thành công sẽ duy trì ở mức gần bằng không. Một sự nhảy vọt đáng kể trong việc sửa lỗi thành công chỉ xảy ra khi agent có quyền truy cập vào khoảng từ 50% đến 75% ngữ cảnh yêu cầu. Quan trọng là, nghiên cứu cho thấy việc cung cấp mã "nhiễu" không liên quan không gây hại cho hiệu suất nhiều bằng việc thiếu các dòng mã quan trọng. Bài học rút ra cho các nhà phát triển là rất rõ ràng: trong kỷ nguyên của các AI agent, việc cung cấp nhiều ngữ cảnh hơn sẽ tốt hơn là mạo hiểm lọc bỏ các chi tiết thiết yếu.

Các điểm chính cần lưu ý

  • Định vị là nút thắt cổ chai: Các AI agent rất thành thạo trong việc tìm đúng tệp nhưng lại gặp khó khăn đáng kể trong việc xác định chính xác các dòng mã cụ thể cần thiết để sửa lỗi.
  • Mở rộng mô hình không phải là giải pháp vạn năng: Việc nâng cấp lên các LLM mạnh mẽ hơn không khắc phục được khoảng cách về độ chính xác ở cấp độ dòng mã; các phương pháp tiếp cận kiến trúc chuyên biệt như CoSIL sẽ hiệu quả hơn.
  • Quy tắc ngữ cảnh 50%: Sự thành công trong việc sửa lỗi của AI tuân theo một mô hình ngưỡng, đòi hỏi ít nhất 50-75% ngữ cảnh mã liên quan phải hiển thị trước khi các bản sửa lỗi thành công trở nên khả thi.