Back to skills
extension
Category: Data & AnalyticsNo API key required

微信聊天分析及预测工具(新增语音交互功能)

微信聊天分析助手 v2.9.0 — 完全本地运行的隐私保护工具。 分析聊天记录,推断 MBTI 与大五人格,检测情感趋势,生成可视化报告。 支持 jieba 精准分词、否定识别、反讽检测、风险预警、RAG 检索增强预测、 多智能体博弈模拟(MiroFish),完全本地化、零数据外传。 v2.9.0 新增关系健康度五维分析、情感滚动趋势与转折点检测、 语音交互(Windows SAPI 零依赖降级,说/打字均可)。

personAuthor: user_9d5a2a39hubcommunity

微信聊天分析助手 v2.9.0

完全本地运行、模块化架构、AI 增强的隐私保护工具

分析 MBTI 人格、大五人格、情感趋势、关系健康度、风险预警,生成可视化报告。 v2.9.0 新增关系健康度分析器(平衡/回应/情感同步/投入/深度五维 + 冷回复惩罚)、情感分析增强(滚动趋势 + 情感转折点 + 己方情感占比)与语音交互(说一句话就能分析/预测/出报告,零依赖自动降级),测试 329 → 394 全通过; v2.5.0 修复 5 个真实 bug(「非常」窗口误判否定 / RAG 角色过滤失效 / msg_type 丢失 / MBTI 显示崩溃 / 无发送者行 self-other 颠倒),接入全链路友好错误提示与 predict-v2 --seed 可复现预测; v2.4.0 修复情感分析在 jieba 下的否定/程度识别 bug,补全 4 个模块测试; v2.3.0 新增时间感知对话预测与回复时机提示;v2.2.0 新增推演与信息解读;v2.1.0 新增 demo、环境自检、离线 HTML 报告。

🆕 v2.9.0 分析能力增强 + 语音交互

  • 💗 关系健康度分析器 — 互动平衡 / 回应速度 / 情感同步 / 投入度 / 互动深度五维加权 0-100,冷回复(对方长消息后回「嗯/哦」)额外扣分,输出 excellent/good/fair/warning 等级与中文改善建议(config.json 可关闭)
  • 📈 情感趋势深化 — 新增滚动情感平均序列(rolling_trend)、情感转折点检测(turning_points:变差/好转)、己方情感占比(self_positive/self_negative),终端报告展示转折点,全部向后兼容
  • 🎤 语音交互python scripts/main.py voice 进入会话:「分析 chat.txt / 预测一下 / 跑个演示 / 自检 / 生成报告 / 看日历 / 退出」;TTS 三级降级(pyttsx3 → Windows SAPI 零依赖 → 终端打印),无麦克风自动降级文本输入,分析结果口语化播报

🆕 v2.5.0 五大 bug 修复 + 友好错误 + 可复现预测

  • 🐛 修复「非常开心」在长消息中「非」按错位索引误判否定(sentiment_analyzer
  • 🐛 修复 RAG sender_filter="other" 按原始昵称永远匹配不上 → 引入 sender_role 角色过滤 + 旧库自动降级
  • 🐛 修复 Message.from_dict 只认 message_type 导致旧数据 image/voice/system 类型丢失
  • 🐛 修复 MBTI 分析器失败时 _display_v2_results KeyError 中断报告展示
  • 🐛 修复无发送者行 self/other 颠倒(注释与代码相反)+ 过滤纯时间戳行/分隔线
  • 🛡 friendly_errors.py 接入 CLI 主入口:中文「原因+解决」提示,--debug 看完整堆栈
  • 🎲 predict-v2 --seed N 可复现预测(MiroFish seeded 随机源,默认 seed=0 稳定)
  • ⚡ 性能:pseg.cutjieba.cut、情感词典首字索引、高频词 Counter 排序、二进制中文提取重写
  • 🧪 测试 272 通过 / 0 失败 / 0 错误(修复 run_tests 漏跑顶层测试、缺依赖优雅跳过)

🆕 v2.4.0 情感分析与测试补全

  • 修复「非常开心」被「非」字误判为否定、「我不开心」否定识别失效(jieba 装与不装结果一致)
  • 修复立场识别「我反对」被判 neutral(正面词典单字「对」污染)
  • 新增 interpretation / data_manager / vector_store / rag_predictor 共 75 个测试用例

🆕 v2.3.0 时间感知预测

  • core/timing.py:统一计算消息紧急性、时间段、周末/工作日、连续对话节奏
  • predict-v2 输出 [回复时机]:立即 / 尽快 / 今天内 / 隔太久先主动找回联系
  • Rule 与 Ensemble 预测器都使用时间特征调整候选和置信度

🎉 v2.1.0 新特性

  • 🧬 补齐 mirofish/ 本地图谱包 — 修复 graph-stats 崩溃(sqlite3 + jieba,零新依赖)
  • 📄 文件编码自动检测 — utf-8-sig / utf-8 / gb18030 自动识别,GBK 导出文件不再崩溃
  • 📊 大五人格校准 — 小样本不再轻易饱和 100%,各维度区分度更好
  • 📈 分析进度反馈[i/6] xxx ... 完成 (0.12s) 实时显示
  • 💾 结果导出analyze-v2 --export result.json
  • 🌐 单文件离线 HTML 报告analyze-v2 --html report.html / report-v2,零 CDN 零外部资源
  • 🌟 demo 一键体验 — 内置示例数据,30 秒跑完全流程
  • 🧪 doctor 环境自检 — 依赖/config/目录/编码逐项检查 + 修复建议
  • 🧭 交互式向导 — 无参数启动直接进入粘贴分析(-h 不变)
  • 📝 一句话总结 — 终端报告末尾自动生成中文摘要
  • 🧠 MBTI 稳定性提示 — 稳定性低时明确提示"结果仅供参考"
  • 🔮 predict-v2 备选去重 — 按规范化文本合并重复模板

v2.0.0 基础特性

  • 🧠 jieba 精准分词 — 替代简陋的正则分词
  • 💬 否定识别 — 修复"我不开心"被误判的 bug
  • 🎭 反讽检测 — 识别"虽然...但是..."等句式
  • 📊 新 MBTI 置信度算法 — 维度差距 + 样本量综合评估
  • 📚 本地 RAG 引擎 — sentence-transformers + ChromaDB
  • 🐟 MiroFish 多智能体 — 8 Agent × N 轮模拟 + 投票博弈
  • 🔮 三层集成预测 — Rule + RAG + MiroFish 加权融合
  • 🏗️ 模块化架构core/ / analyzers/ / predictors/ / rag/ / mirofish/
  • 🔒 隐私优先 — 100% 本地处理,零数据外传
  • ♻️ 完全向后兼容 v1.2.0 — 所有旧命令保留

30秒快速上手

第一步:安装核心依赖

pip install -r requirements.txt

第二步:一键体验(推荐新用户)

python scripts/main.py demo      # 分析内置示例 + 生成 HTML 报告
python scripts/main.py doctor    # 环境自检
python scripts/main.py voice     # v2.9 语音交互(说/打字均可,无麦克风自动降级文本输入)

第三步:分析自己的聊天记录

python scripts/main.py                              # 交互式向导
python scripts/main.py analyze-v2 --input 聊天记录.txt --html report.html

完成! 终端报告 + 离线 HTML 报告(浏览器直接打开)。


命令对照

| 功能 | 推荐命令 | v1.2.0 兼容 | |------|-------------|-------------| | 一键体验 | demo | (无) | | 环境自检 | doctor | (无) | | 分析 | analyze-v2 --paste | analyze --paste | | 导出 JSON | analyze-v2 --export result.json | (无) | | HTML 报告 | analyze-v2 --html r.html / report-v2 | report --report-type html | | 预测 | predict-v2 --paste | (无) | | 图谱统计 | graph-stats | (无) | | Web | (v1.2.0 命令) | serve --port 5000 | | 定时任务 | (v1.2.0 命令) | schedule --list | | 日历 | (v1.2.0 命令) | calendar --list |

v1.2.0 的所有命令在 v2.1.0 中保留并继续工作。


功能一览

分析能力

  • MBTI 推断 — 从聊天风格推断对方 MBTI 16 型人格
    • v2.0.0: 维度差距 + 样本量综合置信度,输出稳定性评分
  • 大五人格 — 开放性 / 尽责性 / 外向性 / 宜人性 / 神经质
    • v2.0.0: 归一化 + 雷达图数据 + 补全 neuroticism low 词
  • 情感分析 — 追踪情感变化趋势,正面/负面比例
    • v2.0.0: jieba 分词 + 否定识别 + 程度副词 + 反讽检测 + HowNet 词典 + Emoji 映射
  • 风险感知 — 标记值得关注的对话模式
    • v2.0.0: 反讽识别 + 否定排除 + 时序突发 + 三级风险
  • 场景分类 — 恋爱 / 工作 / 社交 / 重要事项
  • 对话模式 — 回复速度、主动率、问号/感叹号比例
    • v2.0.0: 修复 v1.2.0 的 reply_speed 丢失 bug

预测能力(v2.0.0 新增)

  • Rule 预测 — 16 MBTI × 5 模板 + 场景 + 关键词触发
  • RAG 预测 — 检索 top-K 相似历史对话作为 few-shot
  • MiroFish 预测 — 8 Agent × N 轮模拟 + 多轮辩论 + 加权投票
  • Ensemble — 三层加权融合

可视化报告

  • v2.1.0:单文件离线 HTML 报告(analyze-v2 --html / report-v2),内联 SVG 图表,零外部资源
  • HTML / Word (.docx) / PPTX 格式(v1.2.0 保留)

完整使用指南

方式一:交互式向导 / demo(v2.1.0 推荐)

python scripts/main.py            # 无参数进入向导:粘贴 → 分析 → 可选 HTML 报告
python scripts/main.py demo       # 一键体验内置示例

方式二:v2 粘贴/文件分析

python scripts/main.py analyze-v2 --paste
python scripts/main.py analyze-v2 --input 聊天记录.txt    # 自动识别 utf-8/GBK
python scripts/main.py analyze-v2 --input 聊天记录.txt --export result.json --html report.html

方式三:v2 三层预测

python scripts/main.py predict-v2 --input 聊天记录.txt

输出示例:

[最佳预测] 置信度 78.5%
  策略: rule,mirofish
  内容: 「我先确认一下情况」

[备选预测]
  1. [65%] (rag) 「好的,我跟进一下」
  2. [62%] (mirofish) 「收到,我处理一下」

方式四:v1.2.0 文件导入(保留)

python scripts/main.py analyze --file 聊天记录.txt

支持格式:.txt .json .docx .pdf .jpg .mp3

方式五:v1.2.0 Web 服务

python scripts/main.py serve
# 浏览器打开 http://localhost:5000

方式六:生成报告

# v2.1.0:单文件离线 HTML(推荐)
python scripts/main.py analyze-v2 --input 聊天记录.txt --html report.html
python scripts/main.py report-v2                       # 用最近一次 v2 结果生成

# v1.2.0:多格式报告(保留)
python scripts/main.py report --report-type html    # HTML 报告
python scripts/main.py report --report-type word    # Word 报告
python scripts/main.py report --report-type pptx    # PPTX 报告
python scripts/main.py report --report-type all     # 全部格式

v2 分析结果示例

终端输出

  [1/6] mbti ... 完成 (0.01s) ✅
  [2/6] bigfive ... 完成 (0.00s) ✅
  [3/6] sentiment ... 完成 (0.02s) ✅
  [4/6] risk ... 完成 (0.00s) ✅
  [5/6] scenario ... 完成 (0.00s) ✅
  [6/6] pattern ... 完成 (0.00s) ✅

============================================================
   微信聊天分析报告 v2.1.0
============================================================

🧠 [MBTI] ENFP - 竞选者
  置信度: 78.5%
  特征: 外向 | 直觉 | 情感 | 感知
  稳定性: 82%

🔬 [大五] OCEAN 人格分析
  开放性: [#######...] 68%
  尽责性: [#####.....] 52%
  外向性: [#######...] 71%
  宜人性: [#######...] 73%
  神经质: [####......] 42%

💬 [情感] 趋势: [上升]
  正面: 65.5% / 负面: 22.3% / 中性: 12.2%
  [v2.0.0] 检测到 3 条反讽
  正面词: 开心, 喜欢, 期待, 不错, 哈哈
  负面词: 担心, 紧张, 压力

⚠️ [风险]
  [MEDIUM] pig_butcher
    对方可能正在实施诈骗
    命中 2 次: 投资, 充值
    [建议]: 听起来不错,但我得先研究研究

🎯 [场景] 主场景: [工作]
    work: 18
    important: 12
    social: 5

📊 [模式] 对话模式分析
  主动发起: 我 35% / TA 65%
  平均回复: 245 秒
  快速回复 (<1分钟): 23
  慢速回复 (>1小时): 5
  聊天跨度: 15 天

============================================================

目录结构(v2.1.0)

wechat-analyzer/
├── core/                       # 🆕 核心抽象层
│   ├── message.py              # 统一 Message 模型
│   ├── result.py               # 统一 Result 模型
│   ├── analyzer_base.py        # 分析器抽象基类(run_all 支持进度回调)
│   ├── predictor_base.py       # 预测器抽象基类
│   └── utils.py                # 工具(分词/停用词/logger/编码自动检测)
│
├── analyzers/                  # 🆕 6 个独立分析器
│   ├── mbti_analyzer.py
│   ├── bigfive_analyzer.py     # v2.1.0 归一化校准
│   ├── sentiment_analyzer.py   # 否定识别 + 反讽
│   ├── risk_analyzer.py
│   ├── scenario_analyzer.py
│   ├── pattern_analyzer.py
│   └── lexicon/                # 🆕 词典资源
│       ├── hownet_positive.txt
│       ├── hownet_negative.txt
│       ├── negation_words.txt
│       ├── degree_words.txt
│       ├── emoji_dict.txt
│       └── jieba_dict/
│           └── user_dict.txt
│
├── predictors/                 # 🆕 3 个预测器 + Ensemble
│   ├── rule_predictor.py
│   ├── rag_predictor.py
│   ├── mirofish_predictor.py
│   └── ensemble.py             # v2.1.0 备选规范化去重
│
├── rag/                        # 🆕 RAG 引擎
│   ├── embedder.py
│   ├── vector_store.py
│   └── retriever.py
│
├── mirofish/                   # 🆕 v2.1.0 本地图谱包
│   └── core/
│       └── zep_local.py        # ZepLocalGraph(sqlite3 + jieba,替代 Zep Cloud)
│
├── scripts/                    # ♻️ 旧脚本(向后兼容)
│   ├── main.py                 # CLI 入口(v1.2.0 + v2.0.0 + v2.1.0)
│   ├── v2_report_generator.py  # 🆕 v2.1.0 单文件离线 HTML 报告
│   ├── main_setup.py
│   ├── text_analyzer.py        # v1.2.0 保留
│   ├── conversation_predictor.py
│   ├── llm_analyzer.py
│   ├── report_generator.py
│   ├── data_manager.py
│   ├── file_importer.py        # v2.1.0 编码自动检测
│   ├── calendar_manager.py
│   ├── scheduler.py
│   ├── web_server.py
│   ├── mirofish/               # v1.2.0 高级 MiroFish
│   └── archive_v1/             # v1.2.0 完整快照
│
├── templates/                  # Web 模板
├── data/                       # 数据存储
│   ├── chat_history.db
│   ├── vector_store/           # 🆕 ChromaDB 持久化
│   ├── models/                 # 🆕 embedding 模型
│   ├── reports/                # 🆕 v2.1.0 HTML 报告输出目录
│   └── mirofish_graph.db   # 🆕 本地图谱
│
├── tests/                      # 🆕 单元测试(含 fixtures 示例数据)
├── config.json                 # v2.1.0 配置
├── requirements.txt            # 核心依赖
├── requirements-rag.txt        # 🆕 RAG 独立依赖
├── requirements-web.txt        # ⏳ 未来 Web 依赖
├── SKILL.md                    # Skill 定义
└── README.md                   # 本文件

使用限制

使用前请了解以下限制:

  • 单次分析建议不超过 500 条消息。 超出后分析耗时较长。
  • 分析结果仅供参考。 人格推断基于关键词匹配,不是专业心理评估。
  • RAG 首次运行需联网。 下载 embedding 模型约 50-100MB(1-2 分钟),之后完全离线。
  • RAG 依赖未安装时自动降级。 预测自动回退到 Rule 层,不影响其他功能。
  • v1.2.0 命令继续可用。 行为与 v1.2.0 一致,不影响现有用户。

如何导出微信聊天记录

方法一:直接复制文字(最快)

  1. 打开电脑端微信,进入聊天对话框
  2. 鼠标选中聊天内容(可多选)
  3. Ctrl + C 复制
  4. 在工具中粘贴即可

方法二:从微信导出文件

  1. 打开电脑端微信聊天窗口
  2. 点击右上角 ...··· 按钮
  3. 选择 聊天记录聊天文件
  4. 点击 导出聊天记录
  5. 选择格式 txt,保存到本地
  6. 使用 python scripts/main.py analyze-v2 --input 文件路径.txt

LLM API 配置(可选,v2.0.0 默认禁用)

v2.0.0 默认禁用云端 LLM,所有分析本地完成。如需启用 LLM 增强:

# 1. 复制环境变量模板
cp .env.example .env

# 2. 编辑 .env 填入 API Key
# LLM_API_KEY=sk-...
# LLM_BASE_URL=https://api.deepseek.com
# LLM_MODEL=deepseek-chat

# 3. 修改 config.json
# "llm": { "enabled": true, ... }

v2.0.0 推荐使用本地 RAG 引擎替代云端 LLM(隐私更好、效果更准)。


数据隐私说明(v2.0.0 强化)

  • 所有数据保存在本地 data/ 目录
  • 不向任何云端服务器发送数据(v2.0.0 默认配置)
  • 无需注册账号
  • SQLite 数据库 + ChromaDB 向量库 + MiroFish 图谱,全部本地
  • 无遥测、无统计、无后台网络请求
  • RAG embedding 模型本地存储,仅首次下载
  • LLM 完全可选(默认关闭)
  • MiroFish 默认关闭

常见问题

Q: v1.2.0 的命令还能用吗? A: 完全兼容,所有旧命令保留并继续工作。

Q: v2.0.0 和 v1.2.0 分析结果不一致? A: 正常。v2.0.0 引入 jieba、否定识别等,分析更准确。

Q: 首次运行很慢? A: RAG 首次需下载 embedding 模型(50-100MB),之后秒开。

Q: 不想用 RAG? A: config.json 中设 "rag.enabled": false

Q: 不想用云端 LLM? A: v2.0.0 默认禁用。完全不需要 .env 文件。

Q: MiroFish 怎么启用? A: config.json 中设 "mirofish.enabled": true,然后运行 predict-v2

Q: 如何回滚到 v1.2.0? A: scripts/archive_v1/ 中有完整 v1.2.0 快照。

Q: Web 仪表盘呢? A: v2.1.0 路线图。当前使用 v1.2.0 的 Flask Web。

Q: 群聊怎么分析? A: 导出群聊记录时选择"全部消息",导入后同样可以分析。

Q: 首次安装依赖太多? A: 运行 python scripts/main_setup.py 自动完成。


依赖安装

核心(必须)

pip install -r requirements.txt

RAG 引擎(v2.0.0 推荐)

pip install -r requirements-rag.txt

可选增强

pip install openai-whisper   # 语音转文字
pip install easyocr          # 图片 OCR

Web 仪表盘(v2.1.0 路线图)

pip install -r requirements-web.txt
cd web/frontend && npm install

版本路线图

  • v1.2.0 — 基础 MBTI/大五/情感/风险分析,LLM 增强(云端)
  • v2.0.0 — 模块化架构、jieba 分词、本地 RAG、多智能体 MiroFish、隐私优先
  • v2.1.0 — FastAPI + Vue3 + ECharts 仪表盘
  • v3.0.0 — 微信 DB 解密、OCR/ASR 升级、长期记忆

版本: v2.5.0