如果这个项目对你有帮助,欢迎通过爱发电支持我们的开发工作!
|
现代化的聊天界面,支持文字、图片、语音、视频等多种消息类型,完美还原聊天体验 |
支持多家 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 以上
npm install启动开发服务器(支持热重载):
npm run dev构建生产版本:
# 构建完整安装包
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 (GLM-4)
- DeepSeek
- 通义千问 (Qwen)
- Google Gemini
- 豆包 (Doubao)
- Kimi
- 硅基流动 (SiliconCloud)
特性:
- ✅ 自动代理检测(支持系统代理)
- ✅ 思考模式(显示 AI 推理过程)
- ✅ 自定义摘要详细程度
- ✅ 历史记录管理
- ✅ 成本统计(虚拟)
- 消息统计: 总消息数、发送/接收比例
- 时间分析: 活跃时段、聊天频率趋势
- 词云分析: 高频词汇可视化
- 群聊分析: 成员活跃度、互动关系
CipherTalk 现已提供基于 stdio 的独立 MCP Server,可供 Claude Desktop、Codex、Cherry Studio 等 MCP 宿主直接读取本地聊天数据。
npm run mcp首次运行若缺少 dist-electron/mcp.js,会自动执行 build:mcp 后再启动。
安装版会附带 ciphertalk-mcp.cmd 伴随启动器,放在安装目录根部,可直接作为宿主的 command 使用。
当前更新架构:
- 主更新源:GitHub Release(安装包、
latest.yml) - 策略补充源:
https://miyuapp.aiqji.com - 策略优先级:GitHub 优先,自定义源仅在 GitHub 策略不可用时作为回退
应用启动时会按以下顺序请求 force-update.json,用于判定:
https://github.com/ILoveBingLu/CipherTalk/releases/latest/download/force-update.jsonhttps://miyuapp.aiqji.com/force-update.json
策略字段含义:
- 最低安全版本
minimumSupportedVersion - 被封禁版本列表
blockedVersions - 强制更新提示文案
title/message
可用以下命令在 release/force-update.json 生成清单:
FORCE_UPDATE_MIN_VERSION=2.2.15 npm run build:force-update-manifest示例结构:
{
"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 自动发布。
触发方式:
- 修改
package.json.version - 提交并推送代码
- 推送同版本 Git 标签,例如:
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/completionsAI_MODEL:gpt-5.4
如配置 Telegram Bot,发布成功后还会自动发送:
- AI 摘要版发布通知
- 强制更新提醒(如存在)
- Release / 安装包按钮链接
若发布失败,也会自动发送失败通知和 Actions 日志链接。
health_checkget_statuslist_sessionsget_messageslist_contactssearch_messagesget_session_contextget_global_statisticsget_contact_rankingsget_activity_distribution
{
"mcpServers": {
"ciphertalk": {
"command": "npm",
"args": ["run", "mcp"],
"cwd": "E:/CipherTalk"
}
}
}{
"mcpServers": {
"ciphertalk": {
"command": "E:/CipherTalk/ciphertalk-mcp.cmd",
"args": [],
"cwd": "E:/CipherTalk"
}
}
}{
"name": "get_messages",
"arguments": {
"sessionId": "wxid_xxx",
"limit": 20,
"order": "asc",
"includeMediaPaths": true
}
}- 组件: 使用函数组件 + Hooks
- 命名: PascalCase (组件) / camelCase (变量、函数)
- 样式: BEM 命名规范 + SCSS
- 类型: 严格的 TypeScript 类型检查
项目使用 CSS 变量实现主题切换:
// 定义主题变量
:root {
--primary-color: #1890ff;
--bg-color: #ffffff;
--text-color: #333333;
}
[data-theme="dark"] {
--bg-color: #1a1a1a;
--text-color: #ffffff;
}使用 Zustand 进行状态管理:
// stores/chatStore.ts
export const useChatStore = create<ChatStore>((set) => ({
messages: [],
setMessages: (messages) => set({ messages }),
}))我们欢迎所有形式的贡献!无论是报告 Bug、提出新功能建议,还是提交代码改进。
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 提交 Pull Request
| 领域 | 说明 |
|---|---|
| 🐛 Bug 修复 | 修复 UI 相关的 bug 和功能问题 |
| ✨ 功能改进 | 改进用户界面和交互体验 |
| 📝 文档完善 | 完善文档、注释和使用说明 |
| 🎨 样式优化 | 优化样式、主题和视觉效果 |
| 🌍 国际化 | 添加多语言支持 |
| 🧪 测试 | 编写和完善测试用例 |
- 遵循现有的代码风格和规范
- 提交前确保代码通过 TypeScript 类型检查
- 为新功能添加必要的注释和文档
- 保持提交信息清晰明了
本项目采用 CC BY-NC-SA 4.0 许可证
(知识共享 署名-非商业性使用-相同方式共享 4.0 国际许可协议)
| 权利 | 说明 |
|---|---|
| 📥 共享 | 复制、发行本软件 |
| 🔧 演绎 | 修改、转换或以本软件为基础进行创作 |
| 👤 个人使用 | 用于学习和个人项目 |
| 要求 | 说明 |
|---|---|
| 📝 署名 | 必须给出适当的署名,提供指向本许可协议的链接 |
| 🚫 非商业性使用 | 不得用于商业目的 |
| 🔄 相同方式共享 | 如果修改本软件,必须使用相同的许可协议 |
- 销售本软件或其修改版本
- 用于任何商业服务或产品
- 通过本软件获取商业利益
查看 LICENSE 文件了解完整协议内容。
重要提示
- 本项目仅供学习和研究使用
- 请遵守相关法律法规和用户协议
- 使用本项目产生的任何后果由用户自行承担
- 请勿将本项目用于任何非法用途
| 渠道 | 链接 |
|---|---|
| 🌐 官方网站 | 密语 CipherTalk |
| 🐛 问题反馈 | GitHub Issues |
| 💬 讨论交流 | GitHub Discussions |
| 📱 Telegram 群组 | 加入群聊 |
| ⭐ 项目主页 | GitHub Repository |
感谢所有为开源社区做出贡献的开发者们!
特别感谢:
- WeFlow - 提供了部分功能参考
- 所有贡献者 - 感谢每一位为本项目做出贡献的开发者

