[Open Source] #254 - WeFlow: Hệ thống phân tích tri thức WeChat chuyên sâu với kiến trúc Electron, cơ chế Native FFI và hạ tầng xử lý dữ liệu đa luồng (Worker Threads)
Dữ liệu hội thoại trên WeChat từ lâu đã là một "hộp đen" đối với người dùng do các cơ chế mã hóa database phức tạp và định dạng tệp tin đặc chủng. WeFlow ra đời như một giải pháp hạ tầng mạnh mẽ, cho phép người dùng giải mã, sao lưu và phân tích sâu tri thức cá nhân từ WeChat ngay trên máy tính. Không chỉ dừng lại ở việc đọc tin nhắn, WeFlow tích hợp các mô hình AI ngoại tuyến để chuyển đổi giọng nói, phân tích từ khóa và tạo ra các báo cáo trực quan hóa dữ liệu quy mô lớn mà vẫn đảm bảo tính riêng tư tuyệt đối.
Dưới góc độ kỹ thuật, WeFlow là một minh chứng xuất sắc về việc ứng dụng kỹ thuật Memory Scanning, cơ chế Foreign Function Interface (FFI) và kiến trúc Multi-Worker Orchestration để xử lý hàng triệu bản ghi dữ liệu.
Github: https://github.com/v8u7/weflow
🛠️ 1. Nền tảng công nghệ: Giao thoa giữa Web và Native Runtime
WeFlow tận dụng tối đa sức mạnh của hệ sinh thái JavaScript hiện đại kết hợp với các thư viện nhị phân hiệu năng cao:
- Logic Core (Electron 39 & React 19): Sử dụng phiên bản Electron mới nhất để quản lý vòng đời ứng dụng Desktop. React 19 kết hợp với Zustand đảm bảo trạng thái giao diện luôn đồng bộ với các luồng dữ liệu khổng lồ từ database.
- Native Bridge (Koffi FFI): Thay vì sử dụng N-API phức tạp, WeFlow sử dụng Koffi để gọi trực tiếp các hàm từ file
.dll(Windows) hoặc.dylib(macOS). Kỹ thuật này cho phép ứng dụng thực hiện các tác vụ hệ thống nhạy cảm như trích xuất khóa giải mã từ bộ nhớ tiến trình. - Offline AI & NLP Engine:
- sherpa-onnx: Thực hiện nhận dạng giọng nói (STT) hoàn toàn ngoại tuyến, không gửi dữ liệu âm thanh ra ngoài.
- jieba-wasm: Phân tách từ (Segmentation) tốc độ cao để xây dựng bản đồ tri thức (Word Cloud).
- silk-wasm: Giải mã định dạng âm thanh độc quyền của Tencent (.silk) sang chuẩn PCM/WAV.
- Data Layer (Better-sqlite3): Tối ưu hóa việc truy vấn vào các tệp WCDB (WeChat Database) với hiệu suất tương đương mã nguồn C gốc.
🏗️ 2. Trụ cột kiến trúc: Multi-Worker Orchestration
Kiến trúc của WeFlow được thiết kế để giải quyết bài toán "treo máy" khi xử lý dữ liệu lớn (Big Data on Desktop):
- Decoupled Worker Architecture: Toàn bộ logic "nặng" được đẩy ra khỏi luồng chính (Main Thread) và luồng giao diện (UI Thread). Dự án chia nhỏ thành các Worker chuyên biệt:
wcdbWorker: Chuyên trách giải mã và đọc database liên tục.transcribeWorker: Xử lý các mô hình AI ONNX để chuyển đổi audio.annualReportWorker: Duyệt hàng triệu tin nhắn để tính toán thống kê.
- Memory Scanning Logic: WeFlow tích hợp bộ máy quét vùng nhớ (RW sections) để tìm kiếm khóa giải mã 64 ký tự của database WeChat trong khi ứng dụng đang chạy, giúp người dùng không cần nhập mật khẩu thủ công.
- Local Gateway API: Tích hợp một máy chủ HTTP nội bộ (
httpService.ts) chạy tại port 5031, biến WeFlow thành một "Data Provider" cho các ứng dụng phân tích bên thứ ba.
🔄 3. Workflow: Quy trình từ Giải mã đến Tri thức (Sequence Diagram)
Sơ đồ mô tả quy trình hệ thống điều phối việc trích xuất khóa và xử lý tin nhắn:

⚡ 4. Các kỹ thuật "Pro-level" trong mã nguồn
- XOR/AES Image Recovery: WeChat lưu trữ hình ảnh dưới dạng tệp
.datbị xáo trộn. WeFlow tự động thực hiện kỹ thuật phân tích Header để xác định thuật toán (XOR hoặc AES) và tìm khóa biến đổi tương ứng, cho phép xem ảnh trực tiếp mà không cần qua app WeChat. - Zstandard Stream Decompression: Nội dung tin nhắn trong database WeChat hiện đại thường được nén bằng thuật toán Zstandard. WeFlow tích hợp
fzstdđể giải nén dữ liệu theo luồng, đảm bảo tốc độ hiển thị tin nhắn dài không bị trễ. - Cross-process Hooking: Thông qua Native Bridge, ứng dụng lắng nghe sự kiện thay đổi tệp tin (File Watcher) trên database của WeChat. Khi có tin nhắn mới ghi xuống đĩa, WeFlow nhận diện và cập nhật giao diện trong chưa đầy 100ms.
- Static HTML Exporting: Một kỹ thuật tinh tế trong module xuất dữ liệu. WeFlow không chỉ xuất văn bản mà còn nhúng toàn bộ CSS, Image (Base64) và phông chữ vào một file HTML duy nhất, giúp người dùng có thể lưu trữ kỷ niệm chat vĩnh viễn và xem lại trên bất kỳ thiết bị nào mà không cần server.
⚖️ 5. So sánh chiến lược
| Tiêu chí | WeFlow | WeChat Backup (Chính thức) | Script Python lẻ |
|---|---|---|---|
| Giải mã DB | Tự động (Memory Scan) | Không (Dữ liệu đóng) | Thủ công (Khó) |
| Xử lý Media | Có (Giải mã ảnh/STT) | Hạn chế | Không có UI |
| Phân tích dữ liệu | Rất mạnh (Báo cáo năm) | Không có | Chỉ lọc text |
| Tính riêng tư | Tuyệt đối (100% Offline) | Phụ thuộc Server Tencent | Tuyệt đối |
| Giao diện | Đẳng cấp Desktop App | Đơn giản | CLI |
✅ Kết luận: Tại sao WeFlow là hạ tầng phân tích dữ liệu cá nhân mẫu mực?
WeFlow chứng minh rằng ngay cả với những hệ thống đóng nhất, chúng ta vẫn có thể giành lại quyền kiểm soát dữ liệu thông qua các kỹ thuật Kỹ nghệ ngược (Reverse Engineering) và kiến trúc phần mềm đúng đắn. Việc làm chủ sự phối hợp giữa Native Code và Node.js Workers đã biến WeFlow từ một công cụ sao lưu thành một nền tảng phân tích tri thức cá nhân bền bỉ và bảo mật.
Đối với các kỹ sư phần mềm, nghiên cứu WeFlow mang lại giá trị về:
- Kỹ thuật sử dụng FFI để tương tác với mã máy.
- Cách quản lý Worker Threads cho các tác vụ xử lý dữ liệu nặng.
- Tư duy thiết kế Local-first Software ưu tiên quyền riêng tư.
All rights reserved