Electron 39 + React 19 + Vite:密语CipherTalk整体架构与源码结构导读
【免费下载链接】CipherTalk查无此人?项目地址: https://gitcode.com/gh_mirrors/ci/CipherTalk
密语 CipherTalk是一款现代化的微信聊天记录查看与分析工具,基于Electron 39 + React 19 + Vite技术栈构建。本文带你快速读懂它的整体架构与源码结构:三层进程如何分工、30+ 个 IPC 处理器如何注册、目录里每个文件夹管什么,以及三步跑起来项目的方法。适合刚接触 Electron 桌面端开发的新手阅读。
一、技术栈速览:这套组合解决了什么问题
密语 CipherTalk 的核心挑战是:既要本地读取并解密微信数据库,又要有流畅美观的界面,还要支持 AI 与插件扩展。它的技术选型正好对应这三点:
| 技术 | 版本 | 在项目中承担的职责 |
|---|---|---|
| Electron | 39 | 桌面容器,多窗口、托盘、本地文件与原生模块 |
| React + TypeScript | 19 / 5.6 | 渲染层 UI,页面、组件、状态管理 |
| Vite | 6 | 开发热重载 + 打包主进程/预加载/Worker 等 8 个入口 |
| Tailwind CSS 4 + SCSS | 4.3 | 原子化样式 + 局部定制 |
| better-sqlite3 / WCDB | 12 / 原生 | 本地数据库读取、微信消息解密 |
| electron-builder | 25 | 打包 Windows / macOS 安装包 |
完整依赖清单见 package.json,其中electron、react、vite的版本一目了然。
二、三层架构:主进程、预加载脚本、渲染进程
Electron 项目的经典结构是“三层分工”,密语 CipherTalk 是教科书式的实现:
2.1 主进程:electron/
入口是 electron/main.ts,负责:
- 窗口管理:创建主窗口、聊天摘要窗、朋友圈窗、宠物窗等多个窗口(见 electron/main/windows/windowManager.ts)
- 启动诊断:启动每个阶段都有里程碑打点,出问题能定位到哪一步
- 自定义协议:注册
local-video、local-image、ct-plugin等特权协议,让聊天里的本地视频、图片、插件资源能安全地在页面里播放 - IPC 总注册:所有主进程能力都通过模块化处理器暴露
2.2 预加载脚本:electron/preload.ts
electron/preload.ts 通过contextBridge把安全的electronAPI暴露给页面。渲染进程不直接碰ipcRenderer,而是调用封装好的方法——这是 Electron 安全编程的关键一步。
2.3 渲染进程:src/
入口 src/main.tsx 只有十几行:React 19 的createRoot挂载,HashRouter管理路由。真正的页面在src/pages/下,按功能分块:
- chat/:聊天记录主界面(会话列表、消息流、多媒体渲染)
- export/:导出中心(HTML / Excel / 图片等格式)
- agent/:AI 智能体对话与画布
- SettingsPage、ChatHistoryPage、MomentsWindow等独立窗口页面
状态管理用zustand(src/stores/),数据访问层在 src/services/(IPC 封装、WCDB 连接封装等)。
2.4 IPC 是骨架:30+ 个模块化处理器
主进程的能力通过 IPC 暴露,注册全部集中在 electron/main/ipc/register.ts:一个文件引入 30+ 个register*Handlers(chat、export、ai、mcp、plugin、media……),每个处理器单独成文件放在electron/main/ipc/下。读源码时,这份文件就是主进程能力的“目录页”。
三、源码结构导读:顶层目录逐个讲
| 目录 | 一句话职责 |
|---|---|
| electron/ | 主进程全部逻辑:窗口、IPC、服务(AI/Agent/MCP/记忆/检索/语音转写等) |
| src/ | React 渲染进程:页面、组件、store、样式 |
| CipherTalk-CLI/ | 独立 CLI 子项目,提供miyu命令行,有自己的构建与发布流程 |
| plugin-sdk/ | 插件 SDK,供第三方插件开发 |
| examples/plugins/ | 插件示例(收藏、UI 画廊、HeroUI 模板) |
| skills/ | 内置 AI 技能包(MCP Copilot 等) |
| scripts/ | 构建、发版、MCP 运行器等工程脚本 |
| public/ | 图标、表情包、宠物素材、背景图等静态资源 |
其中electron/services/是最值得逛的目录,每个子目录对应一个大功能:
- electron/services/chat/:消息解析、会话列表、表情、红包等查询
- electron/services/agent/:AI 智能体引擎、工具集、提示词、记忆管理
- electron/services/mcp/:MCP 服务器,把聊天记录查询能力开放给外部 AI 工具
- electron/services/memory/:记忆数据库与夜间记忆整理
- electron/services/retrieval/ 与 electron/services/search/:全文检索、向量检索与 RRF 融合
Vite 如何编排 8 个构建入口
看 vite.config.ts 会发现vite-plugin-electron一次性编译了 8 个入口:主进程main.ts、预加载preload.ts、语音转写 Worker、图片解密 Worker、WCDB 工具进程、AI 导出/Agent 工具进程,以及 MCP 进程。重活全部被拆到 Worker 和独立进程中,主界面因此保持流畅——这是本项目最值得学习的一点。
四、三步跑起来:克隆、安装、启动
环境要求:Node.js ≥ 22.12,Windows 10/11(或 macOS)。
# 1. 克隆仓库 git clone https://gitcode.com/gh_mirrors/ci/CipherTalk cd CipherTalk # 2. 安装依赖(postinstall 会自动 electron-rebuild 原生模块) npm install # 3. 启动开发模式(热重载) npm run dev生产构建则用npm run build,安装包输出到release/目录(配置见 package.json 的build字段)。想体验 CLI 版本可以单独执行npm run cli:install && npm run cli -- status。
五、总结:从源码结构看架构思路
一句话概括密语 CipherTalk 的架构:主进程管数据与重活,预加载脚本守安全边界,React 19 渲染层管体验,Vite 统一编排 8 个进程入口。目录即功能图——想读懂某个功能,先定位electron/services/对应子目录,再顺着 electron/main/ipc/register.ts 找到 IPC 通道,最后到src/pages/看界面如何消费数据。按这条线索读,即使面对千行级的大项目,也能像逛地图一样轻松上手。
【免费下载链接】CipherTalk查无此人?项目地址: https://gitcode.com/gh_mirrors/ci/CipherTalk
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考