Диагностика
Проверяйте записи запусков WhatsApp CLI и диагностику без текста сообщений и учётных данных.
Используйте эту страницу, когда команда завершается неудачно, зависает или выполняется слишком долго, и вы хотите понять, почему. Вы сможете наблюдать за операциями команды по мере их выполнения, вести учет выполнения, проверять установку и отправлять отчет о проблеме, не содержащий текста сообщения.
Несколько слов, которые используются на этой странице:
- run – это один вызов
waот начала до выхода. - Запись о выполнении — это папка, в которой хранится то, что было выполнено при каждом запуске: его команда, его результат и одна строка для каждой операции. Он никогда не содержит текст сообщений, имена или заголовки чатов.
wa personal doctorпроверяет установку: версию, профиль, настройки, локальное хранилище и собственные части WhatsApp — движок, ключи устройства и блокировку. – Отчет о проблеме — это один файл JSON, созданный на основеwa personal doctor, и неудачный запуск. Вы прикрепляете его к проблеме.
Что можно сделать
| Задача | Команда | Сохраняет что-нибудь? |
|---|---|---|
| Смотрите каждую операцию, как она происходит | wa --trace … | нет, печатает только в stderr |
| Смотрите весь провал | wa --debug … | нет, печатает только в stderr |
| Ведите учет одного запуска | wa --record … | да, рекорд запуска |
| Найти неудачный запуск позже | wa personal runs list | неудачный запуск сохраняется сам по себе |
| Ведите учет каждого запуска | wa personal config set record true | да, каждый запуск |
| Проверьте установку | wa personal doctor, wa personal doctor --online | нет |
| Сообщить о проблеме | wa personal doctor reports create | да, один файл вы отправите |
Покажите это: --trace и --debug
wa personal --trace messages send 100000000000001@lid "test"
wa personal --debug chats mark-read 100000000000001@lid--trace печатает каждую операцию на stderr по мере ее возникновения: что было запрошено, что вернулось, с идентификаторами, счетчиками, длительностью и кодом ошибки, если таковой был. stdout не меняется, поэтому канал по-прежнему получает только данные. Даже в этом случае собственный журнал движка остается отключенным: в нем указаны идентификаторы WhatsApp, а идентификатор номера телефона — это номер телефона.
--debug заменяет однострочную ошибку всей записью об ошибке — ее причиной и стеком — в stderr.
Сохраните: --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Идентификатор запуска, указанный выше, составлен; runs list показывает настоящие.
Запись запуска — это папка под runs/<day>/ в папке состояния. Его имя – время и команда. Он содержит два файла:
run.json— команда, профиль, версияwa, узел и система, когда она началась и закончилась, результат и код ошибки;events.jsonl— те же операции, что и--trace, по одной в строке.
Неудачный запуск всегда сохраняется
Если команда завершается ошибкой, ее выполнение сохраняется даже без --record. run.json тогда имеет "keptBecauseFailed": true. Это касается каждой команды и каждой ошибки: плохой вариант, неизвестная команда, проверка перед любой работой, отказ, потому что другая команда удерживает устройство. Запись содержит только слова команды, такие как messages send, а не то, что за ними следует.
Успешный запуск не оставляет записей, если вы их не запросите, поэтому отчет о проблеме всегда не прикрепляется. --no-record или "record": false в настройках это тоже отключает.
Успешные поиски сохраняют свою собственную историю, помимо записей о запусках: см. поиск.
Когда записывать каждый запуск
wa personal config set record true # this profile
wa personal --no-record chats list # but not this oneПо умолчанию успешный запуск не записывается, пока вы не спросите. Инструмент обмена сообщениями, в котором хранится папка с информацией о том, кого и когда вы читаете, и дневник вашей жизни, о котором никто не просил.
Как долго он живет
30 дней или keep_runs_for_days в настройках. Старые запуски удаляются только тогда, когда новый сохраняется целый день по имени папки, поэтому для принятия решения ничего открывать не нужно.
Чего никогда нет в записи
Запись о выполнении и --trace содержат имя операции, идентификаторы, количество, продолжительность и коды ошибок. Они никогда не несут:
- текст сообщения;
- заголовок чата или имя человека;
- то, что вы набрали как
<chat>, потому что набранный чат часто является именем; - номер телефона, код сопряжения или ключи устройства.
То же самое относится и к отчету, составленному по результатам запуска.
Проверьте установку: wa doctor
wa personal doctor # connects to nothing
wa personal doctor --online # also connects once and reads the account; sends nothingПомимо версии, среды выполнения, профиля, файла конфигурации и локального хранилища, doctor считывает с диска три вещи WhatsApp, ничего не запуская:- engine — есть ли программа движка для запуска и путь к ней. Когда он отсутствует, подсказка говорит, что делать: переустановить wa с включенными дополнительными пакетами, установить WA_ENGINE или при проверке исходного кода запустить pnpm engine:build.
device— существуют ли ключи устройства, и могут лиprivate.db, его файлы-walи-shmили их папка быть прочитаны другими пользователями этой машины. К каждому такому файлу прилагается командаchmod, которая его исправляет.doctorникогда не открывает ключи и никогда не меняет режим файла сам. В Windows проверка Unix-прав доступа к файлам не выполняется.lock— кто последним удерживал одно соединение устройства (serve (pid 4242)), и выполняется ли этот процесс. Движок никогда не очищает имя, поэтому держатель считается запущенным только до тех пор, пока работает его процесс.
--online подключается один раз. Во время работы serve вместо этого используется соединение serve (одно соединение на устройство).
Отчет о проблеме
wa personal doctor reports create # about the newest failed run
wa personal doctor reports create --run 20261001T080000Z-process-000001 # a made-up run idОн записывает файл JSON — то, что показывает wa personal doctor плюс запуск — и говорит, куда его отправить: новая проблема на github.com/WireCatLabs/whatsapp-cli/issues. Прочтите его, прежде чем отправить. Он не содержит текста сообщения. Только wa doctor reports show показывает, что будет содержать отчет, и ничего не пишет.
Если неудачных запусков не сохранилось, запустите неудачную команду еще раз; его неудача сохраняется сама собой.
Что делать с запусками
Записи имеют формат JSON, поэтому jq отвечает на вопросы о них. wa personal runs list --json отвечает на { items, page, meta }, а items — это run.json серий, сначала самые новые:
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'Ошибки поиска и частичные запуски
wa personal search runs error_code:authentication_error --json
wa personal search runs status:partial 'started_at>=2026-10-01' --jsonsearch runs ищет буквальный диагностический текст в записях. Условия запроса, например operation:messages.download, profile:work, error_code:timeout, status:failed, а также сравнения и диапазоны started_at:, сужают поиск вместе с --limit и --page; каждая страница вмещает до 100 запусков. Команда читает только записи и никогда не подключается.