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 LaunchAgentQué ofrece
Superficie | Operación | ¿Escribe datos de archivo? |
MCP |
| No—comprueba la aplicación, el origen, el WAL, el secreto y los permisos |
MCP |
| No—informa metadatos operativos acotados |
MCP |
| Sí—requiere tanto el opt-in del servidor como |
MCP |
| No—reproduce el historial de mensajes y verifica los hash y la cobertura |
Agent Skill |
| Guía al modelo a través del flujo de seguridad requerido |
Programador |
| 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_checky 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
uvlibzstdpara decodificar cargas útiles de mensajes comprimidas con zstd; sin él, los bytes comprimidos originales se conservan como base64Una 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" doctorEl 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 --installGestiona ú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_doctormcp__wechat__wechat_statusmcp__wechat__wechat_syncmcp__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 --uninstallSincronizació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" --installNo 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.
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