← Back
ops120

ops120/wechat-local-viewer

微信本地聊天记录查看器 — 会话浏览/全文搜索/多格式导出/可选 LLM 智能总结,全部本地运行,零外部依赖。

View on GitHub ↗
Stars
283
Forks
148
Watchers
283
Open issues
1
Contributors
2
Language
Python
License
MIT License
Default branch
master
Created Sep 7, 2026Updated Sep 28, 2026

Star growth

Today—
This week—
This month—

Star history will appear here once this repo has been tracked for a couple of days.

README

WeChat Local Viewer (本地微信数据库查看器)

⚠️ 本项目只提供查看界面,不提供任何解密工具

本仓库不含密钥提取、数据库解密等任何工具与代码。聊天数据由用户自行准备后导入目录。

实测微信版本:4.1.13.12(Windows)

让用户在本机直接浏览微信聊天记录:会话列表、消息浏览、全文搜索、多格式导出。数据由用户提供,本工具只负责查看,全部本地运行,零外部依赖。

功能特性

  • 📱 会话列表:按时间倒序展示所有会话(单聊/群聊/公众号)
  • 💬 消息浏览:按时间正序渲染(64 万条消息已实测导入,浏览流畅)
  • 🔍 全文搜索:基于 FTS5,1 秒内返回搜索结果
  • 🤖 LLM 集成:支持 OpenAI 兼容协议(DeepSeek / OpenAI / 硅基流动 / Ollama 等),流式输出总结/问答
  • ⚡ 本地优先:所有数据本地处理,零外部依赖(除用户配置的 LLM)

环境要求

  • Python 3.10+
  • Node.js 22+
  • Windows 10/11

界面预览

主界面:

主界面

联系人导出(支持按类型/关键词筛选,导出 CSV / JSON):

联系人导出

一键启动

  1. 把用户自己的聊天数据放到项目根目录(二选一,自动识别):
    wechat-local-viewer/
    ├── decrypted/   (或 .decrypted/)
    │   ├── contact/     # 联系人数据
    │   ├── session/     # 会话数据
    │   ├── message/     # 消息数据(message_*.db)
    │   └── hardlink/    # 图片索引(可选)
    └── start.bat
    
  2. 双击 start.bat
  3. 浏览器自动打开 http://127.0.0.1:18787/(后端直接托管前端构建产物)

默认端口

端口 用途
18787 后端 FastAPI(避开 8765 等 Windows 保留端口)
15713 前端 Vite dev(避开 5173 易冲突)

自定义端口

set WCVIEWER_PORT=28888
set WCVIEWER_FRONT_PORT=25813
start.bat

start.bat 启动前会做端口冲突检测,被占用会报错并给出提示。

手动启动

# 后端
cd backend
pip install -r requirements.txt
python -m uvicorn app.main:app --host 127.0.0.1 --port 18787

# 前端(开发模式)
cd frontend
npm install
npm run dev
# 生产用:npm run build → 后端自动托管 dist

目录结构

源数据(用户提供)

decrypted/  (或 .decrypted/,二选一自动识别)
├── contact/     # 联系人数据
├── session/     # 会话数据
├── message/     # 消息数据(message_*.db 等)
└── hardlink/    # 图片文件索引(hardlink.db,可选)

项目结构

.
├── backend/           # 后端服务
│   ├── app/
│   │   ├── api/       # API 路由
│   │   ├── parsers/   # 数据解析器
│   │   ├── llm/       # LLM 客户端
│   │   └── etl.py     # ETL 主流程
│   ├── tests/
│   └── requirements.txt
├── frontend/          # 前端应用
│   ├── src/
│   │   ├── api/       # API 客户端
│   │   ├── stores/    # Pinia 状态管理
│   │   ├── views/     # 页面组件
│   │   └── components/# UI 组件
│   └── package.json
├── .github/           # CI 工作流
├── start.bat          # 一键启动脚本
├── refresh.bat        # 增量刷新脚本
├── THIRD_PARTY_NOTICES.md         # 第三方组件说明
├── CONTRIBUTING.md / CHANGELOG.md / LICENSE
└── README.md

运行时数据目录(不属于仓库)

以下目录由工具/服务在运行时生成或由用户提供,均已通过 .gitignore 排除,不要提交到版本库:

目录 作用
decrypted/ 或 .decrypted/ 微信聊天数据(用户提供)
.cache/ 中间层数据库 app.db(ETL 自动创建)
.export/ 导出产物
.tmp/ 日志等临时文件

系统架构

┌──────────────────────────────────────┐
│  数据源(用户提供)                    │
│  decrypted/                           │
└──────────────┬──────────────────────┘
               │ ① ETL (etl.py)
               │    指纹判断:全量 / 增量 / 跳过
               │    parse_sessions→sessions 表
               │    parse_contacts→contacts 表
               │    parse_messages→messages 表 (+FTS5 索引)
               │    _update_session_stats 聚合统计
               ▼
┌──────────────────────────────────────┐
│  .cache/app.db  (中间层查询库)        │
│  sessions / contacts / messages + FTS │
└──────────────┬──────────────────────┘
               │ ② API (FastAPI :18787)
               ▼
┌──────────────────────────────────────┐
│  frontend (Vue, 已构建至 dist)        │
│  会话列表 / 消息浏览 / 搜索 / 导出     │
└──────────────────────────────────────┘

验证步骤

  1. 检查文件结构

    cd <仓库根目录>
    tree /F frontend
  2. 前端依赖安装

    cd frontend
    npm config set registry https://registry.npmmirror.com
    npm config set maxsockets 4
    npm config set audit false
    npm install
  3. 一键启动

    cd <仓库根目录>
    start.bat

API 端点

端点 方法 说明
/api/sessions GET 会话列表(按 last_time 倒序)
/api/sessions/{username} GET 单会话详情
/api/messages?session=X GET 消息分页
/api/messages/{id} GET 单消息详情
/api/messages/{id}/context GET 消息上下文
/api/search?q=X GET 全文搜索(FTS5)
/api/search/suggest?q=X GET 搜索建议
/api/contacts/export GET 联系人导出(csv/json,支持 type/keyword 筛选)
/api/admin/etl POST 触发 ETL({force:bool})
/api/admin/status GET ETL 状态
/api/admin/logs GET 日志尾部
/api/admin/rebuild-fts POST 重建 FTS 索引
/api/admin/stats/daily GET 每日统计
/api/llm/config GET / POST LLM 配置
/api/llm/chat POST LLM 流式问答(SSE)
/media/... GET 媒体静态文件(仅已还原的部分图片可用)

LLM 配置(可选)

打开页面右上角「设置」,填:

  • Base URL:OpenAI 兼容服务地址
    • DeepSeek: https://api.deepseek.com/v1
    • OpenAI: https://api.openai.com/v1
    • Ollama: http://localhost:11434/v1
    • 硅基流动: https://api.siliconflow.cn/v1
  • API Key:对应服务的 key
  • Model:模型名(如 deepseek-chat、gpt-4o-mini、qwen2.5:7b)

API key 仅存浏览器 localStorage,随每次问答请求发给后端(也可用环境变量 LLM_BASE_URL / LLM_API_KEY / LLM_MODEL 做后备默认值)。未配置时点「总结」会给出明确提示。

安全

  • 零外发:除 LLM base_url 外无任何 outbound HTTP。
  • 静态 /media/ 不列目录。
  • LLM API key 仅存浏览器 localStorage。

性能预算

项 备注
启动 → 首屏 数秒(64 万消息库,未实测计时)
打开会话(首屏 30 条) 索引查询,表现良好(未实测计时)
全文搜索 FTS5 索引,秒级(未实测计时)
LLM 流式首字 取决于模型服务(未实测计时)

约束

  • Python pip 用清华源。
  • Node ^22.19.0 || >=24.0.0。
  • 默认端口 18787(后端)/ 15713(前端),避开 8765(Windows 保留)/ 5173(易冲突)。

许可证

本项目基于 MIT License 开源。

社区

本项目在 LINUX DO 社区进行开源推广,感谢社区佬友的交流、反馈与建议。

致谢 / 第三方组件

  • FastAPI、Vue、Vite 及所有开源依赖的作者。