Skip to main content
Glama

WeChat Archive para DeepSeek Harness

Inglés | 简体中文

Un plugin de archivado de WeChat para macOS, local-first y fail-closed. Conecta cuatro operaciones acotadas a DeepSeek Harness—diagnosticar, inspeccionar el estado, sincronizar y verificar—e incluye una Agent Skill además de un LaunchAgent opcional de macOS para ejecuciones desatendidas.

La versión 0.1.0 puede escanear todas las tablas Msg_* de cada fragmento message_N.db descubierto a partir de una instantánea de base de datos de WeChat para Mac en reposo y con checkpoint. Almacena deltas JSONL reproducibles y verificables, y conserva los contenedores de imágenes disponibles localmente, los archivos MP4 y los BLOBs de voz como objetos privados direccionados por contenido.

Estado del lanzamiento: la implementación y las pruebas de seguridad sintéticas están completas, pero una sincronización real de chats no se ejecutó (NOT_RUN) al producir este lanzamiento. La sincronización permanece deshabilitada por defecto y no se instala ningún LaunchAgent automáticamente.

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

Qué ofrece

Superficie

Operación

¿Escribe datos de archivo?

MCP

wechat_doctor

No—comprueba la aplicación, el origen, el WAL, el secreto y los permisos

MCP

wechat_status

No—informa metadatos operativos acotados

MCP

wechat_sync

Sí—requiere tanto el opt-in del servidor como confirm=true

MCP

wechat_verify

No—reproduce el historial de mensajes y verifica los hash y la cobertura

Agent Skill

wechat-archive

Guía al modelo a través del flujo de seguridad requerido

Programador

sync seguido de verify

Solo después de que una persona instale el LaunchAgent

Los resultados MCP exponen estado, recuentos, cobertura e información de integridad. No exponen nombres de contacto, identificadores de cuenta, cuerpos de mensajes, secretos ni rutas privadas de bases de datos.

Related MCP server: WeChat MCP Server

Límites de integridad y privacidad

  • Los argumentos de las herramientas no pueden seleccionar una cuenta, una ruta del sistema de archivos, una sentencia SQL, un ejecutable o un secreto.

  • El plugin nunca captura una clave, se acopla a LLDB, vuelve a firmar o reemplaza WeChat, termina la aplicación ni ignora un WAL.

  • La sincronización falla sin publicar una nueva instantánea cuando WeChat está en ejecución, un WAL contiene marcos transaccionales o tiene una cabecera corta malformada, la aplicación carece de la firma oficial anclada, el secreto no es válido o el origen cambia durante la adquisición.

  • Cada base de datos cifrada usa una clave derivada de forma independiente y se verifica mediante HMAC. Los archivos provisionales descifrados son privados, se comprueban con SQLite quick_check y se eliminan después de la ejecución.

  • Los deltas JSONL inmutables se someten a fsync antes de que se confirme su transacción de índice. La verificación reproduce el historial completo y calcula el hash de cada objeto multimedia registrado, incluidos los objetos históricos.

  • Los secretos van en el llavero de macOS. Nunca deben estar en parámetros de herramientas, argumentos de comando, variables de entorno, registros, configuración confirmada en Git ni archivos de lanzamiento.

Qué significa SOURCE_FAITHFUL_V1

Las imágenes siempre conservan sus bytes .dat sin procesar. Una variante de imagen decodificada solo se escribe cuando la valida una firma de archivo sólida o una transformación XOR inequívoca de un solo byte. Los vídeos deben llevar una firma MP4 ftyp. Los BLOBs de voz se conservan sin afirmar compatibilidad de transcripción ni reproducción.

La extracción de emojis, los adjuntos generales, los medios no descargados en este Mac y algunos contenedores privados siguen sin resolverse. En consecuencia, el resultado público es deliberadamente media_complete=false. SOURCE_FAITHFUL_V1 significa que los bytes de origen disponibles localmente se conservaron y verificaron; no significa una exportación multimodal totalmente decodificada o reproducible.

Del mismo modo, «completa» solo puede describir una instantánea verificada y en reposo de la base de datos del Mac. Nunca incluye historial eliminado, historial solo en la nube o solo en el teléfono, ni contenido que WeChat nunca almacenó localmente.

Requisitos

  • macOS

  • Python 3.10 o superior

  • Node.js 24 o superior

  • pnpm 11

  • uv

  • libzstd para decodificar cargas útiles de mensajes comprimidas con zstd; sin él, los bytes comprimidos originales se conservan como base64

  • Una instalación oficial de WeChat y acceso a tus propios datos de cuenta locales

Usa este proyecto únicamente con datos que tengas autorización para archivar. Un archivo de chat contiene información privada de otras personas incluso cuando pertenece a tu propia cuenta; mantén el archivo local, con control de acceso y fuera de Git.

Instalar el núcleo y el servidor MCP

Desde una copia de trabajo de este repositorio:

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"

Edita la configuración privada usando config.example.json como esquema. Tanto source.root como archive.root deben ser rutas absolutas, canónicas y separadas. La raíz del archivo no debe estar dentro del árbol de origen. La configuración de producción debe usar el proveedor Keychain. El proveedor file existe únicamente para la migración desde un archivo regular existente, propiedad del usuario y con modo 0600; los enlaces simbólicos se rechazan.

La obtención de claves y la reparación de la aplicación están deliberadamente fuera de este plugin. Sigue el límite supervisado en docs/BOOTSTRAP.md en lugar de colocar una clave en el historial del shell o pedir a un agente que modifique WeChat.

Ejecuta primero la comprobación previa de solo lectura:

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

El comando escribe exactamente un objeto JSON wechat-archive.command/v1 en stdout. Solo READY permite una sincronización confirmada por separado. Consulta Arquitectura e integridad para ver el modelo de estados.

Instalar en DeepSeek Harness

El instalador es una prueba en seco (dry-run) a menos que esté presente --install:

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

Gestiona únicamente un bloque marcado en el perfil de Harness y un enlace simbólico ~/.dsh/skills/wechat-archive a esta copia de trabajo. No modifica la copia de trabajo del código fuente de DeepSeek Harness ni sobrescribe una Skill no relacionada. Antes de una edición en vivo del perfil, crea una copia de seguridad con modo 0600.

Harness expone estos nombres:

  • mcp__wechat__wechat_doctor

  • mcp__wechat__wechat_status

  • mcp__wechat__wechat_sync

  • mcp__wechat__wechat_verify

El overlay seguro incluido establece WECHAT_ARCHIVE_ALLOW_SYNC=0. Por lo tanto, la instalación habilita el diagnóstico de solo lectura y la inspección de estado, no la sincronización. Una vez superados todos los controles en máquina real, un operador debe establecer explícitamente el opt-in del servidor en 1, reiniciar el proceso MCP y aun así llamar a wechat_sync con confirm=true.

La eliminación también es una prueba en seco (dry-run) por defecto:

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

Sincronización periódica opcional

La adquisición programada llama directamente al núcleo determinista; no depende de una pestaña del navegador, de un modelo de lenguaje ni de una conversación de Harness en ejecución. Los siguientes comandos solo generan e inspeccionan un LaunchAgent diario a las 03:15. No lo instalan:

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"

El último comando sigue siendo una prueba en seco (dry-run). Solo la siguiente acción explícita instala e inicializa el trabajo:

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

No lo instales hasta que doctor informe READY y una sync confirmada manualmente seguida de verify tenga éxito. Cada ejecución programada realiza primero la sincronización y después la verificación completa. Si WeChat está activo o un WAL no está vacío, la ejecución finaliza de forma segura y puede volver a intentarlo en la próxima hora programada.

La sincronización y la verificación completa tienen tiempos de espera acotados separados: 30 minutos y dos horas por defecto, configurables hasta ocho horas. La verificación completa lee todos los objetos multimedia históricos, así que elige su tiempo de espera en función del tamaño del archivo.

Verificación y comprobaciones de lanzamiento

Todas las pruebas del repositorio usan datos de prueba sintéticos. No sustituyas datos reales de chat.

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

Una salida exitosa del proceso no es evidencia suficiente de un archivo real. La condición de aceptación es SYNCED o NO_CHANGE, seguida inmediatamente de VERIFIED, con la cobertura de origen esperada. Consulta los criterios de aceptación completos.

Licencia y trabajo de terceros

El código del proyecto se publica bajo la Licencia MIT. Los proyectos upstream auditados o referenciados y sus licencias se enumeran en THIRD_PARTY_NOTICES.md. Los chats reales, las bases de datos, las claves, los medios, los registros, la configuración local y los archivos históricos de traspaso nunca forman parte del lanzamiento.

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides 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
  • A
    license
    A
    quality
    F
    maintenance
    Enables Claude Code to read encrypted WeChat chat history from local database, search messages, view sessions and contacts.
    4
    18
    Do What The F*ck You Want To Public
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables 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
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to read, search, and send iMessages, manage contacts, and access attachments on macOS.
    16
    MIT

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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