Bỏ qua, đến nội dung
Skuto

Hướng dẫn

Vì sao AI cứ sửa nhầm file trong dự án của bạn?

Đã đăng:

Bạn nhờ trợ lý AI sửa cái form đăng nhập, thế mà nó lại tự tin chỉnh một file chẳng dính dáng gì tới đăng nhập, hoặc tệ hơn, nhắc tới một file không hề tồn tại. Vừa bực, vừa có cảm giác AI đang làm ăn cẩu thả. Thật ra không phải vậy. AI sửa nhầm file là vì nó không nhìn thấy toàn bộ dự án và đang đoán mò xem mọi thứ nằm ở đâu. Tin vui là cách sửa rất đơn giản, và nó không phải “viết prompt cho hay hơn”. Nó là đưa cho AI một tấm bản đồ về code của bạn. Đây là chuyện đang thật sự diễn ra bên trong.

AI đang làm việc trong bóng tối

Trợ lý AI lập trình không ôm trọn cả codebase trong đầu. Nó làm việc dựa trên một cửa sổ ngữ cảnh có giới hạn, tức một lát cắt của dự án mà nó nhìn thấy tại mỗi thời điểm. Với dự án nhỏ, lát cắt đó có khi là toàn bộ. Nhưng với một dự án thật sự, hàng trăm file, nó chỉ là một mẩu. Thế nên khi bạn bảo “sửa form đăng nhập”, AI buộc phải đoán xem bạn muốn nói tới file nào, dựa vào tên file và các mẫu nó từng gặp.

Phần lớn thời gian nó đoán trúng. Nhưng đoán thì không co giãn nổi theo quy mô: dự án càng lớn, càng ít theo quy ước chung, thì nó càng hay chộp nhầm một file trông có vẻ hợp lý, hoặc dựng ra một tên file nghe rất xuôi tai mà đơn giản là không có thật. Trường hợp thứ hai chính là ảo giác: không phải nói dối, chỉ là tự tin lấp đầy chỗ trống mà nó không thấy được.

Vì sao “cứ cho nó nhiều context hơn” lại phản tác dụng

Bản năng đầu tiên là quăng cả codebase cho AI, cửa sổ càng lớn thì càng ổn chứ gì? Thường là không. Một context khổng lồ mà toàn file sai thì chẳng hơn gì một context bé tí. Điều quan trọng không phải là AI thấy được bao nhiêu code, mà là đúng đoạn code có nằm ngay trước mắt nó hay không. Nhồi tất tần tật vào, file liên quan lại bị chôn trong nhiễu, tìm khó hơn chứ chẳng dễ hơn. Nhắm vào việc cho thật nhiều là nhắm sai chỗ.

Cứ hình dung như chuyện chỉ đường. Đưa cho ai đó toàn bộ bản đồ đường sá cả nước chẳng giúp họ tìm ra một địa chỉ. Nhưng một tấm bản đồ rõ ràng của đúng khu phố này thì có.

Cách sửa thật sự: đưa cho AI một tấm bản đồ

Thứ thật sự có tác dụng là một code map, bản tóm tắt gọn gàng về cấu trúc dự án: có những file, hàm nào, và chúng nối với nhau ra sao. Có tấm bản đồ đó, AI thôi đoán mò. Thay vì “chắc file này tên đại loại là login”, nó nhìn ra “logic đăng nhập nằm ở đây, và nó gọi hai thứ này”, rồi đi thẳng tới đúng chỗ.

Ý tưởng này có dăm ba cái tên và dăm ba công cụ:

  • Repo map, như cái được tích hợp sẵn trong Aider, xếp hạng những phần quan trọng nhất trong code rồi đưa cho AI một dàn ý có cấu trúc.
  • Code knowledge graph, như graphify, dựng nên một tấm bản đồ tra cứu được cho cả dự án, gồm file, hàm và quan hệ giữa chúng, để trợ lý tra thẳng xem mọi thứ nằm đâu thay vì đoán.

Cả hai đều làm chung một việc cốt lõi: thay phỏng đoán bằng hiểu biết thật. Và vì AI đọc một tấm bản đồ nhỏ mà chính xác, thay vì lục tung hàng đống file, chuyện sửa nhầm file và bịa ra tham chiếu giảm hẳn.

Trong thực tế trông thế nào

Một khi trợ lý đã nắm trong tay bản đồ codebase, trải nghiệm đổi khác hẳn:

  • “Sửa form đăng nhập” trúng đúng đoạn code đăng nhập, ngay từ lần đầu.
  • AI thôi nhắc tới những file chẳng hề có ở đó.
  • Nó hiểu một thay đổi ở chỗ này sẽ lan sang chỗ kia thế nào, vì bản đồ đã chỉ rõ các mối nối.

Bạn không còn phải vật lộn với công cụ chỉ vì mấy chuyện điều hướng cơ bản nữa, mà đang làm việc cùng một thứ hiểu rõ địa hình. Đó cũng là lý do chuyện này càng lúc càng quan trọng khi dự án lớn dần: codebase càng phình to, một tấm bản đồ càng bỏ xa kiểu context nhồi nhét.

Trang bị cho AI của bạn để thành công

Sửa nhầm file thường là dấu hiệu AI đang thiếu trang bị cho dự án của bạn, chứ không phải nó là công cụ dở. Công cụ miễn phí AI cho lập trình viên của chúng mình giúp bạn chọn đúng trợ lý, cài đặt cho hệ điều hành của mình, và tạo sẵn một file rules khai báo dự án được tổ chức ra sao ngay từ phiên làm việc đầu tiên. Cho trợ lý một nền móng và một tấm bản đồ, thì “sao nó cứ sửa nhầm file?” thôi còn là câu bạn phải hỏi.

Đọc tiếp

Câu hỏi thường gặp

Vì sao trợ lý AI lập trình lại sửa nhầm file? +

Vì nó không nhìn thấy toàn bộ dự án cùng một lúc và đang đoán mò xem mọi thứ nằm ở đâu. Trợ lý AI làm việc với một cửa sổ giới hạn, nên trên dự án lớn nó hay chộp một file trông hợp lý thay vì đúng file, thậm chí nhắc tới file không hề tồn tại. Cách sửa không phải prompt khéo hơn, mà là đưa cho AI một tấm bản đồ chính xác về cách code được tổ chức.

Context window lớn hơn có giải quyết được không? +

Không đáng tin. Một context khổng lồ mà toàn file sai thì chẳng hơn gì một context nhỏ, điều quan trọng là đúng file có nằm trước mặt AI hay không, chứ không phải nhiều bao nhiêu. Nhồi tất cả vào còn làm mọi thứ tệ hơn vì chôn vùi đoạn code liên quan trong nhiễu. Một tấm bản đồ tập trung ăn đứt việc nhồi cho thật nhiều.

Code map là gì và nó giúp ích thế nào? +

Code map (hay code knowledge graph) là bản tóm tắt gọn về cấu trúc dự án, gồm có những file, hàm nào và chúng kết nối ra sao. Có bản đồ đó, AI tìm đúng chỗ thay vì đoán, nhờ vậy giảm mạnh chuyện sửa nhầm file và bịa tham chiếu. Các công cụ như repo map của Aider và graphify dựng sẵn cho bạn.

Vì sao AI đôi khi bịa ra file không tồn tại? +

Đó là ảo giác: khi AI thực sự không biết bố cục của bạn, nó dự đoán một tên file nghe có vẻ hợp lý dựa trên các mẫu từng thấy, và đoán sai. Chuyện này hay xảy ra hơn trên codebase lớn hoặc lạ. Đưa cho nó một tấm bản đồ thật về dự án sẽ xóa bỏ phần phỏng đoán gây ra lỗi đó.

Bạn đang ở đâu

Điều chỉnh từng công cụ theo nơi bạn ở. Chỉ lưu trên thiết bị này.

Chọn AI của bạn

Bạn đang dùng AI nào?

Chưa chắc? Giúp tôi chọn →