文档 chevron_right 面向 AI — 编码智能体如何用 Deslop 阻止重复代码

面向 AI

使用与编辑器相同的引擎结果。本页适用于 0.35.0。连接设置见AI 智能体。

动手写之前先检查

调用 find-similar,传入拟写片段,或 path、start_byte 和 end_byte。即使已有实现在仓库中只出现一次,也可以找到它。检查已有重复时,先用 duplicates,再用 cluster-by-id 查看结果。

读取返回的 kind 和源范围:

kind 含义与处理方式
identical 除允许的空白差异外,源文本相同。在适合时复用已有实现。
nearly_identical 重命名、参数化或略有编辑的副本。提取共享代码前检查差异。
loosely_similar 仍有大量复制内容,但改动较大。阅读两个范围。
same_behavior 可选嵌入分析的匹配。相似度不能证明可以互换。
structural_only 仅供参考的形状匹配,不是克隆,不计入重复度指标。

簇的 mass 表示影响大小,不是置信度或提取安全性。簇不携带配对相似度。需要某一对的证据时,明确指定两个端点并请求比较。

MCP 不可用时使用 CLI

检查编辑器的 LSP 是否运行,以及 MCP 是否指向同一工作区。尚未就绪或连接错误不代表没有相似代码。构建不匹配时,应使用配套的捆绑二进制。

单独扫描:

deslop . --notext --nohtml --no-color

读取 .deslop/deslop-report.json。CLI 不能查询尚未写入的片段:修改前查看基线报告,修改后重新扫描,并检查 clusters[].occurrences[] 中的改动路径。复用或整合确认的副本后再扫描。未修改文件可以复用解析缓存,但分析仍考虑全仓库关系。

CLI 也能比较两个已有位置。两个入口都不可用时,应说明限制,不要猜测。

读取 JSON

使用报告内嵌的 schema_doc;MCP 会话中请求一次 schema-doc 即可。解析 JSON,而非文本或 HTML。

字段 含义
metrics.duplication_percent 克隆覆盖行数除以已分析行数,不是检测准确率。
metrics.threshold.breached 是否超过配置的重复率上限。CLI 先写报告,再以 3 退出。
clusters 克隆按质量降序排列,其后是参考信息。
cluster.kind 上表的分类;当前报告使用 kind,不是旧字段 bucket。
cluster.mass / cluster.rank 克隆影响和位置。参考信息质量为零,没有克隆排名。
cluster.severity 诊断级别,与质量和重复百分比独立。
occurrences[].hidden 由报告策略隐藏的位置,不贡献重复行数。

使用字节范围

范围是 [start_byte, end_byte),不包含结束位置,且对应扫描时的源版本。编辑后先刷新分析,再使用偏移量。

稳定的簇 ID

用簇 ID 跨界面标识发现。排名随报告顺序变化;底层克隆内容改变时,ID 也可能改变。

配置仓库

exclude 在分析前移除文件;report_hide 保留分析,但隐藏出现位置。内置规则已覆盖依赖目录、构建产物和常见生成文件。阈值控制是否让 CI 失败,不改变克隆的判定标准。

操作规则

修改前阅读实际出现位置。不能把标签当作保持行为的证明,也不要放宽阈值来隐藏发现。重复若是有意保留,应记录原因。测量限制见准确性透明度;可复用的项目规则见智能体配方。