Giới thiệu
Slopo là CLI phát hiện code duplication không y hệt bằng embedding models. Nó không chỉ tìm copy-paste chính xác, mà tập trung vào các đoạn code có cấu trúc hoặc ý định gần giống nhau nhưng nằm xa nhau trong codebase.
Cách tiếp cận này hợp với những repo đã sống lâu, nơi logic bị lặp lại qua nhiều module, nhiều ngôn ngữ hoặc nhiều lần refactor nửa chừng.
Tính năng chính
- Hỗ trợ Python, TypeScript, JavaScript, Java, Kotlin, C#, Go và Rust.
- Index code thành các đơn vị phân tích rồi tính embedding cho từng đơn vị.
- Tìm các cặp code có embedding gần nhau, sau đó gom thành cluster.
- Xếp hạng cluster dựa trên similarity và khoảng cách trong codebase.
- Có file ignore để đánh dấu cluster đã review, giúp lần chạy sau chỉ nổi lên phần mới hoặc phần đã thay đổi.
- Dùng LiteLLM để gọi embedding provider, nên có thể chọn model phù hợp với ngân sách và chất lượng mong muốn.
Slopo không khẳng định mọi cluster đều là duplication cần refactor. Nó đưa ra danh sách nghi vấn để con người hoặc AI coding agent kiểm tra tiếp.
Cách sử dụng
Cài bằng uv:
uv tool install slopo
Khởi tạo config:
slopo init
Sau đó chạy pipeline phân tích:
slopo index
slopo embed
slopo analyze
Report tạo ra có thể được đưa cho AI coding agent để lọc false positive, thêm hash vào slopo.ignore.txt, rồi đề xuất refactor cho các cluster thật sự trùng lặp.
Ý nghĩa với Dev
Dev nên quan tâm vì duplication “gần giống nhưng không giống hệt” là thứ review thủ công rất dễ bỏ sót. Với agentic coding, Slopo còn đóng vai trò như một bước chuẩn bị context: thay vì bảo agent “dọn duplication trong repo”, bạn đưa cho nó cluster cụ thể, có ranking và có lịch sử ignore.
Điểm cần cân nhắc là chi phí embedding. Với repo lớn, hãy bắt đầu bằng thư mục hẹp, threshold chặt và model embedding chuyên cho code trước khi quét toàn bộ monorepo.