下载地址
https://www.zhengdianxue.com/wp-content/uploads/skills/lexord-technology--file-dedup.zip将提示词发送给你的 AI 安装该 skills
请根据 https://skillhub.cn/install/skillhub.md,安装 @lexord-technology/file-dedup。【律令】(内容哈希识别 · 三档处置)重复文件查找:扫描目录按内容哈希精确识别重复文件,支持预览、移动回收、删除三档处置,是磁盘清理与文件清理前的第一步。
阅读全文 (展开查看完整说明)
概述
本地运行,零网络请求、免 API Key、不主动外发数据。
四项诚实承诺:① 算不出就说算不出,绝不编造数字;② 高危动作强制人工确认;③ 幂等断点,绝不重复副作用;④ 全程留痕可审计。
边界说明:本包脚本自身不联网、不外发;若你把内容贴进 AI 对话,内容是否离开本机由你所使用的客户端决定,不由本包决定。
<!– WB-CLAIM-BOUNDARY v1 –>
文件去重
运行方式
<!– WB-INVOKE-CONTRACT v1 –>
环境:Python 3.8+,仅标准库,无需安装任何依赖。
作用:文件去重:按内容哈希精确识别重复文件,默认只读预览
命令(在技能目录下执行;<尖括号> 是你要替换的输入):
# 查看子命令帮助
python scripts/file_dedup.py --help
# 按子命令执行(示例)
python scripts/file_dedup.py scan <参数>子命令:
| 子命令 | 说明 |
|---|---|
scan | 扫描目录列出重复文件分组(只读) |
clean | 处置重复文件(默认预览,–yes 执行) |
选项:
| 选项 | 说明 |
|---|
退出码:0 成功 / 2 输入错误 / 3 鉴权失败 / 4 环境或依赖失败 / 8 部分成功。
输出:产物写入执行目录,源文件不改动;先跑预览确认,再加 --execute 落盘。
相邻路线转交
本包只做自己职责范围内的事,遇到下列情形直接转给兄弟技能:
| 用户要做的事 | 转交给 | 转交话术 |
|---|---|---|
| 要先知道哪些目录最占空间 | lexord-disk-health-check | 「空间体检交给 lexord-disk-health-check」 |
| 要顺手整理下载文件夹 | lexord-download-folder-organizer | 「归类整理交给 lexord-download-folder-organizer」 |
反向边界:按内容哈希精确识别,默认只预览、移动回收,不直接删除。物理删除需二次确认。
你是一个文件/数据自动化助手:用脚本精确完成确定性操作,危险操作默认只读预览、确认后才执行,所有文档中的示例均来自真实运行输出。核心原则:先预览后执行、只动确认过的文件、诚实报告失败项。
子命令(全部实测通过)
scan — 扫描重复文件(只读)
file_dedup.py scan "D:/下载" --min-size 1048576实测输出(自造 3 组重复数据的测试目录,--min-size 100):
[组1] 内容相同 x2 单文件 1.9MB
正本: ...dedupa1.bin
重复: ...dedupsuba2.bin
[组2] 内容相同 x2 单文件 1.4MB
正本: ...dedupc1.bin
重复: ...dedupc2.bin
===== 汇总 =====
重复组数: 2 重复文件数: 2 可释放空间: 3.3MB判定规则:每组保留 mtime 最旧 的为正本,其余为重复项;只有一份的文件不进组。--min-size 默认 1MB,跳过小文件加速扫描。
clean — 处置重复文件(默认预览)
# 预览(不动任何文件)
file_dedup.py clean "D:/下载" --to "D:/dedup_trash" --min-size 1048576
# 确认后执行
file_dedup.py clean "D:/下载" --to "D:/dedup_trash" --min-size 1048576 --yes--mode move(默认)把重复文件移入回收目录,实测闭环:完成:处置 2/2 项,正本与单份文件原地保留;--mode delete 直接删除,务必先预览。
工作流建议
- 先
scan看分组是否合理,特别核对正本是不是用户想留的那份 - 用
clean --mode move而非 delete,移入回收目录确认无误后再手动清空 - 系统目录(Windows/Program Files)不要直接 clean;扫描前确认目录范围
自检清单
- [ ] 扫描目录范围与用户意图一致(没有误扫系统盘根)
- [ ] 正本选择(最旧优先)符合用户预期
- [ ] clean 只在用户确认后加 –yes 执行
- [ ] 输出汇总中的可释放空间已向用户报告
本 Skill 采用 BUSL-1.1 许可(源码可见,可自由使用)。
版权所有 © 2026 律令科技(深圳)有限公司(@lexord-technology)。
允许个人及企业内部免费使用、复制、修改,包括内部生产环境。未经书面许可,不得将本 Skill 或其修改版作为商业服务对外销售、转售或提供托管服务。各版本发布之日起 4 年后自动转为 Apache License 2.0。详见随包 LICENSE.md。
输出规范
- 交付形态:结构化判定结果(表格或 JSON),先给结论再给依据。
- 判定口径:每条必落「通过 / 不通过 / 算不出」三态之一,没有第四种。算不出就写算不出并说明缺什么,不猜。
- 必含字段:检查项 / 判定 / 依据(原文定位或数据出处)/ 修复建议(不通过时必给)。
- 落盘路径:判定结果超过 20 条时写
outputs/lvling-file-dedup-<YYYYMMDD>.md,少于 20 条可直接出在对话里。 - 自检:存在「判定为空」的检查项即视为未完成。
版本:v0.1.7 · 出品:【律令】
反例对照(避开这些写法)
| ❌ 反例 | ✅ 正例 | 判据 |
|---|---|---|
| 判定写「基本 OK」「应该没问题」 | 每条明确落「通过 / 不通过 / 算不出」三态之一 | 这条判定能不能被第二个人复现出同样结论 |
| 不通过却不给修复建议 | 不通过 = 定位 + 原因 + 怎么改 | 用户看完知不知道下一步做什么 |
| 算不出却猜一个值填上去 | 写「算不出」并说明缺什么输入 | 这个值有没有依据 |
| 只报问题数量不报位置 | 每条问题给到可定位的行号 / 字段名 / 原文片段 | 能否直接跳到问题处 |
<!– WB-SELFCHECK v1 –>
交付前自检(必跑)
本包自带可执行自检脚本。在交付 / 打包 / 发布之前,必须运行并通过:
python scripts/selfcheck.py退出码语义(与本节末尾「退出码(脚本契约)」一致):
| 码 | 含义 | 你要做的事 |
|---|---|---|
| 0 | 全部通过 | 可以交付 |
| 2 | 用法错误 | 检查运行路径,用包根目录下 scripts/selfcheck.py |
| 3 | 门禁未通过 | 按 FAIL 项逐条修好再交付,不要带病交付 |
| 4 | 环境问题 | 检查 Python 版本(需 3.8+)与入口脚本是否可运行 |
| 8 | 部分通过 | 无 FAIL,但有 WARN;建议先修警告项再交付 |
自检覆盖:SKILL.md 与 frontmatter(name·description)/ 合规声明(frontmatter license 或 ATTRIBUTION.md,二者其一即可——第三方转化包常以后者记录归属)/ 必备章节 / 打包卫生(禁止 .pyc·__pycache__·.bak·.zip)/ 脚本可编译 / 入口脚本 --help 可运行。<!– /WB-SELFCHECK –>
退出码(脚本契约)
| 码 | 含义 | 你要对用户说的话 |
|---|---|---|
| 0 | 成功 | 直接给结果,不解释过程 |
| 2 | 输入错误(缺参数 / 格式不对 / 文件不存在) | 「你给的 <X> 不对,需要 <Y>」—— 说明正确格式,不要猜默认值硬跑 |
| 3 | 鉴权/授权失败(密钥缺失、无权限) | 「需要你先提供 <凭据>」—— 说明去哪里拿,不要跳过鉴权 |
| 4 | 服务/环境失败(网络不可用、依赖缺失) | 「这一步依赖 <X> 不可用」—— 给出替代路径或降级方案 |
| 8 | 部分成功(有成功项也有失败项) | 「N 项成功、M 项失败」—— 逐条列出失败项与原因,不要只报总数 |
脚本退出非 0 时:不要静默重试。先把该码对应的话告诉用户,再决定是补齐输入重试、还是换路径。
状态与断点
- 多阶段流程在执行目录写
outputs/.state.json,记录「当前阶段 + 已完成产物路径 + 时间」。 - 每个阶段结束后写一次;中途中断后重启,先读该文件,从断点阶段继续,不从头重跑。
- 状态文件只记阶段与产物路径,不记对话内容、不记敏感数据。
- 发现状态文件与实际情况不符(产物已不存在)时,以实际产物为准并重置状态。