WeChat Archive for DeepSeek Harness
英文 | 简体中文
一个本地优先、故障关闭的 WeChat 归档插件,适用于 macOS。它将四个受限操作连接到 DeepSeek Harness——诊断、检查状态、同步和验证——并包含一个 Agent Skill 以及一个可选的 macOS LaunchAgent,用于无人值守运行。
版本 0.1.0 可以从一个静止、已检查点的 Mac WeChat 数据库快照中,扫描每个已发现的 message_N.db 分片中的每一个 Msg_* 表。它存储可重放、可验证的 JSONL 增量,并将本地可用的图像容器、MP4 文件和语音 BLOB 作为私有、内容寻址的对象保留。
发布状态: 实现和合成安全测试已完成,但在生成此版本时,未进行真实的聊天同步(未运行(
NOT_RUN))。同步默认保持禁用,并且不会自动安装任何 LaunchAgent。
Mac WeChat source
|
v
deterministic Python core ----> private state + JSONL deltas + media objects
| |
+---- stdio MCP ---- DeepSeek Harness +---- replay/hash verification
|
+---- one-shot scheduler ---- optional macOS LaunchAgent提供的功能
接口 | 操作 | 是否写入归档数据? |
MCP |
| 否——检查应用、源、WAL、密钥和权限 |
MCP |
| 否——报告受限的操作元数据 |
MCP |
| 是——需要服务器显式启用和 |
MCP |
| 否——重放消息历史并验证哈希和覆盖范围 |
Agent Skill |
| 引导模型完成所需的安全工作流 |
调度器 |
| 仅在人工安装 LaunchAgent 之后 |
MCP 结果会提供状态、计数、覆盖范围和完整性信息。它们不会暴露联系人姓名、账户标识符、消息正文、密钥或私有数据库路径。
Related MCP server: WeChat MCP Server
完整性与隐私边界
工具参数不能选择账户、文件系统路径、SQL 语句、可执行文件或密钥。
该插件从不捕获密钥、附加 LLDB、重新签名或替换 WeChat、终止应用或忽略 WAL。
当 WeChat 正在运行、WAL 包含事务帧或短头格式错误、应用缺少固定的官方签名、密钥无效,或源在采集过程中发生变化时,同步会失败且不发布新快照。
每个加密数据库都独立进行密钥派生并通过 HMAC 验证。解密后的暂存文件是私有的,使用 SQLite
quick_check检查,并在运行后删除。不可变的 JSONL 增量会在其索引事务提交前进行 fsync。验证会重放完整历史,并对每个已注册的媒体对象(包括历史对象)进行哈希处理。
密钥应存放在 macOS Keychain 中。它们绝不应出现在工具参数、命令参数、环境变量、日志、提交到 Git 的配置或发布文件中。
SOURCE_FAITHFUL_V1 的含义
图像始终保留其原始 .dat 字节。只有当强文件签名或一种明确无误的单字节 XOR 变换验证通过时,才会写入解码后的图像变体。视频必须带有 MP4 ftyp 签名。语音 BLOB 会被保留,但不声称具有转写或播放兼容性。
表情符号提取、普通附件、未下载到此 Mac 的媒体,以及某些私有容器仍未解决。因此,公开结果刻意设为 media_complete=false。SOURCE_FAITHFUL_V1 意味着本地可用的源字节已被保留并验证;它并不意味着完全解码或可播放的多模态导出。
同样,“完整”只能描述一个已验证的、静止的 Mac 数据库快照。它绝不包含已删除的历史、仅云端或仅手机的历史,或 WeChat 从未在本地存储的内容。
要求
macOS
Python 3.10 或更高版本
Node.js 24 或更高版本
pnpm 11
uvlibzstd,用于解码 zstd 压缩的消息负载;没有它,原始压缩字节会以 base64 形式保留官方 WeChat 安装,以及访问你自己的本地账户数据
仅将本项目用于你有权归档的数据。聊天归档包含他人的私人信息,即使它属于你自己的账户;请将归档保存在本地、进行访问控制,并不要纳入 Git。
安装核心与 MCP 服务器
从本仓库的检出副本开始:
cd /path/to/wechat-archive
PROJECT_DIR="$(pwd -P)"
CONFIG_PATH="${HOME}/Library/Application Support/WeChatArchive/config.json"
uv venv
uv pip install -e '.[test]'
pnpm --dir mcp-server install --frozen-lockfile
mkdir -p "$(dirname "$CONFIG_PATH")"
chmod 700 "$(dirname "$CONFIG_PATH")"
cp config.example.json "$CONFIG_PATH"
chmod 600 "$CONFIG_PATH"使用 config.example.json 作为其模板来编辑私有配置。source.root 和 archive.root 都必须是绝对、规范且相互独立的路径。归档根目录不得位于源目录树内。生产配置应使用 Keychain 提供程序。file 提供程序仅用于从现有的、用户拥有的、权限为 0600 的普通文件进行迁移;符号链接会被拒绝。
密钥获取和应用修复被有意排除在本插件之外。请遵循 docs/BOOTSTRAP.md 中的受监督边界,而不要将密钥放入 shell 历史,或要求智能体修改 WeChat。
首先运行只读预检:
.venv/bin/wechat-archive --config "$CONFIG_PATH" doctor该命令会向 stdout 写入恰好一个 wechat-archive.command/v1 JSON 对象。只有 READY 才允许进行单独确认的同步。状态模型请参阅 架构与完整性。
安装到 DeepSeek Harness
除非带有 --install,否则安装程序为试运行:
python3 scripts/install_dsh.py
python3 scripts/install_dsh.py --install它只管理 Harness 配置文件中的一个标记块,以及指向此检出的一个 ~/.dsh/skills/wechat-archive 符号链接。它不会修改 DeepSeek Harness 的源代码检出,也不会覆盖无关的 Skill。在进行实际配置文件编辑之前,它会创建一个权限为 0600 的备份。
Harness 暴露以下名称:
mcp__wechat__wechat_doctormcp__wechat__wechat_statusmcp__wechat__wechat_syncmcp__wechat__wechat_verify
随附的 安全覆盖层 会设置 WECHAT_ARCHIVE_ALLOW_SYNC=0。因此,安装启用的是只读诊断和状态检查,而非同步。在所有实机检查通过后,操作员必须显式将服务器端的启用开关设为 1,重启 MCP 进程,并且仍然要用 confirm=true 调用 wechat_sync。
移除操作默认也是试运行:
python3 scripts/uninstall_dsh.py
python3 scripts/uninstall_dsh.py --uninstall可选的定期同步
计划采集直接调用确定性核心;它不依赖浏览器标签页、语言模型或正在运行的 Harness 对话。以下命令仅生成并检查一个每天 03:15 的 LaunchAgent,而不会安装它:
REVIEW_DIR="${TMPDIR:-/tmp}/wechat-archive-review"
REVIEW_PLIST="${REVIEW_DIR}/local.wechat-archive.sync.plist"
mkdir -p "$REVIEW_DIR"
python3 scripts/render_launchagent.py \
--project-root "$PROJECT_DIR" \
--python "$PROJECT_DIR/.venv/bin/python" \
--config "$CONFIG_PATH" \
--hour 3 --minute 15 \
--sync-timeout-seconds 1800 \
--verify-timeout-seconds 7200 \
--output "$REVIEW_PLIST"
plutil -lint "$REVIEW_PLIST"
python3 scripts/install_launchagent.py --plist "$REVIEW_PLIST"最后一个命令仍然是试运行。只有以下显式操作才会安装并引导该任务:
python3 scripts/install_launchagent.py --plist "$REVIEW_PLIST" --install在 doctor 报告 READY 并且手动确认的 sync 后接 verify 成功之前,请不要安装它。每次计划运行都会先执行同步,再执行完整验证。如果 WeChat 处于活动状态或 WAL 不为空,运行会安全退出,并可能在下一个计划时间重试。
同步和完整验证有各自独立的有界超时时间:默认分别为 30 分钟和两小时,最长可配置为八小时。完整验证会读取所有历史媒体对象,因此请根据归档大小选择其超时时间。
验证与发布检查
仓库中的所有测试都使用合成测试数据。请勿用真实聊天数据替代。
.venv/bin/python -m pytest -q
pnpm --dir mcp-server test
python3 scripts/check_manifest.py --scan-content
python3 scripts/build_release.py \
--output "${TMPDIR:-/tmp}/wechat-archive-0.1.0.tar.gz"进程成功退出并不能充分证明真实归档。验收条件是 SYNCED 或 NO_CHANGE,紧接着是 VERIFIED,并具有预期的源覆盖范围。完整的验收门槛请参阅 验收门槛。
许可证与第三方作品
项目代码以 MIT 许可证 发布。经过审计或引用的上游项目及其许可证列在 THIRD_PARTY_NOTICES.md 中。真实聊天、数据库、密钥、媒体、日志、本地配置和历史交接归档绝不会成为发布的一部分。
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceProvides read-only access to local Beeper message history on macOS, enabling users to search conversations, read messages, and list recent chats through natural language queries. Supports both SQLite and IndexedDB storage formats with privacy-focused local-only operation.1
- AlicenseAqualityFmaintenanceEnables Claude Code to read encrypted WeChat chat history from local database, search messages, view sessions and contacts.418Do What The F*ck You Want To Public
- AlicenseNot gradedqualityCmaintenanceEnables Claude to access and search local messages and contacts across multiple platforms (iMessage, Discord, Gmail, Slack) via a local-first datastore, ensuring data never leaves the Mac.MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to read, search, and send iMessages, manage contacts, and access attachments on macOS.16MIT
Related MCP Connectors
Let ChatGPT, Claude & Cursor use your Mac: email, calendar, iMessage, Teams, files. Local, free.
Private-by-default, local-first memory/context/task orchestrator for MCP apps and agents.
Permission boundary receipts for ChatGPT agents.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/BENZEMA216/wechat-archive-harness'
If you have feedback or need assistance with the MCP directory API, please join our Discord server