Wenlan
Wenlan is a source-backed AI knowledge base and LLM wiki for AI work: organize documents and decisions into pages you can find, inspect, and review.
Keep every message from WeChat for Mac in one local vault that only grows, exported per chat and month as Markdown and JSON Lines, rewriting only what changed.
ProductivityGo · PythonGitHub @soundadamOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Keep every WeChat for Mac message in a local append-only vault, with incremental Markdown/JSONL exports
Loading the full README.
Read the full README ↗把微信(macOS 版 WeChat 4)的聊天记录合并进一个只增不减的本地 SQLite 库(vault), 再保持一组 Markdown / JSON Lines 导出目录与之同步:每个聊天每月一个文件,每次同步只重写变化的部分。
messages,新形态记入 revisions。PRAGMA user_version 编号迁移;解析结果是派生层,解析器升级后自动重建。详见 docs/data-model.md。需要 macOS 12 以上和 Mac 版微信 4。
brew trust --tap soundadam/tap
brew install --cask soundadam/tap/chatvault
之后用 chatvault update(或 brew upgrade)更新。从源码构建:make build,生成 bin/chatvault。
只支持 Mac 版微信 4.x(数据在 ~/Library/Containers/com.tencent.xinWeChat/Data/Documents/xwechat_files)。
微信 3.x 的数据 chatvault 不读,check 会直接说明。
导入 key 是第一次同步之前必须做的一步,三步走:
chatvault check # 看缺什么:微信账号、key、vault,每个 FAIL 下面都写了怎么办
chatvault keys import keys.json # 导入你准备好的 keys.json;会先试一遍能打开几个数据库
chatvault sync # 复制、解密、合并、导出
不知道下一步做什么时,chatvault check、chatvault status 和交互界面的空白页都会给出下一条命令。
微信的数据库用 SQLCipher 加密,chatvault 从 keys.json 读取 key。文件格式是
{"keys": ["<64 位 hex>", ...]},也接受按数据库分组的
{"message/message_0.db": {"enc_key": "<64 位 hex>"}, ...}:
chatvault keys import keys.json
chatvault check # 逐个数据库检查 key 能否打开
不给路径时,keys import 依次在当前目录、~/Downloads、~/Desktop、~/Documents、~ 找 keys.json。
导入前会校验格式,并只读地试一遍账号的数据库:一个都打不开就不导入(多半是别的账号的 key,或已过期)。
key 跟着账号数据走,不跟微信版本走:重新登录后、或 check 报某个新分库打不开时,重新导入一次。
# 一次性:导入数据库 key(见上一节)
chatvault keys import keys.json
# 复制、解密、合并、解析、导出
chatvault sync
# 交互界面:浏览、过滤、改别名/文件夹、隐藏、同步
chatvault # 在终端里直接运行即可,等同 chatvault ui
整理与导出:
chatvault chats 家 # 列出聊天(编号可直接用于下面的命令)
chatvault chat set 家人群 --folder family --alias 家人
chatvault chat set 某公众号 --hide
chatvault show 家人 --month 2026-10 # 在终端里看一个月
chatvault export list
chatvault export add groups --format md --kind group --dir ~/Documents/群聊
chatvault export add plain --format txt # 格式:md、txt(纯文本)、jsonl、json(每月一个数组)
chatvault export # 只重写有变化的文件
库默认在 ~/Documents/ChatVault,可用 --vault 或 $CHATVAULT_HOME 指定:
~/Documents/ChatVault/
vault.sqlite # 唯一的真相
sources/wechat/<账号>/ # 快照、解密副本、state.json、keys.json(0600)
export/md/<文件夹>/<聊天 ID>/2026-10.md
export/jsonl/... # 每个导出目标还有 chats.json 索引
<聊天 ID> 是微信的用户名,如 12345678901@chatroom、wxid_…,永远不变:群改名、改别名都不会挪动文件,
只改写文件标题。名字与目录的对应在 chats.json(也是 chatvault chats 最后一列)。只有 <文件夹>
跟着你设的文件夹走。交互界面的聊天页第二行就是当月导出文件的路径,按 o 在 Finder 里显示它
(列表里按 o 显示该聊天最新一个月的文件)。
时间按本机时区写入导出文件。
密钥和解密副本只在本机,keys.json 与 state.json 权限 0600;程序不会打印密钥。不要把 vault 目录放进同步盘或仓库。