WhatsApp

Diagnóstico

Inspecciona registros y diagnósticos de WhatsApp sin guardar mensajes ni credenciales.

Usa esta página cuando un comando falle, se cuelgue o tarde demasiado y quiera ver por qué. Al final, puede observar las operaciones de un comando a medida que ocurren, mantener un registro de una ejecución, verificar su instalación y enviar un informe de problema que no contenga ningún mensaje de texto.

Algunas palabras que utiliza esta página:

  • Una ejecución es una llamada de wa, desde el inicio hasta la salida.
  • Un registro de ejecución es una carpeta que guarda lo que hizo una ejecución: su comando, su resultado y una línea por operación. Nunca contiene texto de mensajes, nombres o títulos de chat.
  • wa personal doctor comprueba la instalación: la versión, el perfil, la configuración, el almacén local y las partes propias de WhatsApp: el motor, las claves del dispositivo y la cerradura.
  • Un informe de problema es un archivo JSON creado a partir de wa personal doctor y una ejecución fallida. Lo adjuntas a un problema.

Qué puedes hacer

TareaComando¿Guarda algo?
Vea cada operación tal como sucedewa --trace …no, imprime solo en stderr
Ver el fracaso completowa --debug …no, imprime solo en stderr
Mantén un registro de una ejecuciónwa --record …sí, un récord de carrera
Encuentra una ejecución fallida más tardewa personal runs listuna ejecución fallida se mantiene sola
Mantén un registro de cada ejecuciónwa personal config set record truesí, cada carrera
Verifique la instalaciónwa personal doctor, wa personal doctor --onlineno
Hacer un informe de problemawa personal doctor reports createsí, un archivo que envías

Muéstralo: --trace y --debug

wa personal --trace messages send 100000000000001@lid "test"
wa personal --debug chats mark-read 100000000000001@lid

--trace imprime cada operación en stderr a medida que sucede: qué se preguntó, qué respondió, con identificadores, recuentos, duración y un código de error, si lo hubiera. stdout no cambia, por lo que una tubería todavía obtiene solo datos. El propio registro del motor permanece apagado incluso entonces: nombra los identificadores de WhatsApp y un identificador de número de teléfono es un número de teléfono.

--debug reemplaza el error de una línea con el registro completo de la falla (su causa y pila) en stderr.

Guárdalo: --record

wa personal --record chats list
wa personal runs list              # recorded runs, newest first
wa personal runs show 20261001T080000Z-process-000001     # one run: its outcome, and one line per operation
wa personal runs path 20261001T080000Z-process-000001     # the folder that holds it

La identificación de ejecución anterior está inventada; runs list muestra los reales.

Un registro de ejecución es una carpeta bajo runs/<day>/ en la carpeta de estado. Su nombre es la hora y el comando. Contiene dos archivos:

  • run.json: el comando, el perfil, la versión de wa, el nodo y el sistema, cuándo comenzó y finalizó, el resultado y el código de error;
  • events.jsonl: las mismas operaciones que muestra --trace, una por línea.

Una ejecución fallida siempre se mantiene

Cuando un comando termina con un error, su ejecución se mantiene incluso sin --record. run.json entonces tiene "keptBecauseFailed": true. Esto se aplica a cada comando y a cada error: una mala opción, un comando desconocido, una verificación antes de cualquier trabajo, un rechazo porque otro comando retiene el dispositivo. El registro contiene sólo las palabras del comando, como messages send, nunca lo que siguió.

Una ejecución que funcionó no deja ningún registro a menos que ti lo solicite, por lo que un informe de problema siempre no se puede adjuntar. --no-record, o "record": false en la configuración, también desactiva esto.

Las búsquedas exitosas mantienen su propio historial, aparte de los registros de ejecución: consulte búsqueda.

Cuándo registrar cada ejecución

wa personal config set record true          # this profile
wa personal --no-record chats list          # but not this one

De forma predeterminada, una ejecución que funcionó no se escribe hasta que ti la solicita. Una herramienta de mensajería que guarda una carpeta de a quién lees y cuándo sería un diario de tu vida que nadie pidió.

¿Cuánto tiempo vive?

30 días, o keep_runs_for_days en la configuración. Las ejecuciones antiguas se eliminan sólo cuando se guarda una nueva, un día entero a la vez, por el nombre de la carpeta, por lo que no es necesario abrir nada para decidir.

Lo que nunca está en un registro

Un registro de ejecución y --trace contienen el nombre, los identificadores, los recuentos, las duraciones y los códigos de error de una operación. Nunca llevan:

  • el texto de un mensaje;
  • un título de chat o el nombre de una persona;
  • lo que escribiste como <chat>, porque un chat escrito suele ser un nombre;
  • un número de teléfono, un código de emparejamiento o las claves del dispositivo.

Lo mismo ocurre con un informe elaborado a partir de una ejecución.

Verifique la instalación: wa doctor

wa personal doctor            # connects to nothing
wa personal doctor --online   # also connects once and reads the account; sends nothing

Además de la versión, el tiempo de ejecución, el perfil, el archivo de configuración y el almacén local, doctor lee tres cosas de WhatsApp desde el disco, sin iniciar nada:- engine: si el programa del motor está ahí para iniciarse y su ruta. Cuando falta, la sugerencia dice qué hacer: reinstalar wa con los paquetes opcionales activados, configurar WA_ENGINE o, en una verificación de código fuente, ejecutar pnpm engine:build.

  • device: si las claves del dispositivo existen y si otros usuarios de esta máquina pueden leer private.db, sus archivos -wal y -shm o su carpeta. Cada uno de estos archivos viene con el comando chmod que lo soluciona. doctor nunca abre las claves y nunca cambia el modo de un archivo. En Windows se omite la comprobación de permisos Unix de los archivos.
  • lock: quién mantuvo la última conexión del dispositivo (serve (pid 4242)) y si ese proceso aún se ejecuta. El motor nunca borra el nombre, por lo que un titular cuenta como en funcionamiento sólo mientras su proceso lo hace.

--online se conecta una vez. Mientras se ejecuta serve, utiliza la conexión de serve (una conexión por dispositivo).

Un informe de problema

wa personal doctor reports create              # about the newest failed run
wa personal doctor reports create --run 20261001T080000Z-process-000001   # a made-up run id

Escribe un archivo JSON (lo que muestra wa personal doctor más la ejecución) y dice dónde enviarlo: un nuevo problema en github.com/WireCatLabs/whatsapp-cli/issues. Léelo antes de enviarlo. No contiene ningún texto de mensaje. wa doctor reports show por sí solo muestra lo que contendría un informe y no escribe nada.

Si no se mantiene ninguna ejecución fallida, vuelva a ejecutar el comando fallido; su fracaso se mantiene solo.

Qué hacer con las carreras

Los registros son JSON, por lo que jq responde preguntas sobre ellos. wa personal runs list --json responde a { items, page, meta } y items son los run.json de las ejecuciones, el más nuevo primero:

wa personal runs list --limit 100 --json | jq '[.items[] | select(.status == "failed") | {command, error_code}]'
wa personal runs list --limit 100 --json | jq '[.items[] | .duration_ms] | add / length'

Errores de búsqueda y ejecuciones parciales

wa personal search runs error_code:authentication_error --json
wa personal search runs status:partial 'started_at>=2026-10-01' --json

search runs busca texto de diagnóstico literal en los registros. Términos de consulta como operation:messages.download, profile:work, error_code:timeout, status:failed y comparaciones o rangos de started_at: lo acotan, junto con --limit y --page; cada página tiene hasta 100 ejecuciones. Solo lee los registros y nunca se conecta.

Siguiente