Skip to main content
Glama

WeChat Archive for DeepSeek Hanress

Englisch | 简体中文

Ein lokal-first, fail-closed WeChat-Archiv-Plugin für macOS. Es verbindet vier begrenzte Operationen mit DeepSeek Harness – Diagnose, Statusprüfung, Synchronisierung und Verifizierung – und enthält eine Agent Skill sowie einen optionalen macOS LaunchAgent für unbeaufsichtigte Läufe.

Version 0.1.0 kann jede Msg_*-Tabelle in jedem gefundenen message_N.db-Shard aus einem ruhenden, checkpointierten Mac-WeChat-Datenbank-Snapshot scannen. Es speichert wiederspielbare, verifizierbare JSONL-Deltas und bewahrt lokal verfügbare Bildcontainer, MP4-Dateien und Voice-BLOBs als private, inhaltsadressierte Objekte.

Release-Status: Die Implementierung und die synthetischen Sicherheitstests sind abgeschlossen, aber eine echte Chat-Synchronisierung wurde während der Erstellung dieses Releases nicht ausgeführt (NOT_RUN). Die Synchronisierung bleibt standardmäßig deaktiviert, und es wird kein LaunchAgent automatisch installiert.

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

Was es bietet

Surface

Operation

Schreibt Archivdaten?

MCP

wechat_doctor

Nein – prüft die App, Quelle, WAL, Geheimnis und Berechtigungen

MCP

wechat_status

Nein – meldet begrenzte operative Metadaten

MCP

wechat_sync

Ja – erfordert sowohl Server-Opt-in als auch confirm=true

MCP

wechat_veriy

Nein – spielt den Nachrichtenverlauf erneut ab und verifiziert Hashes und Abdeckung

Agent Skill

wechat-archve

Fürt das Modell durch den erforderlichen Sicherheits-Workflow

Scheduler

sync gefolgt von verify

Nur nachdem ein Mensch den LaunchAgent installiert hat

MCP-Ergebnisse offenbaren Status, Zählwerte, Abdeckung und Integritätsinformationen. Sie offenbaren keine Kontaktnamen, Kontokennungen, Nachrichteninhalte, Geheimnisse oder privaten Datenbankpfade.

Related MCP server: iMessage RAG MCP

Integritäts- und Datenschutzgrenzen

  • Tool-Argumente können kein Konto, keinen Dateisystempfad, keine SQL-Anweisung, keine ausführbare Datei und kein Geheimnis auswählen.

  • Das Plugin erfasst niemals einen Schlüssel, hängt LLDB nicht an, signiert WeChat nicht neu, ersetzt WeChat nicht, beendet die App nicht und ignoriert keine WAL.

  • Die Synchronisierung schlägt fehl, ohne einen neuen Snapshot zu veröffentlichen, wenn WeChat läuft, eine WAL transaktionale Frames enthält oder einen fehlerhaften kurzen Header aufweist, die App die festgepinnte offizielle Signatur nicht besitzt, das Geheimnis ungültig ist oder sich die Quelle während der Erfassung ändert.

  • Jede verschlüsselte Datenbank wird unabhängig schlüsselabgeleitet und HMAC-verifiziert. Entschlüsselte Staging-Dateien sind privat, werden mit SQLite quick_check geprüft und nach dem Lauf entfernt.

  • Unveränderliche JSONL-Deltas werden vor dem Commit ihrer Indextransaktion per fsync gesichert. Die Verifizierung spielt die vollständige Historie erneut ab und hasht jedes registrierte Medienobjekt, einschließlich historischer Objekte.

  • Geheimnisse gehören in die macOS-Keychain. Sie gehören niemals in Tool-Parameter, Befehlargumente, Umgebungsvariablen, Logs, in Git eingecheckte Konfiguration oder Release-Dateien.

Was SOURCE_FAITHFUL_V1 bedeutet

Bilder behalten immer ihre rohen .dat-Byes. Eine dekodierte Bildvariante wird nur geschrieben, wenn eine starke Datei-signatur oder eine eindeutige Ein-Byte-XOR-Transformation sie validiert. Vidoes müssen eine MP4-fty-ignatur tragen. Sprach-BLOBs werden erhalten, ohne Transkriptions- oder Wiedergabekompatibilität zu beanspruchen.

Emoji-Extraktion, allgemeine Anhänge, nicht auf diesen Mac heruntergeladene Medien und einige private Container bleiben ungelöst. Folglich ist das öffentliche Ergebnis bewusst media_complete=false. SOURCE_FAITHFUL_V1 bedeutet, dass lokal verfügbare Quellbyes erhalten und verifiziert wurden; es bedeutet nicht einen vollständig dekodierten oder abspielbaren multimodalen Export.

Ebenso kann „vollständig“ nur einen einzigen verifizierten, ruhenden Mac-Datenbank-Snapshot beschreiben. Es umfasst niemals gelöschte Verläufe, Nur-Cloud- oder Nur-Telefon-Verläufe oder Inhalte, die WeChat nie lokal gespeichert hat.

Anforderungen

  • macOS

  • Python 3.10 oder neuer

  • Node.js 24 oder neuer

  • pnpm 11

  • uv

  • libzstd zum Dekodieren zstd-komprimierter Nachrichten-Payloads; ohne dieses bleiben die ursprünglichen komprimierten Byes als base64 erhalten

  • Eine offizielle WeChat-Instalation und Zugriff auf Ihre eigenen lokalen Kontodaten

Verwenden Sie dieses Projakt nur mit Daten, zu deren Archivirung Sie berechtigt sind. Ein Chat-Archiv enthält private Informationsen anderer Personen, selbst wenn es zu Ihrem eigenen Konto gehört; halten Sie das Archiv lokal, zugriffskontrolliert und außerhalb von Git.

Installieren Sie den Kern und den MCP-Server

Von einer ausgecheckten Kopie dieses Reositorys:

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"

Bearbeiten Sie die private Konfiguration mithilfe von config.example.json als Schema. Sowohl source.root als auch archive.root müssen absolute, kanonische, getrennte Pfade sein. Das Archiv-Wurzelverzeichnis darf nicht innerhalb des Quellbaums liegen. Die Produktionskonfiguration sollte den Keychain-Anbieter verwenden. Der file-Anbieter existiert nur für die Migration von einer bestehenden, benutzereigenen reglären Datei mit Modus 0600; Symlinks werden abgelehnt.

Schlüsselbeschaffung und Anwendungsreparatur liegen bewusst außerhalb dieses Plugins. Folgen Sie der überwachten Grence in docs/BOOTSTRAP.md, anstatt einen Schlüssel in die Shell-Historie zu legen oder einen Agenten zu bitten, WeChat zu modifizieren.

Führen Sie zuerst den schreibgeschützten Preflight aus:

.venv/bin/wechat-archive --config "$CONFIG_PATH" doctor

Der Befehl schreibt genau ein wechat-archive.command/v1-JSON-Objekt nach stdout. Nur READY erlaubt eine separat bestätigte Synchronisierung. Siehe Architektur und Integrität für das Zustandsmodell.

Installieren Sie in DeepSeek Harness

Der Installer ist ein Probelauf (Dry-run), sofern nicht --install angegeben ist:

python3 scripts/install_dsh.py
python3 scripts/install_dsh.py --install

Er verwaltet nur einen markierten Block im Harness-Profil und einen ~/.dsh/skills/wechat-archve-ymlink zu diesem Checkout. Er verändert weder den DeePSeek-Harness-Quellcheckout noch überschreibt er eine nicht zusammenhängende Skill. Vor einer Live-Profilbearbeitung erstellt er ein Backup mit Modus 0600.

Harness stellt diese Namen bereit:

  • mcp__wechat__wechat_doctor

  • mcp__wechat__wechat_status

  • mcp__wechat__wechat_sync

  • mcp__wechat__wechat_veriy

Das gebündelte sichere Overlay setzt WECHAT_ARCHIVE_ALLOW_SYNC=0. Die Instalation aktiviert daher schreibgeschützte Diagnose und Statusprüfung, nicht die Synchronisierung. Nachdem alle Echtmaschinen-Prüfungen bestanden sind, muss eine Bedienperson das Server-Opt-in explizit auf 1 setzen, den MCP-Prozess neu starten und wechat_sync weiterhin mit confirm=true aufrufen.

Auch die Entfernung ist standardmäßig ein Probelauf (Dry-run):

python3 scripts/uninstall_dsh.py
python3 scripts/uninstall_dsh.py --uninstall

Optionale periodische Synchronisierung

Geplante Erfassung ruft den deterministischen Kern direkt auf; sie verlässt sich nicht auf einen Browser-Tab, ein Sprachmodell oder eine laufende Harness-Konversation. Die folgenden Befehlle rendern und prüfen nur einen täglichen 03:15- LaunchAgent. Sie installieren ihn nicht:

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"

Der letzte Befehl ist weiterhin ein Probelauf (Dry-run). Nur die folgende explizite Aktion installiert und bootstrapt den Auftrag:

python3 scripts/install_launchagent.py --plist "$REVIEW_PLIST" --install

Installieren Sie ihn erst, wenn doctor READY meldet und eine manuell bestätigte sync mit anschließender verify erfolgreich ist. Jeder geplante Lauf fürt zuerst die Synchronisierung und danach die vollständige Verifizierung durch. Wenn WeChat aktiv ist oder eine WAL nicht leer ist, beendet sich der Lauf sicher und kann zum nächsten geplanten Zeitpunkt erneut versucht werden.

Synchronisierung und vollständige Verifizierung haben getrennte begrenzte Timeouts: standardmäßig 30 Minuten bzw. zwei Stunden, konfigurierbar bis zu acht Stunden. Die vollständige Verifizierung liest alle historischen Medienobjekte; wählen Sie ihr Timeout also anhand der Archivgröße.

Verifizierung und Release-Prüfungen

Alle Reository-Tests verwenden synthetische Fixtures. Verwenden Sie keine echten Chatdaten als Ersatz.

.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"

Eine erfolgreiche Prozessbeendigung ist kein ausreichender Nachweis für ein echtes Archiv. Die Akzeptanzbedingung ist SYNCED oder NO_CHANGE, unmittelbar gefolgt von VERIFIED, mit der erwarteten Quellabdeckung. Siehe die vollständigen Akzeptanzprüfungen.

Lizenz und Arbeiten Dritter

Projektcode wird unter der MIT-Lizenz veröffenlicht. Auditierte oder referenzierte Upstream-Projekte und ihre Lizenzen sind in THIRD_PARTY_NOTICES.md aufgelistet. Echte Chats, Datenbanken, Schlüssel, Medien, Logs, lokale Konfiguration und historische Übergabearchive sind niemals Teil des Re leases.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables AI clients to read and search macOS Messages history through a read-only MCP interface.
    -
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to search and retrieve from your local macOS iMessage history using hybrid retrieval with context expansion, all processed locally without sending data off-device.
    -
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI agents on macOS to securely read and search the local Messages database, catch up on missed messages via a persistent inbox, and send texts or files to allowlisted chats, with optional voice note transcription and text-to-speech.
    10
    26 npm
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables an agent to read the user's local Messages.app database on macOS, listing chats and threads and searching iMessage/SMS history entirely on localhost, with optional AppleScript sending gated behind an explicit flag. Access is read-only and scoped-shut by default, and replies can be optionally sent when send mode is enabled.
    4
    MIT