Slopo: detector de código duplicado mediante embeddings

Fuentes: Slopo: embedding-based code duplication detector

Slopo es una herramienta de línea de comandos diseñada para localizar fragmentos de código similares que se encuentran dispersos dentro de un mismo proyecto, un tipo de duplicación especialmente difícil de identificar tanto para herramientas tradicionales como para la inspección manual. A diferencia de los detectores clásicos, Slopo calcula un embedding por cada unidad de código y compara los vectores resultantes para encontrar pares cercanos en el espacio semántico; los candidatos se agrupan en clústeres que se ordenan por similitud y por la distancia física que separa los fragmentos en el repositorio. La salida funciona como entrada para un agente de IA de programación, que decide qué clústeres constituyen duplicaciones reales y cuáles pueden descartarse, anotándose los ya revisados en un archivo slopo.ignore.txt versionable.

La herramienta soporta Python, TypeScript, JavaScript, Java, Kotlin, C#, Go y Rust, y se instala de forma aislada mediante uv, el gestor de paquetes de Python, desde PyPI. Para generar los embeddings recurre a proveedores externos compatibles con LiteLLM, como Voyage AI con modelos especializados en código, y acepta claves de API mediante variables de entorno o archivos .env. El flujo de uso se reduce a tres comandos (slopo index, slopo embed y slopo analyze) y produce un informe Markdown con clústeres y detalles por archivo.

Slopo incorpora además reindexado incremental, dos umbrales configurables (similitud coseno y un rerank que prioriza pares separados por más directorios o más líneas) y un umbral mínimo de nodos AST para evitar unidades triviales. Las copias exactas se reportan de forma diferenciada, mostrando una sola vez el código y listando todas las rutas donde aparece.