Подключение, устройства и профили
Привяжите устройство WhatsApp по QR-коду, настройте профили и узнайте правило одного подключения.
Откройте эту страницу при первой привязке wa к WhatsApp, добавлении второго аккаунта или сообщении wa о непривязанном профиле. Вы узнаете, как подключить устройство, проверить выбранный аккаунт, отключить его и найти данные, которые wa использует для сохранения доступа.
⚠️
wa— неофициальный клиент вашего аккаунта WhatsApp. WhatsApp может блокировать такие аккаунты, в том числе за массовую рассылку и сообщения незнакомым людям.waменяет данные только по явной команде, ограничивает отправку и приостанавливает изменения, когда WhatsApp требует снизить частоту запросов. Не отправляйте массовые или нежелательные сообщения (ограничения).
Во-первых, слова, которые используются на этой странице:
- Связанное устройство:
waна этом компьютере, как его видит WhatsApp. Вы подключаете его с телефона так же, как вы подключаете WhatsApp Web, и телефон отображает его в разделе «Настройки» → «Связанные устройства». Его ключи живут в одном файле на этом компьютере. Тот, у кого есть этот файл, может читать и отправлять его от вашего имени, поэтому относитесь к нему как к своему паролю. - Отправка истории: копия ваших последних чатов отправляется один раз через несколько секунд после установления связи.
waсохраняет то, что поступает; более старые сообщения одного чата можно запросить на телефоне позже (старая история). - Профиль: имя одного связанного устройства на этом компьютере со своими ключами и настройками. Каждая команда, использующая аккаунт, дает ей имя, поэтому при настройке вы выбираете одно имя (
wa personal setup) и используете его в дальнейшем (profiles).
Первый запуск
wa personal setup проводит первый запуск в пять шагов: папки этого компьютера, ссылка, аккаунт, пять чатов из локального хранилища и навык агента (--agent codex, cursor, claude, gemini, all или none). Подождите около пяти минут, большая часть из которых — история. Запустите его в терминале. Профиль, связанный ранее, проверяется без повторной привязки, и ничего не запрашивается. Перед QR-кодом или кодом сопряжения установите и session start напечатайте приведенное выше предупреждение в stderr, один раз для каждой ссылки. wa personal session start — это команда только для ссылки.
Связывание
wa personal session start # a QR code in the terminal
wa personal session start phone # your number, typed in the terminal, then a code to type on the phoneQR: отсканируйте код в WhatsApp на телефоне: Настройки → Связанные устройства → Привязать устройство. Код обновляется, пока вы ждете.Телефон: введите свой номер в международном формате, когда wa спросит. wa показывает восьмизначный код сопряжения; На телефоне откройте «Настройки» → «Связанные устройства» → «Связать устройство» → «Связать с номером телефона» и введите его. Число поступает в механизм на входе, а не в качестве аргумента, поэтому другие программы на этом компьютере не видят его в списке процессов.
Сразу после этого телефон отправляет вашу историю. session start сохраняет то же соединение открытым, сохраняет все поступающее в локальное хранилище и останавливается, когда телефон молчит в течение 45 секунд или при нажатии Ctrl+C. Ctrl+C там или --timeout завершает только это ожидание: устройство остается подключенным, все поступившее сохраняется и подсчитывается, а команда завершается кодом выхода 0. wa personal setup ждет так же, затем переходит к оставшимся шагам в соответствии с обычным для команды лимитом времени, начиная заново. Затем продолжайте получать с помощью wa personal server install (локальное хранилище).
Когда агент запускает ссылку
Ваш AI-агент может установить для вас соединение. Без терминала wa печатает QR-код в виде обычного текста, и агент вставляет его в чат, чтобы вы могли его отсканировать:
wa personal setup --agent claude --json
wa personal session start qrАгент выполняет команду в фоновом режиме, поскольку ожидает вашего сканирования. WhatsApp отправляет новый код через 60 секунд, а затем каждые 20 секунд; агент вставляет каждый новый и говорит, что срок действия старого истек. При использовании --json каждый код также представляет собой одну строку в stderr: {"event":"qr","qr":{"text":…,"expires_at":null,"scan":…}}. Текст имеет ширину около 73 столбцов. Связывание через MCP не предлагается: приложение, в котором есть только MCP, попросит вас выполнить команду. Код сопряжения вы можете запустить в своем собственном терминале: агент никогда не спросит у вас номер телефона или код в чате.
Проверить и отсоединить
wa personal account show # who this profile is linked as; the phone number shows only its last four digits
wa account list # every profile on this computer, and the account each is linked as
wa personal session end # unlink the device on WhatsApp's side, and delete its keys hereИзмените свое имя, информацию и фото
wa personal account update --first-name Ana --last-name Silva # WhatsApp keeps one name: "Ana Silva"
wa personal account update --description "Back on Monday" # the "about" line
wa personal account update --photo ~/me.jpg # the profile photo, a square JPEGИзменение имени отправляется как настройка аккаунта через wa. У недавно привязанного устройства может ещё не быть ключей настроек WhatsApp: оставьте serve работающим и повторите попытку позже.
Для фотографии профиля wa требует квадратный JPEG со стороной от 190 до 720 пикселей, как для фотографии группы. wa не преобразует и не обрезает изображение и отклоняет PNG или WebP до изменения данных. Если имя, описание и фотография заданы вместе, они меняются в этом порядке; при последующей ошибке указано, что уже изменилось. Удаляйте фотографию на телефоне.
wa personal session end удаляет устройство на стороне WhatsApp тоже: оно исчезает из списка связанных устройств телефона. Он оставляет локальное хранилище такой, какая она есть. Пока serve выполняется для профиля, он отказывается (код выхода 12): сначала остановите serve с помощью wa personal server stop или Ctrl+C, где он запускается.
Одно соединение на устройство
WhatsApp допускает одно подключение для каждого подключенного устройства; второй заставляет WhatsApp отказаться от первого. Таким образом, одна команда wa может подключить профиль за раз. serve, watch и каждая подключающаяся команда сначала блокируют устройство; другая команда для того же профиля отклоняется и называет владельца:
this WhatsApp login is in use by serve (pid 4242)serve является исключением. Пока он работает, команда для того же профиля, который будет подключаться, не снимает блокировку: она выполняется внутри serve, при соединении serve. Он достигает serve через сокет рядом с файлом блокировки serve (<state>/serve/<profile>.sock, режим 0600, поэтому открыть его может только ваш собственный пользователь). Сюда входят отправки, редактирование, удаления, реакции, пометка прочитанных, загрузки, групповые и персональные команды, watch, doctor --online и сервер MCP wa <profile> mcp. Защита отправки и разрешения профиля по-прежнему применяются. Команда, запущенная таким образом, никогда не запрашивает: для записи на уровне разрешений ask требуется --yes (--allow-dangerous для удаления), или она отклоняется и говорит об этом.
- Не через
serve: связывание и отключение (session start,session end,setup) иmcp --http.chats listиchats showчитают локальное хранилище, поэтому никогда не подключаются. Запуски--offlineи--dry-runвообще не подключаются. serveзапускается или не отвечает: команда не выполнена. Он никогда не открывает второе соединение.waбыл обновлен, аserveне перезапущен: команда выполняется внутри более старой версииserveс ее кодом. Когда эти двое говорят о разных версиях реле, команда отклоняется и предлагается перезапуститьserve.wa upgradeсам перезапускает работающие серверы; в противном случае используйтеwa <profile> server restart.- Команды Windows: не проходят через
serve. Во время работыserveкоманда подключения отклоняется, как указано выше, с кодом завершения 12.
Если serve не запущен, каждая команда подключается самостоятельно. Пока один из них удерживает устройство, или wa personal mcp, который сохраняет соединение в течение двух минут после вызова, serve не может запуститься. Операции чтения никогда не подключаются, поэтому они работают рядом с любым из них.
Срок привязки устройства
До его завершения: по wa personal session end, через список связанных устройств на телефоне или самим WhatsApp. Телефон должен время от времени подключаться к Интернету, иначе WhatsApp отключит подключенные устройства. Если устройство отключено, каждая подключающаяся команда сообщает об этом с кодом выхода 4; снова привяжите устройство через wa personal session start (WhatsApp вышел из системы на этом устройстве).
Профили
Профиль — это отдельное связанное устройство: свои ключи, настройки, получатели и запуски. Он назван по первому слову, а не по опции:
wa personal chats list # profile "personal"
wa work chats list # profile "work"
export WA_PROFILE=work # the same for the whole shell sessionПервое слово — это профиль, если оно не является командой. Поэтому профиль не может называться chats, messages или каким-либо другим командным словом. Имена состоят из букв, цифр, точки, тире и подчеркивания, начинающиеся с буквы или цифры.
Порядок: побеждает первое совпадение: первое слово, затем WA_PROFILE. В противном случае команда, использующая аккаунт, останавливается с кодом выхода 2 и выводит список профилей на этом компьютере. wa никогда не выбирает ни одного, даже единственного. Команды, не использующие аккаунт, выполняются без профиля: --help, --version, commands, skill show, account list и config show.
WA_PROFILE_LOCK прикрепляет процесс к одному профилю. Установите его там, где запускается агент, и первое слово или WA_PROFILE, называющее любой другой профиль, будет отклонено (код выхода 5). Без него агент мог бы выбрать профиль с меньшими ограничениями.
Для чего предназначен каждый профиль: профили.
Где хранятся детали
| Что | Где |
|---|---|
| ключи устройства | ~/.local/share/whatsapp-cli/profiles/<profile>/private.db, доступен для чтения только вашему пользователю |
| кто держит одну связь | private.db.lock рядом |
| чаты и сообщения | локальное хранилище WireCat, совместно используемая каждым интерфейсом командной строки WireCat, ~/.local/share/WireCat/wirecat.db |
| настройки | ~/.config/whatsapp-cli/config.json; никогда не секрет |
WA_CONFIG_DIR, WA_STATE_DIR и WA_CACHE_DIR перемещают три папки (ссылка на конфигурацию).