Article
Slopo: Embedding-basierte Code-Duplikationserkennung
Slopo ist ein leichtgewichtiges CLI-Tool, das nicht-exakte Code-Duplikationen mit Embedding-Modellen erkennt. Der Fokus liegt auf dem schwierigsten Duplikationstyp: ähnliche Code-Snippets, die weit voneinander entfernt im Codebase liegen, oft in verschiedenen Modulen oder Dateien.
Das Problem
Exakte Copy-Paste-Duplikationen sind leicht zu erkennen – bestehende Tools finden sie. Duplikate, die nahe beieinander liegen, entdecken menschliche Entwickler oder AI-Assistenten. Aber semantisch ähnlicher Code, der über verschiedene Module verstreut ist? Das ist der schwierigste Fall und oft der schädlichste.
Wie es funktioniert
Slopo berechnet für jede Code-Einheit ein Embedding und sucht nach Paaren mit ähnlichen Vektoren. Ähnlicher Code ist nicht zwingend ein Duplikat – daher werden Paare als potenzielle Duplikate markiert, die bestätigt werden müssen.
Workflow:
- – Code indexieren
- – Embeddings berechnen (via LiteLLM-kompatiblen Providern)
- – Cluster ähnlicher Code-Einheiten generieren
Das Ergebnis sind Cluster von ähnlichen Code-Einheiten, sortiert nach Ähnlichkeit und Distanz im Codebase.
Integration mit AI-Coding-Agenten
Der eigentliche Clou: Die Cluster sollen als Input für AI-Coding-Agenten dienen. Der Agent prüft, ob ein Cluster ein echtes Duplikat ist. Reviewte Cluster werden in markiert – für Refactoring oder Ignorieren.
Unterstützte Sprachen
Python, TypeScript, JavaScript, Java, Kotlin, C#, Go, Rust.
Embedding-Modelle
Die Embeddings werden über externe Provider berechnet. Für beste Ergebnisse empfiehlt der Autor spezialisierte Code-Modelle wie Voyage AI – funktionieren auch mit niedrigen Dimensionen (512). Jeder LiteLLM-kompatible Provider funktioniert.
Fazit
Slopo füllt eine Lücke im Code-Quality-Tooling. Embedding-basierte Duplikationserkennung ist intelligenter als reine Textanalyse. Die Integration mit AI-Agenten macht es zu einem praktischen Workflow-Tool für Refactoring-Projekte. Open Source, AGPL-3.0.
Quelle: GitHub rafal-qa/slopo