slopo

поиск неточных дублей кода по эмбеддингам через CLI

github.com ↗
 Публичный пост

Что это

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-ключом и отдельной тарификацией

Откомментируйте первым 👇

😎

Автор поста открыл его для большого интернета, но комментирование и движухи доступны только участникам Клуба

Что вообще здесь происходит?


Войти  или  Вступить в Клуб