内容查重
快速扫描目录中的重复文本文件,支持精确匹配、规范化匹配和模糊匹配,帮助您发现并清理冗余内容。
功能概览
- 四种预设模式:针对不同场景(日常文档、精确查重、代码库、文本文档)提供一键配置
- 三级匹配粒度:精确匹配(逐字节一致)、规范化匹配(忽略空白/大小写)、模糊匹配(阈值可控)
- 实时进度展示:五阶段扫描流程 + 当前处理文件提示,大目录也不焦虑
- 可视化对比:内置双栏文件内容对比面板,对比冗余文件差异
- 批量清理:选中冗余文件一键移入回收站,支持按组/按文件精细选择
快速上手
基本流程
- 在左侧 查重配置 面板中选择一个 快速预设
- 输入或拖拽要扫描的 目录路径
- 点击 开始扫描,等待扫描完成
- 在右侧 扫描结果 中查看重复文件组,展开查看详情
- 勾选需要清理的冗余文件,点击 删除选中 移入回收站
场景举例
场景:清理 LLM 生成的重复对话记录
- 选择预设「宽松模式」— 它会忽略空白和标点差异,适合 LLM 生成内容
- 拖拽存放对话记录的文件夹到扫描路径输入框
- 点击「开始扫描」
- 扫描完成后,按「浪费空间」排序,优先处理占用空间大的重复组
- 全选冗余文件,一键删除
功能详解
匹配模式
内容查重引擎提供三种匹配粒度,按匹配难度递增排列:
| 匹配类型 | 说明 | 典型用途 |
|---|---|---|
| 精确匹配 | 文件内容逐字节完全一致 | 直接复制的文件 |
| 规范化匹配 | 忽略空白、标点、大小写等格式差异后一致 | LLM 输出、重新排版后的文档 |
| 模糊匹配 | 内容高度相似(相似度 ≥ 阈值)但不完全一致 | 模板填充、版本迭代中的小改版 |
扫描结果中,每个重复组会标注其匹配类型("精确"或"规范化"),方便您判断清理优先级。
预设模式详解
| 预设 | 适用场景 | 关键行为 |
|---|---|---|
| 宽松模式 | LLM 生成文本、文档去重 | 忽略空白 + 标点 + 大小写,尺寸阈值 10% |
| 严格模式 | 精确查重、版权检查 | 仅忽略空白,保留大小写,尺寸阈值 5% |
| 代码模式 | 代码库去重、检测代码拷贝 | 仅扫描代码扩展名,保留缩进换行,区分大小写 |
| 文档模式 | Markdown / TXT 文档去重 | 仅扫描文档扩展名,忽略空白和大小写 |
选择预设后,所有配置项会自动填充,您也可以在「高级选项」中进一步微调。
扫描流程与进度
扫描过程分为五个阶段,面板会实时显示当前阶段的进度:
- 收集文件 — 遍历目录,收集所有文本文件
- 尺寸过滤 — 快速过滤掉尺寸差异过大的文件对
- 快速指纹 — 基于文件头部内容生成指纹,粗筛候选对
- 全文哈希 — 对候选对进行全文哈希比对,确定匹配
- 构建结果 — 整理重复组,生成统计信息
扫描过程中,面板会实时显示「已发现 X 组」重复,无需等待扫描完全结束即可了解大致情况。
结果面板操作
扫描完成后,右侧结果面板提供丰富的操作:
- 搜索文件名 — 输入关键字快速定位特定重复组
- 筛选匹配类型 — 只查看精确匹配或规范化匹配的组
- 排序方式 — 按浪费空间 / 相似度 / 文件数排序
- 展开查看 — 点击重复组,展开查看组内所有文件
- 文件对比 — 点击相似文件旁的对比按钮,在弹窗中对比两个文件内容
- 精细选择 — 在组内逐一勾选需要清理的冗余文件
每组中有一个 代表文件(带有皇冠图标),它是该组中最早或最完整的文件,对比和删除时以此为参照。
文件删除
删除操作会将选中的文件 移入系统回收站,不会永久删除,您可以随时从回收站恢复。删除后,结果面板会自动移除已删除的文件并更新统计信息。
高级用法
自定义配置
在「高级选项」中,您可以微调扫描参数:
| 参数 | 说明 | 推荐值 |
|---|---|---|
| 扩展名白名单 | 只扫描指定扩展名的文件,留空扫描所有文本文件 | 如 ts,js,vue,py |
| 忽略模式 | Glob 忽略模式,跳过不需要的目录 | 默认已含 node_modules、.git 等 |
| 最大文件大小 | 超过此大小的文件跳过扫描 | 默认 50 MB |
| 尺寸差异阈值 | 文件大小差异超过此比例的不予比对 | 默认 5%,宽松模式 10% |
通过 AI 助手调用
内容查重工具注册了 scanDuplicates 方法,AI 助手可以直接调用。例如:
请扫描 D:\projects\my-app\src 目录下的重复代码,使用代码模式。AI 助手会自动调用查重引擎并返回格式化结果,包含扫描统计和重复组摘要。
规范化选项详解
四个规范化选项控制匹配时的"宽容度":
- 忽略空白字符 —
true时,foo bar和foobar视为相同 - 忽略标点符号 —
true时,你好!和你好视为相同 - 区分大小写 —
false时,Hello和hello视为相同 - 保留换行结构 — 代码模式下建议开启,文档模式下关闭
常见问题
扫描结果中显示了很多"跳过文件",是什么意思?
扫描过程中,某些文件会因为以下原因被跳过:
- 文件大小超过「最大文件大小」限制
- 文件不在「扩展名白名单」中
- 文件路径匹配了「忽略模式」
- 文件不是文本文件(二进制文件)
跳过的文件会列在结果面板底部,您可以查看具体原因并根据需要调整配置。
为什么有些重复文件被标记为"规范化"而不是"精确"?
"精确匹配"要求文件内容逐字节一致,而"规范化匹配"是在忽略空白、标点、大小写等格式差异后判定为相同的。如果两个文件只是在排版格式上有细微差异(比如缩进风格不同、行尾空格不同),就会被列为规范化匹配。
我可以同时清理多个目录吗?
当前版本一次只扫描一个目录。如果需要清理多个目录,可以分多次扫描。如果多个目录内容存在交叉重复,建议先将它们合并到一个父目录中再进行扫描。
删除的文件去哪了?
所有删除操作都是 移入系统回收站,不会永久删除文件。如果您误删了文件,可以打开系统回收站还原。如果需要永久删除,请在回收站中执行二次清理。
扫描速度慢怎么办?
影响扫描速度的主要因素:
- 文件数量:文件越多,扫描越慢。建议排除
node_modules等大型目录 - 文件大小:大文件的全文哈希耗时较长,可降低「最大文件大小」限制
- 匹配精度:模糊匹配比精确匹配慢,如追求速度可使用严格模式
如果扫描长时间无响应,可以点击「停止扫描」中断操作,调整配置后重试。