Skip to content
bluntvoicePublic

About

整理电脑版微信和本地目录中的重复文件,内容确认后再安全清理。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

只留一份(Keep One)

只留一份(Keep One)是一款 Windows 本地重复文件整理工具,重点解决电脑版微信附件反复下载产生的副本,也支持扫描任意本地目录。

典型使用场景: 同一个附件被多次下载后,目录里出现:

文件.docx
文件(1).docx
文件(2).docx

软件会先寻找可能重复的文件,再根据文件内容确认是否真正一致,最终由用户决定哪些文件需要清理。它不是仅根据文件名自动删除文件的工具。

下载

当前版本为 v0.1.0,支持 Windows 10 22H2 或 Windows 11 x64。

请从 GitHub Releases 下载最新的 Windows 安装包。

它解决什么问题

电脑版微信会把已经下载到磁盘的同一附件再次保存为带数字后缀的副本,例如 文件(1).docx、文件(2).docx。时间一长,这些副本会和真正修改过的不同版本混在一起,人工判断费时,也容易误清理。

只留一份重点识别这类微信附件,但不依赖微信才能使用。它也可以扫描下载、桌面、临时文件、项目归档和资料库等任意本地目录,帮助处理以下情况:

  • 文件名相近、内容完全一致;
  • 文件名相近、内容已经不同;
  • 文件名完全不同、内容却完全一致;
  • 图片、文档、压缩包和视频散落在多级目录中,难以集中核对。

核心特点

  • 电脑版微信附件识别: 检测电脑版微信经典版及 4.x 的多个附件目录,并列出不同账号对应的位置供用户选择。
  • 通用目录扫描: 可选择任意本地磁盘目录,递归扫描其中的普通文件。
  • 内容级重复确认: 先按名称和大小寻找候选,再通过部分内容哈希和 SHA-256 完整哈希确认内容是否一致。
  • 用户决定是否清理: 重复结果只作为建议展示,不会自动加入清理清单,也不会自动删除。
  • 默认移入 Windows 回收站: 用户确认清理后,文件进入回收站,而不是默认永久删除。

如何使用

  1. 选择目录: 选择任意本地目录,或让软件检测电脑版微信附件目录。
  2. 开始扫描: 软件以只读方式建立文件索引并检查重复内容。
  3. 核对结果: 查看文件名、路径、大小、重复状态和建议保留项。
  4. 确认清理: 主动把文件加入清理清单,核对预览后确认移入 Windows 回收站。

详细处理流程:

选择普通目录或微信附件目录
  → 只读扫描并建立索引
  → 按名称和大小找出候选组
  → 计算部分哈希
  → 对剩余候选计算 SHA-256
  → 用户选择文件并加入清理清单
  → 核对清理预览并二次确认
  → 移入 Windows 回收站
  → 写入操作记录

建议清理项不会默认加入清理清单。预览窗口会列出文件数量、总大小、重复组、保留文件和将进入回收站的文件。

安全设计

  • 扫描和预览期间不修改文件;
  • 不根据 (1)、(2) 等数字后缀直接删除文件;
  • 同名但内容不同的文件不会进入自动清理建议;
  • 缺少无数字后缀的原始文件时,不自动删除或重命名;
  • 零字节文件单独分组,不自动建议清理;
  • 建议清理项不默认勾选,也不会默认加入清理清单,由用户主动选择;
  • 清理前重新检查文件是否仍然存在、类型和大小是否变化,并根据已有信息复核内容哈希或修改时间;
  • 默认移入 Windows 回收站,不把永久删除作为默认操作;
  • 如果清理清单包含某个内容重复组的全部文件,软件会展示整组文件清单并要求额外确认;
  • 单个文件被占用、移动、删除或无法访问时,会停止处理该文件并继续处理其他文件。

只读文件可以进入回收站。清理 Word、PPT、Excel 的数字后缀副本后,软件会尝试取消无数字后缀保留原件的只读属性,并在清理结果中汇总处理情况。

这些设计用于降低误操作风险,但仍建议在清理前核对文件路径、内容和保留项。

文件查看与筛选

  • 分页查看最新一次扫描结果;
  • 按文件名或完整路径搜索;
  • 按 Word、PPT、Excel、PDF、图片、视频等文件类型筛选;
  • 按扫描结果中实际存在的扩展名筛选;
  • 按路径中的月份文件夹筛选近 1、2、3、6 或 12 个月文件;
  • 按文件大小和重复状态筛选;
  • 查看文件名、完整路径、类型、大小、时间和只读属性;
  • 直接打开文件,或在 Windows 资源管理器中定位;
  • 从重复建议、逐项选择或当前筛选结果建立统一清理清单,并按文件名、路径、类型、扩展名、加入来源和大小继续筛选。

批量操作保护

清理密钥的定位是降低批量误操作风险的保护机制,不是安全认证系统。

  • 首次扫描前需要设置不少于 4 个字符的用户密钥;
  • 用户密钥通过 Argon2 加盐哈希校验,本地 SQLite 只保存不可逆校验值,不保存密钥明文;
  • 默认情况下,本次启动每累计清理 100 个文件重新验证一次;
  • 也可在设置中选择验证后 10 分钟或 30 分钟内免密;
  • 忘记用户密钥时,可使用公开恢复密钥 bluntvoice 执行受保护的清理、删除操作记录或设置新密钥。

bluntvoice 是公开恢复密钥,属于防误操作机制,不构成强安全认证。它不能防止已经知道该密钥的人操作,也不能替代 Windows 账户、磁盘权限和系统登录保护。

支持范围

  • Windows 10 22H2 或 Windows 11 x64;
  • 电脑版微信经典版及 4.x 已下载到本地磁盘的附件目录;
  • 下载、桌面、临时文件、项目归档、资料库等任意本地磁盘目录;
  • Word、PPT、Excel、PDF、图片、视频、压缩包及其他普通文件。

当前 v0.1.0 不扫描网络路径,也不跟随符号链接、目录联接等重解析点。

常见问题

是否读取微信聊天记录?

不会。软件只检测和扫描已经下载到本地磁盘的微信附件目录,不读取、解密或修改微信聊天数据库。

是否看到 (1)、(2) 就直接删除?

不会。数字后缀只用于寻找可能重复的文件,软件还会检查文件大小和内容;最终清理哪些文件由用户决定。

同名不同内容如何处理?

软件会标记为“同名不同内容”,不把它们加入自动清理建议,方便用户自行核对。

文件名不同但内容一样是否能识别?

可以。文件大小、部分内容哈希和 SHA-256 完整哈希一致时,即使文件名不同,也能识别为内容重复组。加入全部建议副本时,软件会在该组中保留一份并加入其余副本。

清理后能否恢复?

默认清理方式是移入 Windows 回收站,通常可以在回收站尚未清空时恢复。能否恢复仍取决于 Windows 回收站状态和磁盘环境,因此清理前仍应认真核对。

是否只能扫描微信文件?

不是。微信附件识别只是针对典型问题提供的快捷入口,软件也支持扫描任意本地磁盘目录。

实现方式

项目使用 Tauri 2、React、TypeScript、Rust 和 SQLite。

React UI
  │ Tauri command / event
  ▼
Rust
  ├─ FileScanner / FileMetadataService
  ├─ FilenameNormalizer / DuplicateDetector / HashService
  ├─ ReadOnlyService / CleanupService / WeChatPathDetector
  └─ IndexRepository / SQLite

通用扫描器只接收一个根目录,不包含微信目录规则;微信目录检测模块负责查找可能的附件目录,并把用户选择的位置交给通用扫描器。扫描、元数据、文件名规范化、分级哈希、重复检测、清理清单和操作记录的职责划分详见 ARCHITECTURE.md。

界面参考 In-Line 的产品配色和桌面布局思路,并针对文件列表重新设计。主题颜色、圆角、阴影和字体集中在 src/theme/tokens.css。

版本记录

v0.1.0

  1. 新增:支持扫描任意本地目录,并可检测电脑版微信经典版及 4.x 的多个附件目录。
  2. 新增:通过文件大小、部分内容哈希和 SHA-256 完整哈希确认重复文件。
  3. 新增:支持按文件类型、扩展名、月份、大小和重复状态筛选,并查看文件类型与月份分布。
  4. 新增:提供统一清理清单、整组不保留二次确认和 Windows 回收站清理。
  5. 新增:支持只读属性识别、文件打开、资源管理器定位、扫描位置和操作记录。
  6. 新增:使用本地清理密钥保护批量清理和操作记录删除。
  7. 修复:完善全部建议副本、重复组折叠和清理清单状态同步,避免重复加入或重复处理。
  8. 优化:统一应用图标、安装目录和界面字体,改进长路径显示、筛选布局与使用指南。

更完整的版本变化同时记录在 CHANGELOG.md。

本地开发

开发环境:

  • Windows 10 22H2 或 Windows 11 x64;
  • Node.js 22 或更新版本;
  • Rust stable 和 MSVC x64 构建工具;
  • Microsoft Edge WebView2 Runtime。

安装依赖并启动:

npm install
npm run dev

运行检查:

npm test
cargo test --manifest-path src-tauri/Cargo.toml
npm run build:web

构建 Windows 安装包:

npm run build

默认产物位于 src-tauri/target/release/bundle/nsis/。如果设置了 CARGO_TARGET_DIR,产物会写入指定的目标目录。

许可证

本项目采用 MIT License。

Copyright © 2026 六朝声

About

整理电脑版微信和本地目录中的重复文件,内容确认后再安全清理。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages