Skip to content

Repository files navigation

ChatMemory:把聊天精炼为私人知识库

ChatMemory v1.4

让每一次对话,都成为你的长期知识资产。
Turn conversations into a private knowledge base that keeps growing with you.

Version Private Knowledge Base Local First Obsidian Native Python

产品价值 · 核心能力 · 全链路架构 · 快速开始 · 完整教程 · 架构文档


把正在消失的聊天,变成真正属于你的知识

微信和 QQ 里保存着大量有价值的东西:一次关键讨论、一条踩坑经验、某位专家的判断、一个尚未实现的想法,以及团队在无数轮争论后形成的决策。

但聊天窗口并不是知识系统。消息会被新消息淹没,经验会在群成员之间反复重讲,重要结论最终只剩一句“我记得以前有人说过”。

ChatMemory v1.4 希望结束这种损耗。

它将授权的微信与 QQ 聊天记录导出、清洗并重新理解,把碎片化对话组织成一个保存在本地、可以持续增量更新、能够搜索与追溯的私人知识库。知识不再被锁在聊天平台里,而是以 Markdown、JSON、双向链接、时间线和知识图谱的形式沉淀到你真正拥有的空间中。

这不只是聊天备份。 这是一个把群聊经验转化为个人长期记忆的对话知识基础设施。


✨ 为什么是 ChatMemory

过去 ChatMemory v1.4
聊天记录不断向上滚动 持续生长的私人知识库
只能依赖关键词翻找 实体、关系、时间线与图遍历
同一个问题被反复讨论 经验归并、证据聚合与矛盾发现
报告生成后即成为静态文件 知识成熟度与新鲜度持续校准
数据被困在微信和 QQ 本地 Markdown / JSON / Obsidian Vault
开始新项目时重新收集上下文 按项目描述装配相关知识子图

你的知识库会记住什么?

  • 谁在某个方向上持续贡献高质量经验;
  • 某项工具如何配置、依赖什么、解决什么问题;
  • 团队做过哪些决定,以及决定形成的上下文;
  • 不同群聊对同一个问题是否存在冲突观点;
  • 一条知识是刚出现的线索,还是被多次验证的稳定经验;
  • 一个新项目最相关的概念、人物、工具、资源与知识缺口。

🚀 v1.4:从聊天处理管道到私人知识库

ChatMemory 早期版本聚焦“导出、清洗、生成报告”。v1.4 在此基础上建立了完整的知识图谱与知识治理链路。

新一代知识处理能力

  • 对话线程分离:依据时间窗口、回复关系和文本相似度,降低多人并行讨论造成的上下文串线。
  • 候选知识生成:从问答、陈述、决策和共同出现关系中生成高召回候选。
  • 语义实体抽取:识别工具、人物、概念、决策和资源五类实体。
  • 17 类关系体系:覆盖使用、依赖、实现、配置、比较、替代、矛盾、上下文等知识连接。
  • 实体归并:跨群合并别名与重复实体,并将低置信度结果留给人工复核。
  • 矛盾处理:发现冲突主张,并将关系标记为 preferrednormaldeprecated
  • 双轴知识校准:通过 maturity_statefreshness_weight 区分线索、成长知识、稳定知识和归档知识。
  • Schema v4 校验:在写入知识库前检查实体、关系、置信度和引用完整性。
  • 混合召回与图遍历:从关键词种子向相关人物、工具和概念扩展,而不是只返回一行文本。
  • 项目上下文装配:根据项目描述生成相关知识子图、可用能力和待补知识缺口。

Obsidian 原生知识空间

ChatMemory 会生成可以直接打开的 Obsidian Vault:

vaults/default/
├── concepts/       # 概念与方法
├── people/         # 人物与专家线索
├── tools/          # 工具、模型与平台
├── decisions/      # 决策与结论
├── resources/      # 链接、论文与资料
├── _moc/           # 自动维护的知识地图
├── _timeline/      # 按日期组织的知识演化
└── .obsidian/      # Graph View / Juggl 配置

每个知识节点都可以包含 Frontmatter 元数据、双向链接、来源消息、证据数量、成熟状态与更新时间。你可以继续在 Obsidian 中编辑、连接和扩展它,而不是被锁定在某个不可迁移的云端系统里。

当前版本采用 Markdown + JSON/JSONL + Obsidian Vault 构成文件型知识数据库。它具备增量更新、Manifest、实体合并和图谱索引,但尚未内置 SQLite、向量数据库或云数据库服务。


🧠 核心能力

能力层 功能 主要实现
数据接入 微信 WeFlow API、QQ OneBot API wechat_export.pyqq_export.py
消息理解 XML 解析、噪声过滤、碎片合并、问答保护 chat_cleaner.pymessage_normalizer.py
链接知识化 GitHub / 网页 / 微信文章展开,Robots 与 SSRF 防护 link_expander.py
线程重建 回复候选、时间窗口、相似度与置信度分层 thread_disentangler.py
图谱生成 候选实体、候选关系、语义分析 candidate_generator.pysemantic_analyzer.py
知识治理 实体归并、矛盾处理、成熟度与新鲜度校准 entity_resolver.pycontradiction_resolver.pygraph_calibrator.py
质量门禁 Schema v4 与 17 类关系注册表 schema_validator.pyrelation_registry.py
私人知识库 Vault、MOC、时间线、双向链接、增量写入 obsidian_writer.py
跨群融合 多群图谱合并、候选复核、Vault 同步 vault_merger.py
知识使用 图遍历、混合召回、项目上下文装配 graph_traversal.pycontext_assembler.py
深度研究 NotebookLM 周报、专题报告、思维导图 chatmemory_notebooklm.py

🏗️ 全链路架构

ChatMemory 从聊天记录到 Obsidian 私人知识库的全链路架构

数据所有权

你的聊天记录
  → 你的本地缓存
  → 你的知识图谱
  → 你的 Obsidian Vault
  → 由你决定是否上传 NotebookLM

NotebookLM 是可选增强能力。仅使用 Obsidian 知识库时,主要数据处理与知识文件均保留在本地。


📦 最终产物

产物 格式 用途
清洗对话 TXT 去噪、合并并保留上下文的可读记录
知识卡片 JSON 主题、参与者、锚点与来源消息
候选图谱 JSON 线程、实体候选、关系候选和时间线
校准图谱 JSON Schema v4 实体、关系、证据、成熟度与新鲜度
私人知识库 Obsidian Vault 可编辑、可迁移、可导航的长期知识空间
合并图谱 JSON / JSONL 跨群实体归并与人工复核候选
项目上下文 Markdown / JSON 面向具体项目的知识子图与缺口
分析报告 PDF 日报、周报和专题深度报告
思维导图 JSON NotebookLM 或本地降级生成的结构化导图

⚡ 快速开始

环境要求

  • Windows 10/11;
  • Python 3.7+;
  • 微信数据源:WeFlow 4.5.1;
  • QQ 数据源:QCE / NapCatQQ;
  • 可选:Obsidian;
  • 可选:NotebookLM CLI。

安装

# 1. 克隆项目
cd E:\
git clone https://github.com/head-tea/chatmemory.git
cd chatmemory

# 2. 初始化目录、配置与 Obsidian 模板
python setup.py init

# 3. 安装 Python 依赖
pip install -r requirements.txt

# 4. 检查环境
python setup.py check

微信用户需要配置 WeFlow Token:

$env:CHATMEMORY_WEFLOW_TOKEN="你的 Token"

详细安装、WeFlow/QCE 配置与故障排查见 TUTORIAL.md


🎬 三分钟建立第一个私人知识库

1. 导出聊天

# 微信
python scripts/wechat_export.py --contact "群名" --days 7

# QQ
python scripts/qq_export.py --contact "群名" --days 7

也可以使用 --all 导出全部会话,或增加 --exact 进行精确名称匹配。

2. 清洗并生成 Obsidian 知识库

python scripts/chat_cleaner.py "cache/raw_exports/群名/导出文件.txt" --obsidian

只生成知识图谱,不继续常规输出:

python scripts/chat_cleaner.py "导出文件.txt" --obsidian-only

全量重建或指定 Vault:

python scripts/chat_cleaner.py "导出文件.txt" --obsidian --no-incremental
python scripts/chat_cleaner.py "导出文件.txt" --obsidian --vault-path "D:/MyKnowledgeVault"

3. 合并多个群聊的知识

python scripts/vault_merger.py merge --generate-vault
python scripts/vault_merger.py candidates --verbose
python scripts/vault_merger.py sync

4. 为新项目装配上下文

python scripts/chat_cleaner.py "导出文件.txt" --obsidian --assemble "构建一个面向科研团队的多智能体文献分析系统"

5. 可选:连接 NotebookLM

python scripts/chatmemory_notebooklm.py inspect
python scripts/chatmemory_notebooklm.py upload --group "群名" --notebooklm-enrich
python scripts/chatmemory_notebooklm.py weekly --group "群名" --notebooklm-enrich
python scripts/chatmemory_notebooklm.py deep --group "群名" --anchor "关键词" --notebooklm-enrich
python scripts/chatmemory_notebooklm.py mind-map --group "群名"

也可以一条命令完成图谱生成与 NotebookLM 上传:

python scripts/chat_cleaner.py "导出文件.txt" --obsidian-then-notebooklm

🧩 Claude Code 子技能

执行 python setup.py init 会自动安装微信、QQ 与 Obsidian 三个核心 Skill;仓库还提供以下可选知识搜索、升级与复核 Skill,可按需复制到 Claude Code Skills 目录:

命令 用途
/chatmemory-wechat 微信导出与清洗
/chatmemory-qq QQ 导出与清洗
/chatmemory-obsidian 生成 Obsidian 私人知识库
/chatmemory-obsidian-then-notebooklm 图谱与 NotebookLM 联动
/chatmemory-obsidian-upgrade 升级并重新校准旧图谱
/cm-obsidian-search 搜索知识库
/cm-obsidian-fd-expert 发现相关专家线索
/cm-obsidian-weak 查找知识缺口
/cmv-check-wx-qq 复核跨群实体合并候选

完整 Skill 说明见 SKILL.md


📁 项目结构

chatmemory/
├── scripts/
│   ├── wechat_export.py          # 微信导出
│   ├── qq_export.py              # QQ 导出
│   ├── chat_cleaner.py           # 主清洗与知识库管道
│   ├── thread_disentangler.py    # 对话线程分离
│   ├── candidate_generator.py    # 候选知识生成
│   ├── semantic_analyzer.py      # 本地语义分析
│   ├── graph_extractor.py        # 图谱抽取与降级流程
│   ├── entity_resolver.py        # 实体归并
│   ├── contradiction_resolver.py # 矛盾处理
│   ├── graph_calibrator.py       # 知识校准
│   ├── schema_validator.py       # Schema 质量门禁
│   ├── obsidian_writer.py        # Vault 写入
│   ├── vault_merger.py           # 跨群图谱融合
│   ├── graph_traversal.py        # 类型化图遍历
│   ├── context_assembler.py      # 项目上下文装配
│   └── chatmemory_notebooklm.py  # NotebookLM 分析
├── obsidian_template/            # Obsidian 模板与图谱配置
├── sub-skills/                   # Claude Code 工作流技能
├── config.json                   # 统一配置
├── cleaning_rules.json           # 清洗策略
├── architecture.md               # 架构细节
└── TUTORIAL.md                   # 完整教程

🔐 隐私、安全与责任边界

本地优先

  • 原始导出、清洗结果、图谱和 Vault 默认保存在本地;
  • Token 通过环境变量读取,不应写入仓库;
  • 缓存、聊天记录、生成 Vault、密钥和本地工具均由 .gitignore 排除;
  • 外部上传仅在用户主动使用 NotebookLM 功能时发生。

网络内容安全

链接展开模块会检查 robots.txt,遵守 Robots Exclusion Protocol(RFC 9309),并对私有地址、Loopback、Link-local 和其他潜在 SSRF 目标进行限制。项目不会通过伪装浏览器或绕过访问控制来获取内容。

合法使用

请仅处理你拥有或已获得授权的数据:

  • ✅ 分析自己的聊天记录;
  • ✅ 处理研究或团队中获得明确授权的数据;
  • ❌ 未经同意收集或公开他人的私人聊天;
  • ❌ 绕过平台访问控制或违反适用法律与服务条款;
  • ❌ 将知识图谱中的自动推断当作未经复核的事实。

ChatMemory 提供知识整理与分析能力,不替代事实核验、法律判断或专业决策。


🌍 当前边界

  • 数据接入工具目前主要面向 Windows;
  • WeFlow 与 QQ 客户端兼容性受上游版本影响;
  • 语义图谱包含规则与模型推断结果,重要知识应保留来源并人工复核;
  • 文件型知识数据库适合个人与中小规模团队,超大规模数据仍需要未来的数据库与向量检索后端;
  • Obsidian Graph View 的呈现效果取决于 Vault 规模及插件配置。

📚 文档


🙏 致谢

ChatMemory 建立在 WeFlow、QQChatExporter / NapCatQQ、Obsidian、NotebookLM、Claude Code 以及 Python 开源生态之上。感谢所有帮助用户重新拥有自己数据与知识的工具作者。

Your conversations are temporary. Your knowledge does not have to be.
把对话留在当下,把知识带向未来。

About

ChatMemory -- 一个基于WeFlow、QQChatExporter和obsidian的聊天记录用于私人知识库精炼提取的Claude Code插件

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages