mcpField
Y
yichen-wechat-local-vault

yichen-wechat-local-vault

github.com/mcncarl数据与数据库4.9k78 次安装今天更新
代码仓库

关于 yichen-wechat-local-vault

用于查询、分析和导出本地微信聊天记录的 skill,支持私有 vault 和用户提供的 Windows 快照。它结合增量处理、隐私保护及群聊摘要素材包生成。

主要功能

  1. 01本地聊天搜索与历史查询
  2. 02数据库全量及增量解密
  3. 03导出联系人和群聊记录
  4. 04生成群聊摘要素材包
  5. 05验证并查询 Windows 快照
  6. 06保护敏感数据的处理规范

适用场景

  1. 01按关键词、会话或日期查消息
  2. 02导出指定会话记录
  3. 03整理群聊摘要所需素材
  4. 04分析用户提供的 Windows 快照

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mcncarl/yichen-skills --skill yichen-wechat-local-vault

安装后在 Claude Code 中输入/yichen-wechat-local-vault确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

README.md
references/
windows-snapshot.md
references/windows-snapshot/
CONTRIBUTOR_GRANT.md
PROVENANCE.md
REPOSITORY_LICENSE.txt
requirements.lock
sbom.spdx.json
THIRD_PARTY_NOTICES.md
scripts/
decrypt_all_dbs.py
export_chat.py
extract_keys.py
list_contacts.py
search_sns.py
snapshot_reader.py
vault_cli.py
wechat_digest.py
wechat_schema.py
tests/
fixture_factory.py
test_snapshot_reader.py
test_vault_integration.py

详细介绍

来自项目 README

微信本地解析 Vault

这个 skill 的定位是“微信本地数字资产库 + 本地查询分析台”。默认只读取本机数据库和本地进程,不点击微信界面;除非用户明确允许,不操作微信 UI。默认只处理官方第一个微信容器 com.tencent.xinWeChat,不要处理双开/第二微信容器。

本版本吸收了两类外部工具的优点:

  • WeChat CLI 风格:统一命令入口、JSON 默认输出、最近会话、历史记录、全局搜索、联系人详情、群成员、统计、导出、收藏夹、未读和增量新消息。
  • 宝玉群聊摘要工作流:按群归档、从上次摘要继续、摘要素材包、群友画像目录、历史索引、图片说明扩展点,以及“大批量先落文件再分析”的安全习惯。

隐私边界

  • 不在回复或日志里输出 key、完整 salt、wxid、原始聊天库内容,除非用户明确要求展示。
  • 密钥、配置、明文库、manifest、增量状态和导出目录都由本机配置文件管理;skill 文档不要写入任何个人机器的真实绝对路径、wxid、联系人或聊天内容。
  • 建议把密钥和明文库放在本机私有应用数据目录,把可读报告放在用户自选的导出目录;路径以占位符或配置字段说明即可。
  • 不要把明文数据库复制到项目工作区、桌面、网盘目录或聊天回复里;工作区只放用户明确要求的导出报告。

先确定数据来源

  • Mac 当前账号 / 本机聊天 / 增量刷新:沿用下文的 Mac 工作流和现有 vault_cli.py 命令。
  • 用户提供的 Windows 离线明文快照:阅读 Windows 快照模式,使用 vault_cli.py snapshot --snapshot <目录> ...。先 validate,再 chats 选出精确 chat_id,最后查询或导出。不要求另装独立 Windows Skill。
  • Windows 模式只支持 validate、chats、history、search 和 Markdown export;不支持密钥提取、解密、增量刷新、朋友圈/收藏正文解析。缺少快照、schema 不兼容或有 WAL/SHM 时停止并说明缺口,不尝试 Mac 流程或自动补齐快照。
  • 快照源系统由用户提供的信息确定,不根据当前运行的是 Mac 还是 Windows 猜测。可以在 Mac 上分析已授权的 Windows 明文快照,但真实 Windows 微信版本兼容性仍为实验性。

Mac 模式:自动选择模式

根据用户指令选最小必要动作:

  1. 用户说“第一次用、解不开、key 没了、全部解密、全量重建”:走全量路线。
  2. 用户说“继续、更新一下、增量、最近、今天、新消息”:走增量路线。
  3. 用户点名联系人/群聊/会话 ID:只导出这一条会话;必要时先增量解密消息库。
  4. 用户给时间范围:只按该时间范围导出或分析。
  5. 用户问朋友圈/收藏夹:只读取对应已解密库;缺 key 再补抓。
  6. 用户明确说“群聊摘要、群聊精华、日报、复盘、从上次继续”时,优先用 vault_cli.py digest-source 生成素材包,再基于素材写简报;不要把整个 skill 解释成摘要工具。
  7. 用户要求不操作微信界面时,只能使用 --match-only、已保存 key、已解密库或本地数据库文件;不要启动 Computer Use。

统一查询入口

日常查询优先使用 scripts/vault_cli.py。Mac 命令只读已解密 vault;Windows 快照使用 snapshot 子命令,详见 Windows 快照模式。查询入口不抓 key、不碰微信 UI。

python3 {{SKILL_DIR}}/scripts/vault_cli.py status --format text
python3 {{SKILL_DIR}}/scripts/vault_cli.py sessions --limit 20 --format text
python3 {{SKILL_DIR}}/scripts/vault_cli.py unread --format text
python3 {{SKILL_DIR}}/scripts/vault_cli.py new-messages --format text
python3 {{SKILL_DIR}}/scripts/vault_cli.py contacts --query "关键词" --format text
python3 {{SKILL_DIR}}/scripts/vault_cli.py members "群名" --format text
python3 {{SKILL_DIR}}/scripts/vault_cli.py history "联系人或群名" --start-time "2026-05-01" --end-time "2026-05-14" --format text
python3 {{SKILL_DIR}}/scripts/vault_cli.py search "关键词" --chat "群名" --type link --format text
python3 {{SKILL_DIR}}/scripts/vault_cli.py stats "群名" --start-time "2026-05-01" --format text
python3 {{SKILL_DIR}}/scripts/vault_cli.py export "群名" --format markdown --output ./chat.md
python3 {{SKILL_DIR}}/scripts/vault_cli.py favorites --type article --query "关键词" --format text
python3 {{SKILL_DIR}}/scripts/vault_cli.py moments --name "联系人" --start "2026-05-01" --format text

消息类型过滤支持:text、image、voice、video、sticker、location、link、file、call、system。

群聊摘要素材包

用户要“群聊精华、日报、总结群聊、看看这个群最近聊了什么、从上次继续”时:

python3 {{SKILL_DIR}}/scripts/vault_cli.py digest-source "群名" --start "2026-05-01" --end "2026-05-14" --format text
python3 {{SKILL_DIR}}/scripts/vault_cli.py digest-source "群名" --since-last --data-root ~/Documents/wechat-digests --format text

输出会落到 {data_root}/{group_id}-{group_name}/sources/,并创建:

  • profiles/:普通版群友画像。
  • profiles-roast/:毒舌版画像,必须和普通版分开。
  • imgs/:图片说明扩展点,格式为 {message_id}.txt,一行描述一张图。
  • sources/*.json:可机器读取的消息素材、发言统计和路径信息。
  • sources/*.md:便于人工阅读和写作的素材稿。

素材包不自动更新 history.json。只有最终摘要写完并确认后,才更新摘要历史,避免半成品污染“从上次继续”的锚点。

常用命令

查看本机有哪些库,不启动微信:

python3 {{SKILL_DIR}}/scripts/extract_keys.py --list-dbs

用已有抓取日志匹配 key,不启动微信:

python3 {{SKILL_DIR}}/scripts/extract_keys.py --match-only --targets all --reuse-log

首次全量抓 key。只在需要抓新 key 时使用;不要碰第二微信:

python3 {{SKILL_DIR}}/scripts/extract_keys.py --targets all --duration 240

全量解密到私密 vault:

python3 {{SKILL_DIR}}/scripts/decrypt_all_dbs.py --mode full

日常增量刷新。只跳过未变化的库,不重新处理全部内容:

python3 {{SKILL_DIR}}/scripts/decrypt_all_dbs.py --mode incremental

导出某个联系人完整聊天:

python3 {{SKILL_DIR}}/scripts/export_chat.py --contact "联系人备注" --mode full

导出某个联系人新增聊天:

python3 {{SKILL_DIR}}/scripts/export_chat.py --contact "联系人备注" --mode incremental

按精确会话 ID 和时间范围导出:

python3 {{SKILL_DIR}}/scripts/export_chat.py --chat-id "contact_username" --since "2025-01-01"

旧脚本仍可用于窄任务;如果用户没有特别指定,优先使用 vault_cli.py。

Mac 模式:工作流

全量路线

用于首次配置、换设备、微信升级后 key 变化、用户明确要求全量重建。

  1. 先运行 extract_keys.py --list-dbs 看本地库,不展示敏感 salt。
  2. 如果 ~/.config/wechat-keys.json 已有 key,先用 --match-only --targets all --reuse-log 尝试复用。
  3. 只有复用失败或缺关键库时,才运行抓 key。
  4. 运行 decrypt_all_dbs.py --mode full,明文库写入私密 vault。
  5. 读取 manifest 确认解密数量和失败项。
增量路线

用于日常更新、继续上次工作、只分析近期新增内容。

  1. 运行 decrypt_all_dbs.py --mode incremental。
  2. 如果目标是联系人/群聊,运行 export_chat.py --mode incremental。
  3. 如果没有新增消息,直接告诉用户没有新增内容。
  4. 增量状态只写入 vault 的 state 目录,不写进 skill 文档。
指定会话分析

用于“分析我和某某的聊天”“导出这个会话 ID”“帮我写下一条怎么回”。

  1. 若用户给的是备注/昵称,使用 export_chat.py --contact。
  2. 若用户给的是微信 userName 或会话 ID,使用 export_chat.py --chat-id。
  3. 导出后读取报告,按用户目标分析关系、语气、风险、下一步话术。
  4. 不要默认展示全部原文;用户要“仔细解析”时再给完整时间线或报告路径。
朋友圈/收藏夹解析

优先使用已解密的 sns/sns.db、favorite/favorite.db、message_resource.db。缺 key 时只补相关库,不全量抓取。输出到用户配置的导出目录。

群聊精华/日报路线
  1. 先运行增量解密,确保明文 vault 是最新的。
  2. 用 vault_cli.py contacts 或 sessions 解析群名,确认唯一群聊。
  3. 用 digest-source 按时间范围生成素材包;大群或长时间范围先落文件,不要把几百上千条原始消息直接塞进对话。
  4. 读取 sources/*.md 和必要的 sources/*.json,先列话题骨架,再写正文。
  5. 输出结构优先采用:标题、消息统计、发言排行、开篇概览、群友画像、分类正文、待解决问题、固定结尾。
  6. 需要毒舌版时,可以基于同一素材另写,但不得做人身攻击、健康/家庭/身份属性推断,也不得用时间戳推断作息或所在地。
  7. 图片内容默认不可见;如果 imgs/{message_id}.txt 存在,才把其中描述用于摘要。否则只能写“图片内容不可见,根据上下文推断到这里围绕一张图片讨论”,不要编造画面。
  8. 摘要确认完成后,再更新群目录下的 history.json 和 history-digests.jsonl;用户要求“从上次继续”依赖这些文件。

输出原则

  • 回复里优先给结论、文件路径、下一步建议;完整原文放 Markdown 文件。
  • 涉及私聊时,少量引用必要原文即可,避免把整库内容贴到聊天里。
  • 明确区分“已解密明文库”“可读导出报告”“密钥配置”。
  • 每次涉及解密完成,说明保存位置和是否包含明文隐私。

现有脚本

  • scripts/snapshot_reader.py:Windows 离线明文快照验证、查询与导出后端。

  • scripts/wechat_schema.py:两种后端共用的消息表名与字段别名映射。

  • scripts/vault_cli.py:统一本地查询入口;吸收 WeChat CLI 的常用命令形态,并增加朋友圈与摘要素材包。

  • scripts/extract_keys.py:本机 key 捕获、复用和匹配。

  • scripts/decrypt_all_dbs.py:全量/增量解密,写入私密 vault,并生成 manifest。

  • scripts/export_chat.py:按联系人、群聊或会话 ID 导出完整/增量聊天记录。

  • scripts/list_contacts.py:列出联系人和群聊。

  • scripts/wechat_digest.py:按天摘要脚本,仅在用户明确要摘要时使用。

  • scripts/search_sns.py:朋友圈搜索辅助。

查询新鲜度与账号隔离

任务依赖最新消息时,先核对对应账号的快照时间,并在已授权范围内增量刷新;不得用旧同类消息替代目标。多账号安装须显式配置默认账号,第二账号仅按用户指定选择;账号编号不等于双开容器编号。每个账号独立配置、密钥、快照、增量状态和导出目录,不临时覆盖全局配置切换账号。Windows snapshot 路线不触发 Mac 刷新。

评论

支持 Markdown