Nguyen Le PhongNguyen Le Phong

Dùng AI tool để đọc codebase

Một hướng dẫn thực tế về việc dùng AI khi đọc codebase: summary giúp ở đâu, dễ đánh lừa ở đâu, và engineer nên kết hợp AI với kiểm chứng trực tiếp từ source như thế nào.

Giờ đầu tiên trong một codebase lạ có thể yên tĩnh theo cách hơi kỳ lạ. Folder nằm đủ đó. Test có tên. README giới thiệu khá tự tin. Nhưng behavior thật sống rải rác qua route, service, adapter, fixture, và những decision cũ không file nào giải thích trọn vẹn. Đây là lúc một AI tool có thể giống một teammate hữu ích đang ngồi cạnh bản đồ.

Một kỹ sư đối chiếu bản tóm tắt codebase có AI hỗ trợ với sơ đồ phụ thuộc in trên giấy.
AI có thể mở rộng lượt đọc đầu tiên của một codebase, nhưng hiểu biết vẫn tốt hơn khi con người kiểm tra lại bản đồ.

AI hữu ích ở lượt đọc đầu vì nó giảm cảm giác trang giấy trắng. Ta có thể nhờ nó summarize một module, trace entry point có khả năng liên quan, liệt kê file liên quan, hoặc giải thích request có thể đi qua system thế nào. Điều này không có nghĩa câu trả lời đầy đủ. Nó nghĩa là ta có vài cánh cửa đầu tiên để mở thay vì đi lang thang mọi hành lang cùng lúc.

Nguy hiểm nằm ở chỗ một summary trôi chảy có thể đến trước understanding thật. Model có thể mô tả một architecture pattern mà code chỉ làm theo một nửa. Nó có thể bỏ sót feature flag, fallback path, hoặc test helper làm behavior ở production khác đi. Câu chữ nghe có tổ chức trong khi code thật vẫn rối hơn lời giải thích.

Thói quen tốt hơn là xem output của AI như reading plan, không phải verdict. Nếu tool nói payment flow đi qua ba service, hãy mở ba file đó. Nếu nó nói queue idempotent, hãy tìm key và retry behavior. Nếu nó nói một module là legacy, hãy hỏi bằng chứng nào hỗ trợ label đó. Giá trị không chỉ nằm ở summary. Giá trị nằm ở tốc độ nó đưa ra hypothesis để ta kiểm chứng.

Prompt tốt nên cụ thể. Thay vì hỏi giải thích repo này, hãy hỏi trace cách một order mới đi từ HTTP request tới database write và liệt kê file đã dùng làm evidence. Thay vì hỏi design này tốt không, hãy hỏi domain rule được enforce ở đâu, và caller nào có thể bypass nó. Loại câu hỏi thứ hai giữ conversation bám vào source, không chỉ vào taste.

AI cũng giúp so sánh. Ta có thể nhờ nó contrast hai module giống nhau, tìm naming inconsistency, hoặc chỉ ra nơi test mô tả cùng behavior bằng ngôn ngữ khác nhau. Điều này hữu ích vì đọc codebase không chỉ là đọc từng file. Nó là nhận ra những hình dạng lặp lại và quyết định chúng intentional hay accidental.

Vẫn có những việc cần con người đọc chậm. Security boundary, money movement, data deletion, migration behavior, và permission xứng đáng được inspect trực tiếp. Ở các khu vực này, AI có thể giúp gom context, nhưng không nên trở thành nguồn confidence cuối cùng. Source code, test, log, và production behavior vẫn là evidence thật.

Workflow lành mạnh giống cuộc trò chuyện giữa speed và care. Để AI mở rộng vùng tìm kiếm. Để editor, test, và judgment thu hẹp claim. Ghi chú lại điều gì đã verify và điều gì còn uncertain. Khi chia sẻ phát hiện với teammate, tách rõ phần tool gợi ý và phần code đã chứng minh.

AI tool có thể làm việc đọc codebase bớt cô đơn, nhất là với người mới. Nhưng nó không xóa nhu cầu xây mental model từ từ. Understanding vẫn đến từ việc quay lại source, lần theo behavior, và kiểm tra assumption. Nếu bạn có một prompt hoặc thói quen làm việc đọc codebase bình tĩnh hơn, mình muốn cùng so sánh note.

Bạn thấy bài viết thế nào?