
# 🔐 密语 CipherTalk
**一款现代化的微信聊天记录查看与分析工具**
[](LICENSE)
[](package.json)
[]()
[]()
[]()
[](https://t.me/CipherTalk)
[功能特性](#-功能特性) • [快速开始](#-快速开始) • [技术栈](#️-技术栈) • [贡献指南](#-贡献指南) • [许可证](#-许可证)
## YouTubu使用教程
[](https://www.youtube.com/watch?v=ZpuO14UOJkc)
---
## 💖 赞助支持
如果这个项目对你有帮助,欢迎通过爱发电支持我们的开发工作!
你的支持是我们持续更新的动力 ❤️
---
## ✨ 功能特性
💬 聊天记录查看
现代化的聊天界面,支持文字、图片、语音、视频等多种消息类型,完美还原聊天体验
|
🤖 AI 智能摘要
支持多家 AI 服务商(智谱、DeepSeek、通义千问、Gemini 等),一键生成聊天摘要,智能提取关键信息
|
👀 数据可视化分析
图表展示聊天数据,包括消息统计、活跃时段、词云分析等,深度洞察聊天习惯
|
🎨 多主题支持
浅色/深色模式自由切换,多种主题色可选,打造个性化的使用体验
|
🔍 全文搜索
强大的搜索功能,支持关键词、日期范围筛选,快速定位目标消息
|
📤 数据导出
支持导出聊天记录为 TXT、HTML 等格式,方便备份和分享
|
## 🛠️ 技术栈
| 类别 | 技术 |
|:---:|:---|
| **前端框架** | React 19 + TypeScript + Zustand |
| **桌面应用** | Electron 39 |
| **构建工具** | Vite + electron-builder |
| **样式方案** | SCSS + CSS Variables |
| **图表库** | ECharts |
| **AI 集成** | OpenAI SDK (支持多家 AI 服务商) |
| **其他** | jieba-wasm (分词) • lucide-react (图标) • marked (Markdown) |
---
## 🚀 快速开始
### 📋 环境要求
- **Node.js**: 22.12.0 或更高版本
- **操作系统**: Windows 10/11
- **内存**: 建议 4GB 以上
### 📦 安装依赖
```bash
npm install
```
### 🔧 开发模式
启动开发服务器(支持热重载):
```bash
npm run dev
```
### 📦 构建应用
构建生产版本:
```bash
# 构建完整安装包
npm run build
# 仅构建核心版本(不包含依赖)
npm run build:core
```
构建产物位于 `release/` 目录。
---
## 📁 项目结构
```
密语 CipherTalk/
├── 📂 src/ # React 前端源码
│ ├── 📂 components/ # 可复用组件
│ │ ├── ai/ # AI 相关组件
│ │ ├── Sidebar.tsx # 侧边栏
│ │ └── TitleBar.tsx # 标题栏
│ ├── 📂 pages/ # 页面组件
│ │ ├── ChatPage.tsx # 聊天页面
│ │ ├── AnalyticsPage.tsx # 数据分析页面
│ │ └── SettingsPage.tsx # 设置页面
│ ├── 📂 stores/ # Zustand 状态管理
│ ├── 📂 services/ # 前端服务层
│ ├── 📂 types/ # TypeScript 类型定义
│ ├── 📂 utils/ # 工具函数
│ └── 📂 styles/ # 全局样式
├── 📂 electron/ # Electron 主进程
│ ├── main.ts # 主进程入口
│ ├── preload.ts # 预加载脚本
│ └── 📂 services/ # 后端服务
│ ├── ai/ # AI 服务
│ ├── chatService.ts # 聊天服务
│ └── database.ts # 数据库服务
├── 📂 public/ # 静态资源
└── 📂 Docs/ # 项目文档
```
---
## 🎯 核心功能说明
### 🤖 AI 智能摘要
支持多家 AI 服务商,自动生成聊天摘要:
- **智谱 AI** (GLM-4)
- **DeepSeek**
- **通义千问** (Qwen)
- **Google Gemini**
- **豆包** (Doubao)
- **Kimi**
- **硅基流动** (SiliconCloud)
**特性:**
- ✅ 自动代理检测(支持系统代理)
- ✅ 思考模式(显示 AI 推理过程)
- ✅ 自定义摘要详细程度
- ✅ 历史记录管理
- ✅ 成本统计(虚拟)
### 📊 数据分析
- **消息统计**: 总消息数、发送/接收比例
- **时间分析**: 活跃时段、聊天频率趋势
- **词云分析**: 高频词汇可视化
- **群聊分析**: 成员活跃度、互动关系
---
## MCP Server
CipherTalk 现已提供基于 `stdio` 的独立 MCP Server,可供 Claude Desktop、Codex、Cherry Studio 等 MCP 宿主直接读取本地聊天数据。
### 开发态启动
```bash
npm run mcp
```
首次运行若缺少 `dist-electron/mcp.js`,会自动执行 `build:mcp` 后再启动。
### 打包态启动
安装版会附带平台对应的 MCP 启动器,可直接作为宿主的 `command` 使用:
- Windows:安装目录根部的 `ciphertalk-mcp.cmd`
- macOS:`CipherTalk.app/Contents/MacOS/ciphertalk-mcp`
### 强制更新清单
当前更新架构:
- **主更新源**:GitHub Release(安装包、`latest.yml`)
- **策略补充源**:`https://miyuapp.aiqji.com`
- **策略优先级**:GitHub 优先,自定义源仅在 GitHub 策略不可用时作为回退
应用启动时会按以下顺序请求 `force-update.json`,用于判定:
1. `https://github.com/ILoveBingLu/CipherTalk/releases/latest/download/force-update.json`
2. `https://miyuapp.aiqji.com/force-update.json`
策略字段含义:
- 最低安全版本 `minimumSupportedVersion`
- 被封禁版本列表 `blockedVersions`
- 强制更新提示文案 `title` / `message`
可用以下命令在 `release/force-update.json` 生成清单:
```bash
FORCE_UPDATE_MIN_VERSION=2.2.15 npm run build:force-update-manifest
```
示例结构:
```json
{
"schemaVersion": 1,
"latestVersion": "2.2.15",
"minimumSupportedVersion": "2.2.14",
"blockedVersions": ["2.2.13"],
"title": "必须更新到最新版本",
"message": "当前版本存在安全风险,请立即更新。",
"releaseNotes": "修复关键安全问题",
"publishedAt": "2026-04-01T00:00:00.000Z"
}
```
发布要求:
- **GitHub Release 必须上传**:安装包、`latest.yml`、`force-update.json`
- **自定义源可上传**:`force-update.json`
- 自定义源不再承担安装包和 `latest.yml` 分发
- GitHub Actions 同步到 R2 时只会清理旧安装包 `CipherTalk-*-Setup.exe`,不会删除桶里的其他文件
### 自动发布
仓库使用 GitHub Actions 自动发布。
触发方式:
1. 修改 `package.json.version`
2. 提交并推送代码
3. 推送同版本 Git 标签,例如:
```bash
git tag v2.2.14
git push origin v2.2.14
```
只有推送 `v*` 标签时才会正式构建并发布,不会在普通 `push main` 时自动发版。
自动发布内容:
- GitHub Release:安装包、`latest.yml`、`force-update.json`
- Cloudflare R2:安装包、`latest.yml`、`force-update.json`
- GitHub Release body:由工作流自动生成标准化中文版本说明
- Telegram:自动推送机器人风格的发布通知(支持多个频道/群)
AI 生成说明的密钥来源:
- GitHub Environment `软件发布`
- Secret 名称:`AI_API_KEY`
- 可选 Variable:`AI_API_URL`
- 可选 Variable:`AI_MODEL`
若 AI 不可用,工作流会自动回退为模板化 Release body,不影响正式发布。
默认情况下,发布说明生成会使用:
- `AI_API_URL`: `https://api.openai.com/v1/chat/completions`
- `AI_MODEL`: `gpt-5.4`
如配置 Telegram Bot,发布成功后还会自动发送:
- AI 摘要版发布通知
- 强制更新提醒(如存在)
- Release / 安装包按钮链接
若发布失败,也会自动发送失败通知和 Actions 日志链接。
### v1 工具
- `health_check`
- `get_status`
- `get_moments_timeline`
- `list_sessions`
- `get_messages`
- `list_contacts`
- `search_messages`
- `get_session_context`
- `get_global_statistics`
- `get_contact_rankings`
- `get_activity_distribution`
### 宿主配置示例(开发态)
```json
{
"mcpServers": {
"ciphertalk": {
"command": "npm",
"args": ["run", "mcp"],
"cwd": "E:/CipherTalk"
}
}
}
```
### 宿主配置示例(打包态)
Windows:
```json
{
"mcpServers": {
"ciphertalk": {
"command": "E:/CipherTalk/ciphertalk-mcp.cmd",
"args": [],
"cwd": "E:/CipherTalk"
}
}
}
```
macOS:
```json
{
"mcpServers": {
"ciphertalk": {
"command": "/Applications/CipherTalk.app/Contents/MacOS/ciphertalk-mcp",
"args": [],
"cwd": "/Applications/CipherTalk.app/Contents/MacOS"
}
}
}
```
macOS 打包态请直接指向 `.app` 内部的 `ciphertalk-mcp`,不要把 `CipherTalk.app` 本体当作 `command`。
### AI Copilot Skill
项目内置了 `ct-mcp-copilot` skill,用于让支持 Skills 的 Agent 更智能地使用 CipherTalk MCP:
- 模糊联系人 / 会话查找
- 线索补挖和候选比较
- 导出前补问和请求校验
在应用内的 MCP 页面可以一键安装到本机支持的 Agent:
- Codex:`~/.codex/skills`
- `.agents`:`~/.agents/skills`
- 以及主目录下发现的其他 `skills` 目录(如路径特征明显匹配 Agent)
Skill 使用独立版本号,不跟应用版本绑定。页面会显示:
- 当前内置 skill 版本
- 本机已安装版本
- 是否可更新(仅对比本地已安装版本是否落后)
还支持直接导出本地 skill 压缩包:
- 文件名格式:`ct-mcp-copilot-v.zip`
- 默认导出到系统 Downloads 目录
- 可用于手动导入到支持 skills 的 Agent
安装后可直接这样使用:
- `使用 ct-mcp-copilot 帮我查这个人`
- `使用 ct-mcp-copilot 帮我补全导出问题`
说明:
- 安装器使用“复制安装”,不会创建软链接
- 当前只管理内置 skill `ct-mcp-copilot`
- 当前只检查本地已安装版本是否落后,不检查远程最新版本
- Cherry Studio 等 MCP 宿主继续使用 `mcpServers` 配置,不属于 skills 目录安装模型
### 参数示例
```json
{
"name": "get_messages",
"arguments": {
"sessionId": "wxid_xxx",
"limit": 20,
"order": "asc",
"includeMediaPaths": true
}
}
```
朋友圈时间线示例:
```json
{
"name": "get_moments_timeline",
"arguments": {
"limit": 20,
"offset": 0,
"usernames": ["wxid_xxx"],
"keyword": "旅行",
"startTime": 1704067200,
"endTime": 1735689599,
"includeRaw": false
}
}
```
第一版返回朋友圈结构化时间线,不包含媒体下载或本地路径解析接口。
---
## 💻 开发指南
### 代码规范
- **组件**: 使用函数组件 + Hooks
- **命名**: PascalCase (组件) / camelCase (变量、函数)
- **样式**: BEM 命名规范 + SCSS
- **类型**: 严格的 TypeScript 类型检查
### 主题系统
项目使用 CSS 变量实现主题切换:
```scss
// 定义主题变量
:root {
--primary-color: #1890ff;
--bg-color: #ffffff;
--text-color: #333333;
}
[data-theme="dark"] {
--bg-color: #1a1a1a;
--text-color: #ffffff;
}
```
### 状态管理
使用 Zustand 进行状态管理:
```typescript
// stores/chatStore.ts
export const useChatStore = create((set) => ({
messages: [],
setMessages: (messages) => set({ messages }),
}))
```
---
## 🤝 贡献指南
我们欢迎所有形式的贡献!无论是报告 Bug、提出新功能建议,还是提交代码改进。
### 如何贡献
1. **Fork** 本仓库
2. **创建**特性分支 (`git checkout -b feature/AmazingFeature`)
3. **提交**更改 (`git commit -m 'Add some AmazingFeature'`)
4. **推送**到分支 (`git push origin feature/AmazingFeature`)
5. **提交** Pull Request
### 贡献领域
| 领域 | 说明 |
|:---:|:---|
| 🐛 **Bug 修复** | 修复 UI 相关的 bug 和功能问题 |
| ✨ **功能改进** | 改进用户界面和交互体验 |
| 📝 **文档完善** | 完善文档、注释和使用说明 |
| 🎨 **样式优化** | 优化样式、主题和视觉效果 |
| 🌍 **国际化** | 添加多语言支持 |
| 🧪 **测试** | 编写和完善测试用例 |
### 开发建议
- 遵循现有的代码风格和规范
- 提交前确保代码通过 TypeScript 类型检查
- 为新功能添加必要的注释和文档
- 保持提交信息清晰明了
---
## 📄 许可证
本项目采用 **CC BY-NC-SA 4.0** 许可证
(知识共享 署名-非商业性使用-相同方式共享 4.0 国际许可协议)
### ✅ 您可以自由地
| 权利 | 说明 |
|:---:|:---|
| 📥 **共享** | 复制、发行本软件 |
| 🔧 **演绎** | 修改、转换或以本软件为基础进行创作 |
| 👤 **个人使用** | 用于学习和个人项目 |
### 📋 但必须遵守
| 要求 | 说明 |
|:---:|:---|
| 📝 **署名** | 必须给出适当的署名,提供指向本许可协议的链接 |
| 🚫 **非商业性使用** | 不得用于商业目的 |
| 🔄 **相同方式共享** | 如果修改本软件,必须使用相同的许可协议 |
### ❌ 严格禁止
- 销售本软件或其修改版本
- 用于任何商业服务或产品
- 通过本软件获取商业利益
查看 [LICENSE](LICENSE) 文件了解完整协议内容。
---
## ⚠️ 免责声明
> **重要提示**
>
> - 本项目仅供**学习和研究**使用
> - 请遵守相关**法律法规**和用户协议
> - 使用本项目产生的任何后果由**用户自行承担**
> - 请勿将本项目用于任何**非法用途**
---
## 📞 联系方式
| 渠道 | 链接 |
|:---:|:---|
| 🌐 **官方网站** | [密语 CipherTalk](https://miyu.aiqji.com) |
| 🐛 **问题反馈** | [GitHub Issues](https://github.com/ILoveBingLu/CipherTalk/issues) |
| 💬 **讨论交流** | [GitHub Discussions](https://github.com/ILoveBingLu/CipherTalk/discussions) |
| 📱 **Telegram 群组** | [加入群聊](https://t.me/CipherTalkChat) |
| ⭐ **项目主页** | [GitHub Repository](https://github.com/ILoveBingLu/CipherTalk) |
---
## 🙏 致谢
感谢所有为开源社区做出贡献的开发者们!
特别感谢:
- **[WeFlow](https://github.com/hicccc77/WeFlow)** - 提供了部分功能参考
- **所有贡献者** - 感谢每一位为本项目做出贡献的开发者
---
## 📈 Star History
---
一鲸落,万物生 · 愿每一段对话都被温柔以待 ❤️ by the CipherTalk Team