前言¶
知识库、项目归档和下载目录里,同名不同路径、多次备份、邮件附件另存,很容易堆出内容完全相同的文件。肉眼对比或按文件名去重,既慢也不可靠。下面介绍 SkillHub 社区 Skill「重复文档清理」(@user_08f07800/zyn):安装后由 Agent 加载包内脚本逻辑,对指定目录做基于内容哈希的重复检测,并支持先报告、再按需删除。
这是什么¶
「重复文档清理」是发布者 user_08f07800 在 SkillHub 上架的社区 Skill,坐标 @user_08f07800/zyn,当前版本 1.0.0,分类为 knowledge-management。平台标注 requires_api_key=false,无需额外 API Key。
Skill 包主体是一份可执行的 Python 脚本(仓库内文件名为 SKILL.md),实现「文档重复清理工具(Document Duplicate Cleaner)」:对目录内支持的办公与文本格式计算 SHA-256 内容哈希,将哈希相同的文件归为一组,输出报告并可选进入清理流程。SkillHub 页面简介与技能名一致,未单独展开更长说明;具体能力以包内脚本为准。
官方入口:
- SkillHub 页面:https://www.skillhub.cn/skills/user_08f07800/zyn
- API 坐标页:https://api.skillhub.cn/user_08f07800/zyn
(SkillHub 展示数据示例:评分 100000,下载 1000;以页面实时显示为准。)
核心功能¶
以下均来自 Skill 包内脚本实现,已核实。
扫描与哈希¶
- 对目标目录遍历文件(默认递归子目录;可用
--no-recursive仅扫当前层)。 - 按扩展名过滤,内置支持包括但不限于:
.pdf、.docx、.doc、.xlsx、.xls、.pptx、.ppt、.txt、.md、.csv、.json、.xml、.html、.htm、.rtf、.odt、.ods、.odp、.eml、.msg等;可用--ext追加扩展名。 - 跳过常见无关目录:
.git、.svn、.hg、__pycache__、node_modules、.cache等。 - 对每个文件分块读取并计算 SHA-256;读取失败会打印警告并跳过该文件。
重复分组与报告¶
- 将哈希值相同的文件分为一组(至少 2 个文件才算重复)。
- 组内按修改时间排序,修改时间最早的视为「原始」,其余标为重复。
- 报告输出组数、重复文件个数、可节省空间估算;对
.txt、.md等文本类可尝试 UTF-8 / GBK 等编码做短预览(最多约 200 字符)。 - 可用
-o FILE将报告写入文件。
清理策略¶
- 默认 dry-run(
--dry-run):只列出将删除的项,不改动磁盘。 - 使用
--delete进入实际删除前,脚本会交互询问:整组保留、整组删除重复项,或按编号选择性删除;批量删除前需输入y确认。 - 可用
-e/--exclude多次传入正则,排除匹配的文件名或目录名。
说明: 判定依据是整文件字节级相同。扩展名不同但内容相同会被视为重复;内容略改则哈希不同,不会归入同一组。
安装与启用¶
通过 SkillHub CLI 安装¶
先确认本机已安装 skillhub(未安装时可参考 https://skillhub.cn/install/skillhub.md 中的安装脚本)。安装 Skill 时必须用 --dir 指向当前 Agent 的 skills 目录,否则默认落在 ./skills/ 可能不会被识别。
command -v skillhub && skillhub --version
skillhub install zyn --namespace user_08f07800 --dir ~/.cursor/skills
上例目录对应 Cursor;其他客户端常见路径(摘自 SkillHub 安装文档):
- Claude Code:
~/.claude/skills/ - Codex:
~/.codex/skills/或项目下.agents/skills/
安装完成后,按所用客户端要求重启或刷新 Agent,使 @user_08f07800/zyn 可被加载。
让 AI 代为安装¶
SkillHub 页面提供的提示词为:请根据 https://skillhub.cn/install/skillhub.md,安装 @user_08f07800/zyn。
典型用法¶
包内脚本通过 argparse 提供命令行接口。安装后脚本位于 skills 目录下的 @user_08f07800/zyn/SKILL.md(路径随 --dir 而变)。在已安装 Python 3 的环境中,可直接用解释器执行该文件(文件首行为 #!/usr/bin/env python3)。
扫描某目录并仅生成报告(默认 dry-run,不删除):
python3 ~/.cursor/skills/@user_08f07800/zyn/SKILL.md /path/to/documents
扫描当前目录、排除名称匹配 temp 或 backup 的路径:
python3 ~/.cursor/skills/@user_08f07800/zyn/SKILL.md . -e "temp|backup"
将报告保存到文件:
python3 ~/.cursor/skills/@user_08f07800/zyn/SKILL.md . -o duplicate_report.txt
在确认报告无误后,进入实际删除流程(会交互确认):
python3 ~/.cursor/skills/@user_08f07800/zyn/SKILL.md . --delete
在 Agent 会话中,也可直接说明目标目录与是否只报告、是否排除某些子目录,由已加载该 Skill 的 Agent 按上述参数调用脚本;包内示例命令写的是 duplicate_cleaner.py,与发布文件名 SKILL.md 不一致,执行时请使用实际安装路径。
适用场景与注意¶
适合:
- 本地或网盘同步下来的文档库、项目
docs/、邮件导出目录的内容级去重摸底。 - 需要先看清重复组与可节省空间,再决定是否删除的场景(默认 dry-run)。
限制与注意:
- 仅处理脚本列出的扩展名;不在列表内的文件会被忽略,除非用
--ext补充。 - 哈希相同即视为重复,不区分「哪个副本更该保留」的业务含义;脚本默认保留最早修改时间的文件,删除前请自行核对路径与版本。
--delete会真实os.remove,建议先备份或在副本目录试跑 dry-run。- 二进制办公格式(如 PDF、Office)只做哈希与元数据展示,不做正文解析;「同名不同内容」或「近似重复」不在本 Skill 范围内。
- 交互式删除需在终端 stdin 可用;纯非交互环境更适合只用扫描与
-o报告,再人工处理。
结尾¶
「重复文档清理」把重复文档检测收敛为一条可复现的流水线:递归扫描、SHA-256 分组、报告与可选清理,并默认 dry-run 降低误删风险。若你正在整理 knowledge-management 类资产,可从 SkillHub 安装 @user_08f07800/zyn,对目标目录先跑报告再决定是否 --delete。
官方地址:https://www.skillhub.cn/skills/user_08f07800/zyn