Article

Slopo: Embedding-basierte Code-Duplikationserkennung

Slopo Code Quality Embeddings AI Developer Tools

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:

  1. – Code indexieren
  2. – Embeddings berechnen (via LiteLLM-kompatiblen Providern)
  3. – 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