rafal-qa/slopo
Embedding-based code duplication detector
解决的问题
Slopo 是一个 CLI 工具,旨在在代码库中发现非完全一致的代码重复。虽然标准工具可以轻松识别完全复制粘贴的代码,但 Slopo 专注于“相似”代码——即写法相似但不完全相同,且通常分散在不同模块或大文件中,难以被人类或传统工具检测到的代码片段。
工作原理
Slopo 使用嵌入模型(embedding models)将代码单元表示为向量。它为每个代码单元计算嵌入,并识别出余弦相似度较高的配对。这些相似的单元被聚类分组,然后根据其相似度和在代码库中的距离进行重新排序(对距离较远的单元给予奖励)。最终生成的聚类会以报告形式呈现,供 AI 编码代理审查,以确认是否为需要重构的实际重复代码。
适用人群
希望在多语言大型项目中(支持 Python、TypeScript、JavaScript、Java、Kotlin、C#、Go、Rust、PHP 和 Elixir 等)通过识别和重构冗余、相似代码来减少技术债务的开发者和团队。
主要亮点
- 基于嵌入的检测:通过 Jina AI、Voyage AI 或本地 Ollama 模型使用机器学习模型,检测语义相似性而非精确文本匹配。
- 增量式重索引:仅更新已更改的文件来重建索引,节省时间和资源。
- AI 代理就绪:生成的报告专为 AI 编码代理的过滤和处理而设计。
- 灵活配置:通过 LiteLLM 支持多种嵌入提供方,并可调节相似度和复杂度阈值。
相关
- Dispatch
- Dispatch
- 项目
- 项目
- 项目