Что это
Slopo — консольная утилита на Python для поиска нетривиального дублирования кода: не точных копий, а похожих по смыслу фрагментов, разбросанных по разным модулям репозитория. Инструмент строит эмбеддинги для блоков кода и ищет пары с близкими векторами, группируя находки в кластеры похожего кода, ранжированные по степени схожести. Поддерживает Python, TypeScript, JavaScript, Java, Kotlin, C#, Go, Rust, PHP и Elixir.
Для участников клуба это способ быстро находить в своих и чужих репозиториях скопипащенные и слегка переписанные куски логики, которые обычный поиск по тексту или linter не замечает — полезно при чистке кода после вайб-кодинга, когда ИИ-ассистент мог сгенерировать похожие решения в разных местах. Работает локально через CLI, эмбеддинги считаются через LiteLLM-совместимых провайдеров (например, Voyage AI), поэтому потребуется свой API-ключ.
Проект компактный (около 200 звёзд на GitHub, 3 релиза), распространяется с открытым исходным кодом под лицензией AGPL-3.0, требующей открывать модификации при распространении сервиса на его основе.
Возможности
- Поиск похожих, но не идентичных фрагментов кода через эмбеддинги, а не точное сравнение текста
- Поддержка 10 языков: Python, TypeScript, JavaScript, Java, Kotlin, C#, Go, Rust, PHP, Elixir
- Кластеризация найденных дублей по степени сходства и расстоянию в репозитории
- Настраиваемые пороги similarity_threshold и rerank_threshold для фильтрации результатов
- Поддержка произвольных моделей эмбеддингов через LiteLLM (в т.ч. Voyage AI)
- Простой CLI-воркфлоу: init → index → embed → analyze
- Установка одной командой через пакетный менеджер uv
- Открытый исходный код на Python, лицензия AGPL-3.0
Цена: сам инструмент бесплатный и с открытым кодом (AGPL-3.0); для расчёта эмбеддингов нужен сторонний провайдер (например, Voyage AI) со своим API-ключом и отдельной тарификацией