ChatArchive 是一款基于 WinUI 3 与 .NET 开发的现代化 Windows 聊天记录归档、离线浏览与检索工具。数据完全存储于本地 SQLite 数据库,无任何云端上传,安全保护个人隐私。
- 🔍 毫秒级全文检索:内置 SQLite FTS5 (Trigram) 全文分词索引,支持按关键词、会话类型、时间范围多维过滤,支持一键直达消息上下文。
- 👥 统一联系人与身份组:支持跨平台(微信 + QQ)及同平台(大号 + 小号 + 工作号)任意多账号绑定,自定义统一备注与专属身份标签。
- 👤 自定义头像与离线管理:支持上传并设置联系人自定义头像,本地 SHA-256 内容寻址去重存储,时间线气泡接入
PersonPicture头像与平台角标。 - 💬 平滑时间线浏览:虚拟化长列表加载海量消息,支持私聊与群聊会话切换、撤回标识展示与上下文跳转。
- 🖼️ 媒体附件管理:支持图片(缩略图预览与大图保存)、音频、视频及文件的关联与打开。
- 📦 流式导入与去重:采用分块流式解析大体积导出文件,附件基于 SHA-256 内容寻址自动去重。
- 📊 统计概览:统计各联系人与群聊的消息总量、活跃时段等数据。
ChatArchive 采用来源专属适配器与自动嗅探引擎,支持通过软件界面直接选择单文件或包含聊天记录的任意多级文件夹(自动递归识别、自动跳过媒体文件夹以提速):
| Platform | Exporter | Supported import formats |
|---|---|---|
| WeFlow | Standard/ArkMe/ChatLab JSON, ChatLab JSONL, WeClone CSV, Markdown, TXT, PostgreSQL SQL, Excel | |
| CipherTalk | Detailed/ChatLab JSON, ChatLab JSONL, PostgreSQL SQL, Excel | |
| QQ Chat Exporter | Single JSON, chunked JSONL, TXT, Excel |
目录发现仅扫描 .json .jsonl .csv .md .txt .sql .xlsx。HTML 导出被有意排除,因为它们是浏览器展示产物,而不是稳定的数据交换格式。
- 更换目录时,「保存并迁移数据」只接受空目标目录;保存后应用关闭,下次启动先迁移再打开档案。原目录保留,未完成的导入文件可以重新导入。
- 「仅保存新路径」会打开该目录的已有档案;没有数据库时才创建空档案。迁移失败会提示并继续使用原档案。
- CLI 迁移前请关闭使用源/目标目录的应用。覆盖已有目标时,整个旧目录保留在同级
<目标目录>.bak-*,不会混合两套数据库和媒体。 - 迁移先在同级暂存目录复制并校验 SQLite、托管媒体的存在性和 SHA-256,全部通过才切换;媒体缺失或损坏会中止迁移,而不是报告成功。
- 软件更新后首次启动会自动升级数据库结构;需要升级时会先在数据库旁留一份快照(
chat_archive.db.bak-v<旧版本>-<时间>),确认无误后可自行删除。 - 同一条消息被修改或撤回后重新导入,旧版本仍保存在数据库里,但时间线、搜索和统计只展示最新版本。
- 导入解析规则改进后(解析版本号变化),重新导入原始导出文件会按新规则重新解析,新旧结果以上述方式保留最新版本。
- 更新后重新导入原始导出文件,可补回旧版本误去重的同秒重复消息;没有原始导出文件时无法凭数据库恢复已丢弃的消息。没有稳定原生 ID 的导出仍按相同内容的出现次数匹配,不把导出序号当作跨文件全局 ID。
- UI 框架:Windows App SDK / WinUI 3
- 运行环境:.NET 10 / C# 14
- 数据引擎:SQLite (
Microsoft.Data.Sqlite) + FTS5 全文索引
- Windows 10 (Build 17763+) 或 Windows 11
- .NET 10 SDK
需要 Windows + .NET 10。单元测试通过 xUnit v3 进程内宿主 exe 运行(dotnet test / Microsoft.Testing.Platform 当前会列出 0 个测试,请勿依赖)。
# 克隆仓库
git clone https://github.com/AbyssRow/ChatArchive.git
cd ChatArchive
dotnet build tests/ChatArchive.Core.Tests/ChatArchive.Core.Tests.csproj
dotnet build tests/ChatArchive.App.Tests/ChatArchive.App.Tests.csproj
# xUnit v3 in-proc host (dotnet test / MTP currently lists 0 tests)
./tests/ChatArchive.Core.Tests/bin/Debug/net10.0/ChatArchive.Core.Tests.exe -noLogo -automated
./tests/ChatArchive.App.Tests/bin/Debug/net10.0-windows10.0.19041.0/win-x64/ChatArchive.App.Tests.exe -noLogo -automated
dotnet build本项目采用 MIT License 开源。