Muốn đọc hiểu một dự án lạ bằng AI, đừng bắt đầu bằng câu "giải thích toàn bộ dự án này". Cách cho kết quả tốt là đi theo thứ tự mà một lập trình viên lâu năm vẫn đi: xem dự án chạy bằng gì và khởi động từ đâu, chia nó thành vài vùng lớn, lần theo một tính năng có thật, rồi ghi lại những gì đã hiểu thành một trang ghi chú. AI làm nhanh từng bước đó, còn bạn giữ vai người kiểm chứng.
Bài này dành cho người vừa nhận một kho mã đã chạy nhiều năm, người viết ban đầu đã nghỉ, tài liệu gần như không có. Mục tiêu của ngày đầu không phải là hiểu hết, mà là có một tấm bản đồ đủ dùng để ngày thứ hai bạn dám sửa một lỗi nhỏ. Ví dụ trong bài là ví dụ giả định, không lấy từ dự án của công ty nào.
Vì sao hỏi AI "dự án này làm gì" thường cho câu trả lời vô dụng
Trợ lý AI chỉ nhìn được phần mã mà nó được đưa vào ngữ cảnh. Với chatbot thông thường, đó là những đoạn bạn dán. Với trợ lý trong trình soạn thảo hay tác tử dòng lệnh, nó có thể tự mở tệp, nhưng vẫn bị giới hạn bởi độ dài ngữ cảnh và bởi những tệp nó quyết định đọc. Một dự án vài trăm nghìn dòng không lọt vào một lần đọc, nên khi bạn hỏi câu quá rộng, AI trả lời dựa trên tên thư mục, tên tệp và vài tệp nó kịp mở. Kết quả nghe rất trôi chảy, kiểu "đây là ứng dụng web theo mô hình MVC có phần quản trị và API", nhưng gần như không giúp bạn sửa được gì.
Tệ hơn, câu trả lời rộng thường lẫn suy đoán với sự thật. AI thấy thư mục tên services thì đoán có tầng dịch vụ, thấy tệp queue thì đoán có hàng đợi xử lý nền, trong khi có thể thư mục đó đã bỏ dở từ ba năm trước. Mã cũ nổi tiếng vì tên gọi không còn khớp với việc nó làm. Vì thế quy tắc đầu tiên là chia câu hỏi thành những câu có thể kiểm chứng được bằng cách mở tệp ra xem, và luôn yêu cầu AI nêu tên tệp, số dòng làm căn cứ cho mỗi nhận định.
Lộ trình năm bước cho ngày đầu
Thứ tự dưới đây đi từ ngoài vào trong. Mỗi bước có một câu hỏi rõ cho AI và một việc bạn tự làm để kiểm lại.
- Nhận diện công nghệ. Cho AI đọc các tệp khai báo phụ thuộc và cấu hình ở gốc dự án (ví dụ tệp khai báo gói của Node, tệp composer của PHP, tệp requirements hay pyproject của Python, tệp cấu hình Docker). Hỏi: dự án dùng ngôn ngữ, phiên bản, khung nào; cần dịch vụ ngoài nào như cơ sở dữ liệu, bộ nhớ đệm, hàng đợi. Bạn kiểm bằng cách mở chính các tệp đó.
- Tìm điểm vào. Hỏi AI chương trình bắt đầu chạy từ đâu: tệp nào nhận yêu cầu web, lệnh nào chạy tác vụ định kỳ, tập lệnh nào chạy khi triển khai. Một dự án web cũ thường có nhiều điểm vào hơn bạn nghĩ, gồm cả những tệp cron gọi bằng đường dẫn trực tiếp.
- Chia vùng. Yêu cầu AI nhóm các thư mục thành năm đến tám vùng theo chức năng và nói vùng nào phụ thuộc vùng nào. Đây là bước AI làm nhanh hơn người nhiều nhất.
- Chọn một tính năng có thật để lần theo. Ví dụ "khách đặt hàng". Lần từ nút bấm trên giao diện tới câu lệnh ghi vào cơ sở dữ liệu. Bài riêng trong danh mục này hướng dẫn kỹ bước lần theo luồng chạy.
- Ghi bản đồ. Cuối ngày, nhờ AI gom những gì đã xác nhận thành một trang ghi chú: công nghệ, điểm vào, các vùng, luồng đã lần, các câu hỏi còn treo. Bạn xoá mọi dòng chưa được kiểm chứng.
Năm bước này thường gói gọn trong một buổi nếu dự án cỡ vừa. Phần tốn thời gian nhất không phải là hỏi AI, mà là tự mở tệp để xác nhận từng câu trả lời, và đó chính là lúc bạn thật sự học dự án.
Đưa ngữ cảnh cho AI: dán gì và không dán gì
Nếu dùng chatbot trên trình duyệt, bạn phải tự chọn phần mã để dán. Thứ có giá trị nhất để dán đầu tiên là danh sách thư mục hai, ba tầng, có thể lấy bằng lệnh tree -L 3 -d trên Linux hoặc macOS (cần cài gói tree) hoặc bằng lệnh liệt kê của git, git ls-files, rồi lọc bớt. Danh sách này ngắn mà cho AI cái nhìn toàn cục. Tiếp theo là tệp khai báo phụ thuộc, tệp cấu hình định tuyến nếu có, và một hai tệp điểm vào.
Nếu dùng trợ lý trong trình soạn thảo hoặc tác tử dòng lệnh, nó tự đọc được kho mã trên máy bạn. Khi đó việc của bạn là giới hạn phạm vi: chỉ mở thư mục dự án, không mở cả thư mục chứa nhiều dự án khác, và nói rõ trong câu lệnh rằng nó chỉ được đọc, chưa được sửa. Một số công cụ có chế độ chỉ đọc hoặc chế độ lập kế hoạch; tên gọi và vị trí nút thay đổi theo phiên bản, bạn nên kiểm trong tài liệu của công cụ đang dùng.
Có ba thứ không bao giờ đưa vào AI ở bước này: tệp chứa mật khẩu và khoá như tệp .env hay tệp cấu hình có thông tin kết nối cơ sở dữ liệu thật, bản sao dữ liệu khách hàng, và mã nguồn mà hợp đồng hoặc quy định công ty cấm đưa ra ngoài. Trước khi bắt đầu, hỏi trưởng nhóm công ty cho phép dùng công cụ AI nào với kho mã này. Nếu câu trả lời là chưa được, bạn vẫn áp dụng được lộ trình trên với một mô hình chạy cục bộ hoặc làm tay.
Bộ câu lệnh mẫu cho từng bước
Các câu lệnh dưới đây viết để dùng nguyên văn, chỉ thay phần trong ngoặc vuông. Điểm chung là luôn bắt AI dẫn tệp làm căn cứ và tách rõ điều chắc với điều đoán.
- Đây là danh sách thư mục và tệp khai báo phụ thuộc của một dự án [ngôn ngữ]. Hãy cho biết dự án dùng khung gì, phiên bản bao nhiêu, cần dịch vụ ngoài nào. Với mỗi ý, ghi tên tệp làm căn cứ. Ý nào chỉ là phỏng đoán thì ghi rõ "phỏng đoán".
- Liệt kê mọi điểm vào của chương trình: yêu cầu web, lệnh dòng lệnh, tác vụ định kỳ, tập lệnh triển khai. Với mỗi điểm vào, nêu tệp và hàm đầu tiên được gọi. Chưa sửa gì.
- Nhóm các thư mục sau thành tối đa tám vùng chức năng. Với mỗi vùng: tên gọi ngắn, các thư mục thuộc vùng, vùng này gọi sang vùng nào. Đánh dấu thư mục nào trông như bỏ dở hoặc không còn được gọi tới.
- Dựa trên những gì đã xác nhận trong cuộc trò chuyện này, viết một trang ghi chú cho người mới vào dự án. Không thêm điều gì chưa được nhắc. Cuối trang liệt kê các câu hỏi còn chưa có lời đáp.
Câu lệnh cuối quan trọng hơn vẻ ngoài của nó. Chỉ cần thêm cụm "không thêm điều gì chưa được nhắc", trang ghi chú bớt hẳn những đoạn văn hoa mỹ AI tự nghĩ ra cho đủ bố cục.
Phân biệt câu trả lời đáng tin và câu trả lời cần kiểm lại
Không phải câu nào của AI cũng cần kiểm kỹ như nhau. Bảng dưới giúp bạn phân bổ thời gian kiểm chứng.
| Loại nhận định của AI | Mức tin | Cách kiểm nhanh |
|---|---|---|
| Dự án dùng khung, ngôn ngữ, thư viện gì | Cao nếu có trích tệp khai báo | Mở tệp khai báo, xem đúng tên và phiên bản |
| Tệp nào là điểm vào | Trung bình | Đặt một dòng ghi log ở đó, chạy thử trên máy, xem có in ra không |
| Thư mục này làm gì | Trung bình, hay đoán theo tên | Tìm nơi gọi tới thư mục đó bằng lệnh tìm kiếm trong kho mã |
| Thư mục này không còn dùng | Thấp | Không xoá vội; xem bài về mã chết trong danh mục này |
| Luồng dữ liệu đi từ A tới B | Thấp tới trung bình | Chạy thật một lần, theo dõi log hoặc dùng trình gỡ lỗi |
| Nhận định về lý do thiết kế | Rất thấp | Hỏi người cũ, đọc lịch sử commit; AI không biết ý định của người viết |
Dòng cuối là chỗ người mới hay vấp nhất. AI có thể khẳng định rất thuyết phục rằng "hàm này được viết lặp lại để tối ưu hiệu năng", trong khi thật ra người viết chỉ chép dán vì vội. Lý do thiết kế chỉ tìm được trong lịch sử commit, phiếu công việc cũ, hoặc trong đầu người đã viết.
Dùng lịch sử git như một nguồn ngữ cảnh thứ hai
Mã nguồn cho bạn biết hệ thống đang làm gì, còn lịch sử git cho biết vì sao nó thành ra như vậy. Lệnh git log --oneline -- [đường dẫn tệp] liệt kê các lần sửa một tệp, git log -p -- [đường dẫn tệp] kèm nội dung thay đổi, còn git blame [tệp] cho biết từng dòng được sửa lần cuối ở commit nào. Bạn có thể dán vài chục dòng lịch sử commit của một tệp quan trọng vào AI và hỏi: những lần sửa này cho thấy tệp đã thay đổi chức năng ra sao, giai đoạn nào sửa dồn dập.
Một mẹo đơn giản: tệp được sửa nhiều nhất thường là trái tim của dự án, hoặc là chỗ hay hỏng nhất, hoặc cả hai. Lệnh git log --name-only --pretty=format: | sort | uniq -c | sort -rn | head -20 đếm số lần mỗi tệp xuất hiện trong lịch sử. Đưa danh sách đó cho AI, kết hợp với bản đồ vùng đã có, bạn biết ngay nên đọc kỹ tệp nào trước. Lời nhắn commit cũ nhiều khi chỉ ghi "fix" hay "update", nhưng chính sự cẩu thả đó cũng là thông tin: vùng ấy cần đọc chậm và cần kiểm thử trước khi đụng vào.
Biến ghi chú ngày đầu thành tài liệu sống của dự án
Trang ghi chú cuối ngày đầu có giá trị lâu dài nếu bạn đặt nó vào chính kho mã, ví dụ một tệp ghi chú kiến trúc ở thư mục tài liệu. Người mới sau bạn đọc được, và các trợ lý AI cũng đọc được: nhiều trợ lý viết mã hỗ trợ một tệp hướng dẫn dự án mà chúng tự nạp mỗi lần làm việc. Cách đặt tên và vị trí tệp đó khác nhau giữa các công cụ, bạn kiểm tài liệu của công cụ mình dùng.
Giữ tài liệu ngắn và đúng hơn là dài và đầy đủ. Một trang gồm: dự án chạy bằng gì, chạy trên máy cá nhân thế nào, các điểm vào, bản đồ vùng, ba luồng quan trọng nhất, những cái bẫy đã biết. Mỗi khi phát hiện tài liệu sai, sửa ngay trong cùng commit với đoạn mã liên quan. Tài liệu sai còn nguy hiểm hơn không có tài liệu, vì AI và người mới đều tin nó.
Sau tuần đầu, bạn có thể đo mức hiểu của mình bằng một bài kiểm tra nhỏ: tự trả lời năm câu về dự án không mở AI, rồi đối chiếu với mã. Câu nào sai cho biết vùng nào bạn mới chỉ đọc lời giải thích của AI mà chưa thật sự hiểu. Đọc hiểu mã cũ là kỹ năng của bạn, AI chỉ rút ngắn quãng đường tìm đúng chỗ cần đọc.
Câu hỏi thường gặp
Có nên cho AI đọc toàn bộ kho mã một lần không?
Với dự án nhỏ vài nghìn dòng thì được, nhưng dự án lớn sẽ vượt giới hạn ngữ cảnh và AI tự chọn những gì nó đọc. Câu trả lời khi đó thiếu mà không báo thiếu. Đi từng bước từ danh sách thư mục, tệp khai báo rồi tới điểm vào cho kết quả đáng tin hơn.
Công ty cấm đưa mã lên chatbot thì còn dùng AI được không?
Vẫn có hướng: dùng công cụ AI mà công ty đã duyệt, dùng mô hình chạy trên máy cá nhân, hoặc chỉ hỏi AI về khung và thư viện công khai mà không dán mã nội bộ. Luôn hỏi trưởng nhóm trước, vì quy định mỗi nơi khác nhau và vi phạm có thể là vấn đề hợp đồng.
AI bảo một thư mục không còn dùng, có xoá được ngay không?
Không nên. AI thường kết luận dựa trên việc không tìm thấy lời gọi trực tiếp, trong khi mã cũ hay được gọi qua cron, qua đường dẫn web, qua tên lớp ghép bằng chuỗi. Cần đối chiếu log máy chủ và chạy thử trước khi xoá.
Ngày đầu nên dành bao nhiêu thời gian đọc mã trước khi sửa lỗi đầu tiên?
Không có con số chung. Mốc hợp lý là khi bạn chạy được dự án trên máy mình, biết điểm vào của tính năng cần sửa và biết có kiểm thử nào bảo vệ vùng đó không. Với dự án cỡ vừa, nhiều người đạt mốc này trong một đến hai ngày nếu có AI hỗ trợ.
Làm sao biết AI đang bịa về dự án?
Dấu hiệu dễ thấy nhất là nhận định không kèm tên tệp, hoặc tên tệp và hàm mà bạn tìm không ra. Yêu cầu AI trích dẫn căn cứ cho mọi ý và tự kiểm vài ý bất kỳ. Nếu sai một hai chỗ, coi cả câu trả lời là phỏng đoán.
Có nên nhờ AI viết lại tài liệu cho cả dự án ngay từ đầu?
Nên đợi. Tài liệu viết khi chưa ai hiểu dự án thường đầy suy đoán trình bày như sự thật. Cứ để tài liệu lớn dần theo những gì đã được kiểm chứng qua công việc thật, mỗi lần một trang ngắn.