Skip to content

内容查重

快速扫描目录中的重复文本文件,支持精确匹配、规范化匹配和模糊匹配,帮助您发现并清理冗余内容。


功能概览

  • 四种预设模式:针对不同场景(日常文档、精确查重、代码库、文本文档)提供一键配置
  • 三级匹配粒度:精确匹配(逐字节一致)、规范化匹配(忽略空白/大小写)、模糊匹配(阈值可控)
  • 实时进度展示:五阶段扫描流程 + 当前处理文件提示,大目录也不焦虑
  • 可视化对比:内置双栏文件内容对比面板,对比冗余文件差异
  • 批量清理:选中冗余文件一键移入回收站,支持按组/按文件精细选择

快速上手

基本流程

  1. 在左侧 查重配置 面板中选择一个 快速预设
  2. 输入或拖拽要扫描的 目录路径
  3. 点击 开始扫描,等待扫描完成
  4. 在右侧 扫描结果 中查看重复文件组,展开查看详情
  5. 勾选需要清理的冗余文件,点击 删除选中 移入回收站

场景举例

场景:清理 LLM 生成的重复对话记录

  1. 选择预设「宽松模式」— 它会忽略空白和标点差异,适合 LLM 生成内容
  2. 拖拽存放对话记录的文件夹到扫描路径输入框
  3. 点击「开始扫描」
  4. 扫描完成后,按「浪费空间」排序,优先处理占用空间大的重复组
  5. 全选冗余文件,一键删除

功能详解

匹配模式

内容查重引擎提供三种匹配粒度,按匹配难度递增排列:

匹配类型说明典型用途
精确匹配文件内容逐字节完全一致直接复制的文件
规范化匹配忽略空白、标点、大小写等格式差异后一致LLM 输出、重新排版后的文档
模糊匹配内容高度相似(相似度 ≥ 阈值)但不完全一致模板填充、版本迭代中的小改版

扫描结果中,每个重复组会标注其匹配类型("精确"或"规范化"),方便您判断清理优先级。

预设模式详解

预设适用场景关键行为
宽松模式LLM 生成文本、文档去重忽略空白 + 标点 + 大小写,尺寸阈值 10%
严格模式精确查重、版权检查仅忽略空白,保留大小写,尺寸阈值 5%
代码模式代码库去重、检测代码拷贝仅扫描代码扩展名,保留缩进换行,区分大小写
文档模式Markdown / TXT 文档去重仅扫描文档扩展名,忽略空白和大小写

选择预设后,所有配置项会自动填充,您也可以在「高级选项」中进一步微调。

扫描流程与进度

扫描过程分为五个阶段,面板会实时显示当前阶段的进度:

  1. 收集文件 — 遍历目录,收集所有文本文件
  2. 尺寸过滤 — 快速过滤掉尺寸差异过大的文件对
  3. 快速指纹 — 基于文件头部内容生成指纹,粗筛候选对
  4. 全文哈希 — 对候选对进行全文哈希比对,确定匹配
  5. 构建结果 — 整理重复组,生成统计信息

扫描过程中,面板会实时显示「已发现 X 组」重复,无需等待扫描完全结束即可了解大致情况。

结果面板操作

扫描完成后,右侧结果面板提供丰富的操作:

  • 搜索文件名 — 输入关键字快速定位特定重复组
  • 筛选匹配类型 — 只查看精确匹配或规范化匹配的组
  • 排序方式 — 按浪费空间 / 相似度 / 文件数排序
  • 展开查看 — 点击重复组,展开查看组内所有文件
  • 文件对比 — 点击相似文件旁的对比按钮,在弹窗中对比两个文件内容
  • 精细选择 — 在组内逐一勾选需要清理的冗余文件

每组中有一个 代表文件(带有皇冠图标),它是该组中最早或最完整的文件,对比和删除时以此为参照。

文件删除

删除操作会将选中的文件 移入系统回收站,不会永久删除,您可以随时从回收站恢复。删除后,结果面板会自动移除已删除的文件并更新统计信息。


高级用法

自定义配置

在「高级选项」中,您可以微调扫描参数:

参数说明推荐值
扩展名白名单只扫描指定扩展名的文件,留空扫描所有文本文件ts,js,vue,py
忽略模式Glob 忽略模式,跳过不需要的目录默认已含 node_modules.git
最大文件大小超过此大小的文件跳过扫描默认 50 MB
尺寸差异阈值文件大小差异超过此比例的不予比对默认 5%,宽松模式 10%

通过 AI 助手调用

内容查重工具注册了 scanDuplicates 方法,AI 助手可以直接调用。例如:

请扫描 D:\projects\my-app\src 目录下的重复代码,使用代码模式。

AI 助手会自动调用查重引擎并返回格式化结果,包含扫描统计和重复组摘要。

规范化选项详解

四个规范化选项控制匹配时的"宽容度":

  • 忽略空白字符true 时,foo barfoobar 视为相同
  • 忽略标点符号true 时,你好!你好 视为相同
  • 区分大小写false 时,Hellohello 视为相同
  • 保留换行结构 — 代码模式下建议开启,文档模式下关闭

常见问题

扫描结果中显示了很多"跳过文件",是什么意思?

扫描过程中,某些文件会因为以下原因被跳过:

  • 文件大小超过「最大文件大小」限制
  • 文件不在「扩展名白名单」中
  • 文件路径匹配了「忽略模式」
  • 文件不是文本文件(二进制文件)

跳过的文件会列在结果面板底部,您可以查看具体原因并根据需要调整配置。

为什么有些重复文件被标记为"规范化"而不是"精确"?

"精确匹配"要求文件内容逐字节一致,而"规范化匹配"是在忽略空白、标点、大小写等格式差异后判定为相同的。如果两个文件只是在排版格式上有细微差异(比如缩进风格不同、行尾空格不同),就会被列为规范化匹配。

我可以同时清理多个目录吗?

当前版本一次只扫描一个目录。如果需要清理多个目录,可以分多次扫描。如果多个目录内容存在交叉重复,建议先将它们合并到一个父目录中再进行扫描。

删除的文件去哪了?

所有删除操作都是 移入系统回收站,不会永久删除文件。如果您误删了文件,可以打开系统回收站还原。如果需要永久删除,请在回收站中执行二次清理。

扫描速度慢怎么办?

影响扫描速度的主要因素:

  • 文件数量:文件越多,扫描越慢。建议排除 node_modules 等大型目录
  • 文件大小:大文件的全文哈希耗时较长,可降低「最大文件大小」限制
  • 匹配精度:模糊匹配比精确匹配慢,如追求速度可使用严格模式

如果扫描长时间无响应,可以点击「停止扫描」中断操作,调整配置后重试。

Released under the Apache-2.0 License.