【免费下载链接】WeFlowWeFlow - 一个本地的微信聊天记录导出和年度报告应用项目地址https://gitcode.com/gh_mirrors/wefl/WeFlow点击查看免费下载WeFlow 是一款完全本地运行的聊天记录查看、分析与导出桌面应用支持实时浏览微信聊天记录、解密朋友圈媒体、生成年度报告与双人报告并可将聊天记录导出为 JSON、HTML、Markdown 等十余种格式。本文以项目官方 README 为骨架结合仓库源码与配套文档完整讲解 WeFlow 的功能清单、支持平台、快速上手、HTTP API 集成方式以及面向开发者的源码构建流程帮助读者快速掌握这一工具的实际用法与二次开发入口。一、项目定位与核心能力WeFlow 的定位是「完全本地的实时聊天记录查看、分析与导出工具」它读取本机聊天数据在本地完成解密、解析与展示并基于这些数据生成独一无二的数据统计与年度报告。按官方描述核心能力可概括为两点获取与导出读取本机聊天记录并将其导出为多种标准格式分析与报告基于聊天记录生成统计画像、群聊分析、年度报告等可视化成果。在仓库结构中这些能力分别由 electron/services 下的一系列服务模块承载例如聊天数据读取依赖 wcdbService.ts 与 chatService.ts年度报告由 annualReportService.ts 实现群聊分析由 groupAnalyticsService.ts 实现朋友圈相关能力由 snsService.ts 承载。注意WeFlow 需要配套的第三方可插拔组件才能读取本地数据——本项目依赖自定义的原生解密组件需自行设计实现具体协议见 docs/third-party-components.md下文第八节会展开说明。二、支持平台与设备平台设备/架构安装包WindowsWindows10、x64.exemacOSApple SiliconM 系列arm64.dmgLinuxx64 设备amd64.AppImage、.tar.gz对应的打包配置可以在 package.json 的build字段中看到Windows 使用 NSIS 安装器artifactName形如WeFlow-5.0.0-Setup.exemacOS 产出dmg/zip目标Linux 产出appimage与tar.gz两种格式并附带 installer.nsh 作为 NSIS 自定义脚本。三、快速开始3.1 直接使用成品版本如果只想使用开箱即用的版本直接前往项目 Releases 页面下载对应平台的安装包并安装即可无需自行编译。3.2 ArchLinux 一键安装ArchLinux 用户可以通过 AUR 快速安装yay -S weflow3.3 从源码构建运行面向开发者项目提供了标准的开发与构建流程完整脚本见 package.json 的scripts字段# 1. 克隆项目到本地 git clone https://github.com/hicccc77/WeFlow.git cd WeFlow # 2. 安装项目依赖 npm install # 3. 运行应用开发模式 npm run dev值得说明的几点细节postinstall钩子npm install完成后会自动执行patch-package、electron-builder install-app-deps以及node scripts/prepare-electron-runtime.cjs用于准备 Electron 原生运行时WASM 解码资源、ffmpeg 等。参见 scripts/prepare-electron-runtime.cjs。开发模式npm run dev同样会先执行prepare-electron-runtime.cjs再启动 Vite 开发服务器若使用npm run electron:dev则以 Electron 模式启动。类型检查与构建npm run typecheck会分别对渲染进程tsconfig.json与 Electron 主进程tsconfig.node.json执行tsc --noEmitnpm run build则串联类型检查、清理旧产物scripts/clean-dist-electron.cjs、Vite 构建与 electron-builder 打包。项目整体采用Electron Vite React TypeScript技术栈见 package.json 依赖electron、vite、react、zustand、tailwindcss等渲染层代码位于 src主进程与原生服务层位于 electron。四、详细功能清单以下完整功能清单直接继承自 README.md并在每项后面补充仓库源码级的实现依据便于深入查阅。功能模块说明聊天解密聊天中的图片、视频、实况支持修改本地消息消息防撤回防止其他人发送的消息被撤回实时弹窗通知新消息到达时提供桌面弹窗提醒便于及时查看重要会话提供黑白名单功能私聊分析统计好友间消息数量分析消息类型与发送比例查看消息时段分布等群聊分析查看群成员详细信息分析群内发言排行、活跃时段和媒体内容年度报告生成按年统计的年度报告或跨年度的长期历史报告双人报告选择指定好友基于双方聊天记录生成专属分析报告消息导出将聊天记录导出为多种格式JSON、HTML、Markdown、TXT、Excel、CSV、PGSQL、ChatLab专属格式等朋友圈解密朋友圈图片、视频、实况导出朋友圈内容拦截朋友圈的删除与隐藏操作联系人导出好友、群聊、公众号信息找回部分曾经的好友HTTP API 映射将本地消息能力映射为 HTTP API便于对接外部系统、自动化脚本与二次开发4.1 聊天媒体解密与消息修改聊天模块负责解密本地消息中的图片、视频与实况Live Photo并支持修改本地消息。其核心解密逻辑位于 nativeImageDecrypt.ts媒体解密插件接口与 imageDecryptService.ts、wasmService.tsWASM 解码。WASM 解码资源存放在 electron/assets/wasmwasm_video_decode.js/wasm_video_decode.wasm并通过 package.json 的extraResources一并打入安装包。消息的修改、插入、删除等写操作由 WCDB 组件的wcdb_update_message、wcdb_insert_text_message、wcdb_delete_message等导出函数提供详见 docs/third-party-components.md。4.2 消息防撤回通过 WCDB 组件安装 SQLite 触发器实现相关导出函数为wcdb_check_message_anti_revoke_trigger/wcdb_install_message_anti_revoke_trigger/wcdb_uninstall_message_anti_revoke_trigger同样见 docs/third-party-components.md。4.3 实时弹窗通知新消息到达时提供桌面弹窗提醒支持黑白名单过滤。桌面弹窗由 notificationWindow.ts 实现渲染层组件为 NotificationToast.tsx会话全局监控由 GlobalSessionMonitor.tsx 承担。配置项notificationEnabled、notificationFilterModeall/whitelist/blacklist、notificationFilterList等定义在 config.ts 的配置 schema 中。4.4 私聊分析与群聊分析私聊分析统计好友间消息数量、消息类型与发送比例、消息时段分布等群聊分析查看群成员详细信息、群内发言排行、活跃时段与媒体内容。实现位于 groupAnalyticsService.ts前端分析页面为 GroupAnalyticsPage.tsx 与 ChatAnalyticsHubPage.tsx。4.5 年度报告与双人报告年度报告按年生成年度报告也支持跨年度的长期历史报告主进程实现为 annualReportService.ts 与 annualReportWorker.ts渲染层为 AnnualReportPage.tsx双人报告选择指定好友基于双方聊天记录生成专属报告实现位于 dualReportService.ts 与 dualReportWorker.ts渲染层为 DualReportPage.tsx。4.6 消息导出消息导出支持多种格式核心实现在 electron/services/export 目录格式化器formattersJsonFormatter、HtmlFormatter、MarkdownFormatter、TxtFormatter、ExcelFormatter、SqlFormatterPGSQL、ChatLabFormatter、WeCloneFormatter等媒体处理media附件解析attachmentResolver.ts、文件拷贝fileCopy.ts消息解析parsers内容解码、文件 App 解析、转发记录解析、引用回复解析、转账解析、语音通话解析、XML 抽取等编排与上下文coreExportOrchestrator负责整体导出流程编排ExportContext维护导出上下文统计服务ExportStatsServicestats负责导出过程中的统计。前端导出界面位于 src/pages/Export包括导出会话表、会话详情、自动化任务中心等组件。4.7 朋友圈朋友圈支持解密图片、视频、实况导出朋友圈内容并拦截删除与隐藏操作。主进程实现为 snsService.ts前端界面为 SnsPage.tsx联系人朋友圈时间线对话框为 ContactSnsTimelineDialog.tsx。朋友圈的防删开关wcdb_check_sns_block_delete_trigger等与删除单条朋友圈wcdb_delete_sns_post同样通过 WCDB 组件实现。4.8 联系人联系人模块支持导出好友、群聊、公众号信息并可找回部分曾经的好友。相关服务包括 contactCacheService.ts、contactExportService.ts、contactRegionLookupData.ts导出辅助逻辑位于 electron/services/export/contacts如contactResolver.ts、avatarHelper.ts、groupNickname.ts。五、HTTP API把本地消息能力开放给外部系统WeFlow 提供本地 HTTP API 服务支持通过接口查询消息、会话、联系人、群成员与导出媒体是自动化脚本与二次开发的主要入口。完整接口文档见 docs/HTTP-API.md此处提炼核心要点。启用方式设置 → API 服务 → 启动服务默认端口5031访问地址http://127.0.0.1:5031支持格式原始 JSON 或 ChatLab 标准格式状态记忆API 服务与主动推送的开关状态和端口会自动保存重启 WeFlow 后自动恢复运行。5.1 服务生命周期与配置源码视角HTTP 服务实现在 httpService.ts约 2700 行的完整实现。从源码可以确认配置项httpApiEnabled、httpApiPort默认5031、httpApiHost默认127.0.0.1、httpApiToken定义于 config.ts 的ConfigSchema其中 Token 属于敏感字段会通过 ElectronsafeStorage加密SAFE_PREFIX: safe:后落盘启动/停止主进程 main.ts 中通过httpService.start(port || 5031, bindHost)拉起服务并在应用启动时调用httpService.autoStart()恢复上次状态退出时httpService.stop()鉴权除/health与/api/v1/health外所有/api/v1/*接口均需 Token。verifyToken()支持三种传参方式Authorization: Bearer Token请求头、?access_tokenToken查询参数、{access_token: Token}JSON Body仅 POST并使用timingSafeEqual做常量时间比较以防时序攻击。注意Token 未配置时所有请求都会被拒绝CORS 策略仅允许来自http(s)://localhost与http(s)://127.0.0.1的跨域请求防止外部网页读取本地数据并支持OPTIONS预检。5.2 接口总览接口列表均支持 GET 与 POSTPOST 时参数放 JSON BodyContent-Type: application/json接口说明GET\|POST /health、GET\|POST /api/v1/health健康检查返回{status:ok}GET\|POST /api/v1/push/messagesSSE 主动推送需开启「主动推送」GET\|POST /api/v1/messages获取消息支持原始 JSON 与 ChatLab 格式GET\|POST /api/v1/sessions获取会话列表formatchatlab时为 ChatLab Pull 协议GET /api/v1/sessions/:id/messagesChatLab Pull 增量拉取会话消息GET\|POST /api/v1/contacts获取联系人列表GET\|POST /api/v1/group-members获取群成员列表GET\|POST /api/v1/media/*访问导出的媒体文件GET /api/v1/sns/timeline等朋友圈时间线、发布者、导出统计、媒体代理、导出、防删开关、删除单条朋友圈5.3 常用调用示例健康检查curl http://127.0.0.1:5031/health # {status:ok}获取消息GET带 Token Headercurl -H Authorization: Bearer YOUR_TOKEN http://127.0.0.1:5031/api/v1/messages?talkerwxid_xxxlimit20获取群消息的 ChatLab 格式curl http://127.0.0.1:5031/api/v1/messages?talkerxxxchatroomchatlab1按时间范围 选择性导出媒体curl http://127.0.0.1:5031/api/v1/messages?talkerxxxchatroomstart20260101end20260131media1image1voice0video0emoji0SSE 主动推送Token 走 Query 参数适合长连接curl -N http://127.0.0.1:5031/api/v1/push/messages?access_tokenYOUR_TOKEN推送事件名包含message.new与message.revoke事件字段包括event、sessionId、rawid、avatarUrl、sourceName、groupName仅群聊、content、timestamp秒级 Unix 时间戳建议接收端按event rawid去重。Postman / 自动化脚本可用的 POST 方式Python 示例import requests BASE_URL http://127.0.0.1:5031 headers {Authorization: Bearer YOUR_TOKEN, Content-Type: application/json} messages requests.post( f{BASE_URL}/api/v1/messages, json{talker: xxxchatroom, limit: 50}, headersheaders ).json()更完整的 PowerShell、cURL、Python 示例、各接口参数表与响应字段说明请直接查阅 docs/HTTP-API.md。5.4 使用注意事项API 仅监听本机127.0.0.1不对外网开放使用前需要先在 WeFlow 中完成数据库连接即配置好第三方 WCDB 组件并成功连接本地数据库start与end支持YYYYMMDD或时间戳纯YYYYMMDD的end会自动扩展到当天23:59:59群成员的groupNickname依赖源数据源数据缺失时不会自动补出媒体访问链接只有在对应消息通过media1导出后才可访问。六、面向开发者项目架构与二次开发6.1 目录结构速览electron/ # Electron 主进程服务层、Worker、窗口管理 services/ # 核心业务服务聊天、分析、导出、HTTP API、SNS 等 main.ts # 主进程入口与 IPC 注册 src/ # 渲染层React 页面与组件 pages/ # 各功能页面Chat、Export、Analytics、Agent 等 components/ # 通用组件 stores/ # Zustand 状态管理 services/ # 渲染层桥接exportBridge、ipc 等 docs/ # 文档HTTP-API、第三方组件协议 scripts/ # 构建辅助脚本 shared/ # 共享资源如群摘要 Prompt6.2 渲染层与主进程的通信渲染层通过 ipc.ts 与 preload.ts 暴露的桥接能力调用主进程主进程在 main.ts 的registerIpcHandlers()中统一注册ipcMain.handle(config:get / config:set / insight:* / ai:* ...)等处理器。导出功能则经由 exportBridge.ts 对接 exportWorker.ts 与 export 模块。6.3 配置中心全局配置由 config.ts 的ConfigService单例管理基于electron-store持久化。其中对敏感字段数据库解密密钥、图片 AES/XOR 密钥、API Token、AI Key 等做了两级保护普通模式使用 ElectronsafeStorage加密存储时带safe:前缀锁定模式开启应用锁后使用密码经 PBKDF210 万次迭代SHA-256派生的 AES-256-GCM 密钥加密存储时带lock:前缀密码验证通过后解密到内存缓存。七、第三方可插拔组件读取本地数据的必要前提WeFlow不再内置任何用于读取/解密本地数据的原生组件。以下四类能力全部由用户在「设置 → 数据库 → 第三方组件路径」中自行配置一个可执行文件/动态库/插件路径应用只按协议与其交互不对来源、签名或实现方式做任何校验路径留空或文件不存在时对应功能会直接返回「未配置」错误不会有降级或替代实现。完整协议见 docs/third-party-components.md核心要点如下配置项组件形态用途wcdbLibPath动态库Windows*.dll/ macOS*.dylib/ Linux*.so通过 koffi 以 C ABI 加载读取本地 SQLCipher 数据库提供会话/消息/联系人/朋友圈查询首个必实现函数为wcdb_open_account其余按需实现imageNativeAddonPathNode 原生插件.node通过require()加载媒体解密对应 nativeImageDecrypt.ts 的NativeAddon接口decryptDatNative/ 可选encryptDatNativewelivePath可执行文件会话批量原始导出引擎由 weliveBridge.ts 拉起stdin 输入WeliveExportRequestJSONstdout 按 NDJSON 输出WeliveExportEventkeyProviderPath以及imgHelperLibPath等自定义组件对应设置页中可配置的其他辅助组件路径其中 WCDB 动态库的加载流程在 wcdbCore.ts 的initialize()中实现先koffi.load(wcdbLibPath)再依次尝试绑定导出函数某个符号不存在时对应功能被跳过返回null不影响其余功能。完整函数签名列表约百个导出函数覆盖会话/消息/搜索/游标/群成员/统计/媒体解析/防撤回/朋友圈防删/表快照导入导出等请查阅 docs/third-party-components.md。八、合规与责任声明WeFlow 是本地数据处理工具请负责任地使用本工具遵守相关法律法规。聊天记录、联系人等均属于个人敏感数据涉及使用本工具处理非本人或未授权的数据时应确保已获得相应授权并符合所在地区法律要求。总结本文以 README.md 为主线系统梳理了 WeFlow 的功能清单、平台支持、安装与源码构建方式并结合 docs/HTTP-API.md、docs/third-party-components.md 以及 electron/services 下的源码实现深入讲解了 HTTP API 集成、媒体解密、分析报告与导出管线的内部构成。无论你是想直接使用成品版本管理自己的聊天数据还是想基于其 HTTP API 与可插拔组件协议做二次开发本文都已给出可落地的入口与查阅路径。赞分享【免费下载链接】WeFlowWeFlow - 一个本地的微信聊天记录导出和年度报告应用项目地址https://gitcode.com/gh_mirrors/wefl/WeFlow点击查看免费下载相关推荐WeChatMsg微信聊天记录导出与分析工具全解析WeChatMsg微信聊天记录导出与分析工具全解析 在数字化社交日益频繁的今天微信聊天记录已成为个人数据资产的重要组成部分。如何安全、高效地实现微信聊天记录导WeChatMsg微信聊天记录导出工具完整使用指南与实战技巧WeChatMsg微信聊天记录导出工具完整使用指南与实战技巧 你是否曾经想要永久保存那些珍贵的微信对话是否担心重要的聊天记录会因为手机更换或意外删除而丢失WeChatMsg微信聊天记录导出工具完整使用教程WeChatMsg微信聊天记录导出工具完整使用教程 还在为微信聊天记录无法长期保存而担忧吗WeChatMsg作为一款功能强大的开源工具能够帮助您将微信聊天记创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考