WhatsApp

Подключение, устройства и профили

Привяжите устройство 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 phone

QR: отсканируйте код в 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 перемещают три папки (ссылка на конфигурацию).

Далее