WeChat Archive for DeepSeek Harness
English | 简体中文
Локально-ориентированный плагин архивации WeChat для macOS с принципом fail-closed. Он подключает четыре ограниченные операции к DeepSeek Harness — диагностику, проверку состояния, синхронизацию и верификацию — и включает Agent Skill, а также опциональный macOS LaunchAgent для запусков без участия человека.
Версия 0.1.0 может сканировать все таблицы Msg_* во всех обнаруженных сегментах message_N.db из непротиворечивого снапшота базы данных Mac WeChat с контрольной точкой. Она хранит воспроизводимые, проверяемые 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, а не помещайте ключ в историю оболочки и не просите агента модифицировать WeChat.
Сначала запустите предварительную проверку только для чтения:
.venv/bin/wechat-archive --config "$CONFIG_PATH" doctorКоманда записывает в stdout ровно один JSON-объект wechat-archive.command/v1. Только READY разрешает отдельно подтверждённую синхронизацию. См. Архитектура и целостность для описания модели состояний.
Установка в DeepSeek Harness
Инсталлятор работает в режиме пробного запуска (dry-run), если не указан --install:
python3 scripts/install_dsh.py
python3 scripts/install_dsh.py --installОн управляет только одним помеченным блоком в профиле Harness и одной символической ссылкой ~/.dsh/skills/wechat-archive на эту рабочую копию. Он не изменяет исходный checkout 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 и по-прежнему вызывать wechat_sync с confirm=true.
Удаление также по умолчанию выполняется в режиме пробного запуска:
python3 scripts/uninstall_dsh.py
python3 scripts/uninstall_dsh.py --uninstallНеобязательная периодичесая синхронизация
Планируемый сбор данных вызывает детерминированное ядро напрямую; он не полагается на вкладку браузера, языковую модelь или заущенный разговор в Harness. Следующие команды только отображают и проверяют ежедневный LaunchAgent на 03:15. Они не устанавливают его:
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