Agent 实践

项目研究:wechat-local-vault

文章目录
  1. 「这是什么」一句话定性
  2. 仓库位置
  3. 关键文件
  4. 「它怎么转」逻辑全景图
  5. 「怎么升级」三段位路线图
  6. 「能用在哪」场景迁移
  7. 一句话灵魂
蓝色像素虾守着本地聊天数据库保险柜
图 1:wechat-local-vault 是把本机聊天数据变成只读、可检索的私人档案柜。

一个把 Mac 微信本地数据库解密成私人查询库的 Skill;本地处理不等于没有隐私风险。

「这是什么」一句话定性

把你有权处理的 Mac 微信本地记录,变成可以用 CLI 搜索、统计和导出的资料库。像给聊天记录做一个本机档案柜,钥匙和明文副本都需要自己管好。

这是早期名称 wechat-local-vault 的研究笔记。2026-10-13 核查时,同一作者的当前目录为 yichen-wechat-local-vault,不能把旧路径当成现在的安装位置。

仓库位置

项目 信息
仓库 mcncarl/yichen-skills
当前路径 yichen-wechat-local-vault/
主路径 Mac 微信 4.x,本机密钥获取、解密、查询
另一入口 实验性的 Windows 已解密离线快照查询,不负责 Windows 抓钥或解密
许可 个人学习与非商业使用许可,商业运营、客户交付及公开打包再分发另有授权要求

“公开源码”不等于可自由商用;第三方子模块还要看其保留的原许可。

关键文件

文件 作用
SKILL.md Agent 工作流与数据边界
scripts/extract_keys.py 复用已有 key,或用 Frida 捕获本机派生材料
scripts/decrypt_all_dbs.py 全量/增量生成明文库与 manifest
scripts/vault_cli.py 查询、统计、导出与摘要素材入口
scripts/export_chat.py 指定联系人/会话导出
scripts/snapshot_reader.py Windows 静态明文快照后端

删去原稿固定“11 个库、19 个子命令”的口径:实际库随账号和分片而变,命令以当前解析器为准。

「它怎么转」逻辑全景图

wechat-local-vault 从 key、解密库到只读 CLI 和摘要素材包的流程图
图 2:这条链路的关键是本机取钥匙、本机解库、本机只读查询。
├─ 触发层
│  ├─ 已有明文库 → 只查询所需会话与时间段
│  ├─ 明确要求全量/增量 → 生成或刷新明文副本
│  └─ 提供 Windows 明文快照 → 独立 snapshot 入口
├─ 核心层
│  1. 优先复用已有 key;缺失时才考虑新抓取
│  2. 抓取路线针对 ad-hoc 重签名微信副本 hook PBKDF2
│  3. 用匹配 key 解密到独立 vault,增量跳过未变化的库
│  4. CLI 查询或导出;digest-source 先生成摘要素材
├─ 输出层
│  ├─ 私密配置、密钥、明文库、manifest 与增量状态
│  └─ 会话报告、群聊素材与后续人工确认的摘要
└─ 卡点层
   ├─ 微信/系统版本、进程保护、签名与数据库布局均可能影响抓取
   ├─ 收藏/朋友圈操作是项目建议的触发方法,不保证一次拿齐 key
   ├─ 只读源数据库,不代表不写文件:解密、导出和状态更新都会落盘
   └─ 明文库、抓钥日志与导出都需要纳入访问和留存管理

不能把 Frida attach 失败简单归因于 Gatekeeper。Gatekeeper、代码签名和进程调试保护不是同一层机制;重签名也不是平台授权或通用绕过保证。

尤其要看 extract_keys.py:默认终端输出会隐藏部分标识,但抓取日志会记录 password、salt、dk 等原始材料。“终端脱敏”不等于“日志无密钥”。

「怎么升级」三段位路线图

├─ 入门段(能用)
│  ├─ 先读 README、许可和本机配置,不改原微信
│  ├─ 用 list-dbs、match-only 检查现有条件
│  └─ 只挑一个已授权会话验收查询结果
├─ 进阶段(用好)
│  ├─ 明确设置摘要 --data-root,避开项目与同步目录
│  ├─ 抽样核对时间范围、消息数和图片是否真正可见
│  └─ 摘要完成再更新历史锚点,不把目录生成当成画像已完成
└─ 高手段(用活)
   ├─ 给 key、原始抓取日志、明文库、导出分别定权限和保留期
   ├─ schema 升级用合成数据回归,不提交真实聊天
   └─ 接入模型前单独确认发送范围、服务商留存与对话参与者权益

当前 digest-source 解析器的默认归档位置可能在当前项目的 wechat/ 下,不能只依赖文档的“私密目录”建议。目录权限 700、文件权限 600 是控制访问的措施,不是磁盘加密,更挡不住同用户进程或误同步。

「能用在哪」场景迁移

wechat-local-vault 明文库和本机隐私边界风险图
图 3:明文库一旦生成,权限、目录和导出边界就比功能本身更重要。

场景 1:个人历史资料检索。 找回约定、链接、收藏记录,比让 Agent 一口气读整库更容易控制范围。聊天中还包含其他人的信息,拥有账号不自动授予对所有记录任意画像、分享或商业利用的权利。

场景 2:其他本地资料的查询工作流。 可借鉴“授权输入 → 独立副本 → 只读查询 → 最小导出”,但不能把它宣传成 QQ、钉钉、Telegram 等客户端的通用解锁模板。各应用的加密、密钥管理、格式及许可不同,需逐项核查。

部署判断: 本文建议先用已有明文库或合成样本研究。新抓钥涉及运行修改签名的客户端副本;账号风控概率、具体版本兼容性和法律适用性未验证。Windows 快照验证通过也只说明程序接受该结构,不证明数据来源授权或司法取证效力。

一句话灵魂

“把自己的聊天资料变成可查询副本,同时把钥匙、明文和出口管起来。” 真正值得借鉴的是数据分层,不是“偷偷开柜子”。


2026-10-13 资料核对说明: 本次实际读取官方 README、SKILL.md、CLI 源码、抓钥/解密脚本、Windows 快照契约及根许可证;这是资料与代码核对,不是微信抓钥、解密或真实账号实测。

记录到这里,判断留给实践。