Skip to content

ILoveBingLu/CipherTalk

Repository files navigation

密语 CipherTalk

🔐 密语 CipherTalk

一款现代化的微信聊天记录查看与分析工具

License Version Platform Electron React Telegram

功能特性快速开始技术栈贡献指南许可证

YouTubu使用教程

观看使用教程


💖 赞助支持

如果这个项目对你有帮助,欢迎通过爱发电支持我们的开发工作!

爱发电

你的支持是我们持续更新的动力 ❤️


✨ 功能特性

💬 聊天记录查看

现代化的聊天界面,支持文字、图片、语音、视频等多种消息类型,完美还原聊天体验

🤖 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 以上

📦 安装依赖

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 服务商,自动生成聊天摘要:

  • 智谱 AI (GLM-4)
  • DeepSeek
  • 通义千问 (Qwen)
  • Google Gemini
  • 豆包 (Doubao)
  • Kimi
  • 硅基流动 (SiliconCloud)

特性:

  • ✅ 自动代理检测(支持系统代理)
  • ✅ 思考模式(显示 AI 推理过程)
  • ✅ 自定义摘要详细程度
  • ✅ 历史记录管理
  • ✅ 成本统计(虚拟)

📊 数据分析

  • 消息统计: 总消息数、发送/接收比例
  • 时间分析: 活跃时段、聊天频率趋势
  • 词云分析: 高频词汇可视化
  • 群聊分析: 成员活跃度、互动关系

MCP Server

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,用于判定:

  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 生成清单:

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.ymlforce-update.json
  • 自定义源可上传force-update.json
  • 自定义源不再承担安装包和 latest.yml 分发
  • GitHub Actions 同步到 R2 时只会清理旧安装包 CipherTalk-*-Setup.exe,不会删除桶里的其他文件

自动发布

仓库使用 GitHub Actions 自动发布。

触发方式:

  1. 修改 package.json.version
  2. 提交并推送代码
  3. 推送同版本 Git 标签,例如:
git tag v2.2.14
git push origin v2.2.14

只有推送 v* 标签时才会正式构建并发布,不会在普通 push main 时自动发版。

自动发布内容:

  • GitHub Release:安装包、latest.ymlforce-update.json
  • Cloudflare R2:安装包、latest.ymlforce-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
  • list_sessions
  • get_messages
  • list_contacts
  • search_messages
  • get_session_context
  • get_global_statistics
  • get_contact_rankings
  • get_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、提出新功能建议,还是提交代码改进。

如何贡献

  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 文件了解完整协议内容。


⚠️ 免责声明

重要提示

  • 本项目仅供学习和研究使用
  • 请遵守相关法律法规和用户协议
  • 使用本项目产生的任何后果由用户自行承担
  • 请勿将本项目用于任何非法用途

📞 联系方式

渠道 链接
🌐 官方网站 密语 CipherTalk
🐛 问题反馈 GitHub Issues
💬 讨论交流 GitHub Discussions
📱 Telegram 群组 加入群聊
项目主页 GitHub Repository

🙏 致谢

感谢所有为开源社区做出贡献的开发者们!

特别感谢:

  • WeFlow - 提供了部分功能参考
  • 所有贡献者 - 感谢每一位为本项目做出贡献的开发者

📈 Star History

Star History Chart

一鲸落,万物生 · 愿每一段对话都被温柔以待 ❤️ by the CipherTalk Team

About

优秀的软件

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors