你的微信数据,只在你的电脑上处理。
本地解密、只读查询,聊天内容不上传;初始化后可离线使用。
curl -fsSL https://wechat-cli.com/install.sh | sh
macOS / Linux 一行安装 · Windows 与手动下载 · 兼容性与安全说明
# 初始化一次(需要 sudo,用来提取本地数据库密钥) $ sudo wechat-cli-rs init 初始化完成 配置: ~/.wechat-cli/config.json 提取到 26 个数据库密钥条目 # 看最近会话 $ wechat-cli-rs sessions --limit 3 --format text 最近 3 个会话: 产品讨论组 [群聊] 3条未读 张三: 明天的评审推迟到下午 李四 好的,收到 王五 文件已经发你邮箱了 # 搜索聊天记录 $ wechat-cli-rs search "报销" --format text 在 全部消息 中搜索 "报销" 找到 2 条结果: [2026-08-12 14:22] [财务群] 赵六: 本月报销单截止到 25 号 [2026-08-20 09:41] [李四] 李四: 报销流程走完了吗?
以上为示意输出
license activate 是唯一已知的业务联网请求,但不发送聊天内容init 属于敏感操作:它读取微信进程内存,macOS 后备流程还会改变微信应用签名聊天记录在你自己的电脑上解密和查询,程序不会把任何聊天内容发到外部服务器。
不发消息、不改数据库、不删记录,也不做自动操作;但 init 会读取微信进程内存,不能视为零风险。
装好并初始化之后,所有查询都在本地完成。拔了网线照样能查。
默认 JSON 输出、稳定的退出码,方便管道处理,也方便交给 AI Agent 调用。
单个可执行文件,没有运行时依赖,下载即用,启动快、占用小。
macOS(Apple 芯片 / Intel)、Windows、Linux 都有预编译版本。
两条提取路径同时保留:旧版本继续扫描常驻内存,新版本在密码学调用发生时捕获瞬时密钥。
| macOS 微信版本 | 密钥提取方式 | 实测状态 |
|---|---|---|
| 官网版 4.1.8 | 常驻内存扫描,直接运行 sudo wechat-cli-rs init |
已验证 25/29 |
| 官网版 4.1.13 | PBKDF2 / AES 调用边界瞬时捕获,再用数据库 HMAC 验真 | 已验证 27/29 |
| App Store 4.1.11 | 重签副本会被 launchd 拒绝 | 不支持首次提取 |
先确保微信已经登录,然后初始化一次。官网版 4.1.8 可以直接运行下面的命令;官网版 4.1.13
首次使用请先按瞬时捕获说明生成并验证候选密钥。已有匹配的配置和密钥时不要重复运行 init。
$ sudo wechat-cli-rs init # 之后就可以随便查了 $ wechat-cli-rs sessions --format text # 最近会话 $ wechat-cli-rs contacts --query "张" --format text # 找联系人 $ wechat-cli-rs history "张三" --format text # 看聊天记录 $ wechat-cli-rs search "报销" --format text # 全局搜索 $ wechat-cli-rs export "张三" --format markdown --output chat.md
开始前,在「系统设置 → 隐私与安全性 → 完全磁盘访问权限」中允许 Terminal、iTerm 或你使用的终端,并重启终端。推荐使用微信官网版,不推荐 Mac App Store 版。
sudo wechat-cli-rs init;默认不会修改 App。task_for_pid 被拒绝,程序会退出并说明风险。只有确认接受后才使用 --allow-resign,优先通过 --wechat-app 指向复制出的 App。get-task-allow,再用 codesign --force --sign - 替换所选 App 的签名。# 查看当前 entitlement $ codesign -d --entitlements - /Applications/WeChat.app 2>/dev/null # 官网重装后验证签名与 entitlement $ codesign --verify --deep --strict --verbose=2 /Applications/WeChat.app $ codesign -d --entitlements - /Applications/WeChat.app 2>/dev/null
如果你明确重签了已安装的官方 App,取完密钥后应完全退出微信,从微信 Mac 官网重新下载当前版本并覆盖安装,以恢复厂商签名。针对复制 App 的流程不会修改已安装 App。 详细背景见上游教程、Apple 的 调试 entitlement 文档和 公证问题说明。
目前全部功能完全免费,不需要激活、不需要账号。
| 命令 | 说明 | 授权 |
|---|---|---|
| init | 初始化、提取数据库密钥 | 免费 |
| sessions | 最近会话列表 | 免费 |
| contacts | 联系人查询与详情 | 免费 |
| members | 群聊成员列表 | 免费 |
| unread | 未读会话 | 免费 |
| history | 读取聊天记录(支持时间/类型过滤) | 免费 |
| search | 搜索消息内容 | 免费 |
| stats | 消息统计、发送者排行、活跃时段 | 免费 |
| export | 导出聊天记录为 Markdown / 文本 | 免费 |
| favorites | 微信收藏查询 | 免费 |
| new-messages | 自上次调用以来的新消息 | 免费 |
版本 0.1.4,发布于 2026-08-28。也可以用上面的一行命令自动安装。
macOS 4.1.13 高级初始化组件: Apple 芯片 hook · Intel hook
~/.wechat-cli/,你随时可以删掉license activate 会请求 license.bika.ltd,请求不含聊天内容
本项目不能保证绝对不会被限制账号。Rust CLI 没有已知的微信网络 API 调用、发信接口或协议模拟;风险点是
init 非官方支持地读取微信进程内存;4.1.13 高级流程还会在复制 App 中加载瞬时 hook。只有显式提供 --allow-resign 才会修改所选 App 的签名和 entitlement。
微信是否能够、是否实际会通过本地完整性检查或遥测感知这些变化,以及这是否会触发账号处置,当前都未知,不能当作已证实结论。
~/.wechat-cli、key JSON 和
Unix 初始化会把 ~/.wechat-cli 设为 0700、配置和密钥文件设为 0600;但
/tmp/wechat-me-cache 仍跟随用户 umask,宽松配置下可能被同组本机用户读取。
| 平台 / 操作 | 涉及接口 | 风险含义 |
|---|---|---|
| macOS init | task_for_pid、mach_vm_read、显式 codesign、复制 App 中可选 DYLD hook | 读取进程内存;显式重签会改变所选 App 的签名,并可能丢失非布尔 entitlement 或其他签名元数据 |
| Windows init | OpenProcess(PROCESS_VM_READ | PROCESS_QUERY_INFORMATION)、VirtualQueryEx、ReadProcessMemory | 以查询和只读权限读取微信进程内存,不申请写权限 |
| Linux init | /proc/<pid>/maps、/proc/<pid>/mem、root / CAP_SYS_PTRACE | 在系统 ptrace 权限控制下查看映射并读取进程内存 |
| 普通查询 | 本地 AES/SQLCipher、SQLite | 读取实时数据库或副本,不调用微信网络 API |
| license activate | HTTPS 请求 license.bika.ltd | 唯一显式业务网络请求;发送授权字段,不发送聊天内容 |
src/commands/init.rs::run 进入密钥提取;平台进程访问及 macOS
resign_wechat / parse_plist_dict 位于 src/keys.rs;
瞬时 interpose 代码位于 macos-key-hook/src/lib.rs;
解密与缓存写入位于 src/crypto.rs、src/db_cache.rs;唯一显式业务联网请求是
src/license.rs::call_activate_endpoint。
WriteProcessMemory 或 CreateRemoteThread;4.1.13 只在复制 App 中显式加载窄范围 DYLD interpose dylibinit 只在提取密钥期间访问进程,完成后退出config.json 和 all_keys.json 时,不再运行 init。init,只使用自己合法取得的数据库副本与密钥。db_storage 及全部 *.db-wal。$ chmod 700 ~/.wechat-cli /tmp/wechat-me-cache $ find ~/.wechat-cli /tmp/wechat-me-cache -type f -exec chmod 600 {} + $ rm -r -- /tmp/wechat-me-cache # 不再使用时清理;先确认精确路径
使用前请阅读腾讯政策目录、 微信软件许可及服务协议和 微信安全中心关于本地聊天记录访问工具的公告。
命令面是按脚本和 AI 调用设计的:默认 JSON 输出,退出码稳定,不需要去解析中文提示语。
| 退出码 | 含义 |
|---|---|
| 0 | 成功 |
| 1 | 找不到目标 / 一般错误 |
| 2 | 参数用法错误 |
| 3 | 本地数据打不开(解密失败等) |
把这份纯文本说明交给 agent,它就知道该怎么调用、什么时候该停下来问用户:
$ curl -fsSL https://wechat-cli.com/SKILL.md