본문으로 건너뛰기
cccskills
무료GitHub에 공개

whatsapp-pair

Привязать (или ПЕРЕпривязать) WhatsApp к этой машине — единственный шаг, который нельзя сделать за Антона, потому что… Триггеры «/whatsapp-pair», «/wa-pair», «подключи ватсап», «привяжи ватсап», «спарь ватсап», «ватсап отвалился», «ватсап не спарен», «перепривяжи whatsapp», «покажи QR ватсапа», «второй ватсап», «два ватсапа», «ватсап 2 аккаунта», «pair whatsapp», «relink whatsapp»

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

연동 도구Telegram
설치 방법 보기

포함된 파일(1)

  • SKILL.md13.4 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

OBJECTIVE: за один заход вернуть WhatsApp из RED в GREEN. Мою часть (мост, QR, страница, детект, проверка) делаю сам; от Антона нужен ровно один физический жест — поднести телефон к экрану. Финал = не «страница открылась», а зелёный вердикт независимого пробника.

Почему скилл вообще есть (замеры, не теория)

  • ⚠️ 21.09.2026, замер хаба: read-only mode — это НЕ «ватсап отвалился», и перепривязка тут не лечит. Оба MCP (mcp__whatsapp__* и mcp__whatsapp2__*) вернули «another process holds the WhatsApp connection» с PID 47960 и 44656 — то есть рельса ЗАНЯТА чужой живой сессией, мост при этом здоров. Чужие PID НЕ убиваем. Прежде чем звать Антона с телефоном, отличи одно от другого: python ~/.claude/scripts/wa_broker.py --status.
  • ⚠️ Порт owner-брокера = 8791, а не 8768. Документированный в старых сидах 127.0.0.1:8768 на хабе закрыт (Test-NetConnection → False), а owner слушает на 8791 и отвечает {"error":"Unauthorized"} на голый GET; токена в открытых конфигах (~/.claude/*.json, scripts/*.py) нет, значит HTTP-дверь без токена бесполезна и «порт закрыт» про 8768 — не доказательство смерти рельсы. Проверять надо ОБА порта и называть в отчёте именно поверхность.
  • ⚠️ LEGACY stdio инстансы = лок-война, а не один занявший. 20.09 их было 2, 21.09 — 34. Растущий список в --status означает, что процессы-сироты плодятся и отбирают лок друг у друга; это отдельный класс поломки (кандидат в reaper), а не повод перепривязывать аккаунт.
  • 01.07 → 05.08.2026 мост стоял мёртвым 35 суток: auth_info/creds.json пуст, входящие не доходили (возможны потерянные лиды). Рецепт починки каждый раз добывался заново — по кускам из трёх заметок и двух скриптов. Теперь он один и исполняемый.
  • Терминальный ASCII-QR на Windows = мозаика, телефон её не берёт (видно в server.log живьём).
  • QR живёт ~20с. Антон сканировал протухший и получал «check your connection and try again later» — это НЕ проблема сети, это старый код. Отсюда страница, которая сама берёт свежий.
  • Антон не работает в терминале: ему нужно окно, куда просто смотришь.

Движок (вся логика там, скилл — тонкая обёртка)

python "$USERPROFILE\.claude\scripts\wa_qr_live.py" · паспорт: ~/.claude/scripts/docs/wa_qr_live.md

командачто делает
--checkдиагноз без побочек: привязан? среда цела? сколько живых клиентов?
(без флагов)боевой заход: мост + QR + живая страница http://127.0.0.1:8799
--selftestпроверка детали без телефона (гоняется в регресс-сетке)
--heal-patchвернуть вендору печать сырого QR (её сносит любой npm update)
--forceпогасить чужих whatsapp-клиентов и стартовать всё равно
--account wa2работать со ВТОРЫМ аккаунтом (комбинируется с любой командой выше)

Коды выхода: 0 привязан · 1 таймаут/QR не пришёл · 2 уже привязан · 3 среда не готова · 4 крэш. Дефолтный таймаут 900с; --port если дефолтный занят.

Два аккаунта на одной машине (с 03.09.2026)

Вендор кладёт ВСЁ состояние (auth_info, store, lock) под $XDG_DATA_HOME/whatsapp-mcp, поэтому второй аккаунт = тот же вендор с другим XDG. Изоляция полная: свой линк, свой лок, AUTH_KEY_DUPLICATED МЕЖДУ аккаунтами невозможен — блокирует только второй клиент ТОГО ЖЕ аккаунта (движок различает их по argv-маркеру --wa-account=<имя>).

mainwa2
auth/store~\.local\share\whatsapp-mcp\~\.local\share\wa-wa2\whatsapp-mcp\
страница QRпорт 8799, ~\.claude\whatsapp-mcp\порт 8809, ~\.claude\whatsapp-mcp-wa2\
MCP-серверwhatsappwhatsapp2 (env XDG_DATA_HOME зашит в .claude.json)
пробникwa_probe.py --jsonXDG_DATA_HOME=$USERPROFILE/.local/share/wa-wa2 python wa_probe.py --json

Спаривать оба можно ПАРАЛЛЕЛЬНО: две страницы на двух портах, Антон сканирует каждую своим телефоном/аккаунтом. Патч QR_RAW один на двоих (общий dist вендора).

Ход работы

Шаг 0. Диагноз — до всякой стройки.

python "$USERPROFILE\.claude\scripts\wa_qr_live.py" --check
  • привязан : ДА → скан НЕ нужен. Молчание канала при живых кредах — это другая болезнь (демон/лок/вендор), иди в wa_probe.py --json и wa_broker.py --status, не гоняй Антона за телефоном.
  • среда : ...патч... → сперва --heal-patch, потом заново. Без патча QR виден только кашей.
  • живых клиентов : N>0 → второй клиент на одном линке даёт AUTH_KEY_DUPLICATED и рвёт привязку у всех. Гаси их (или --force), но сперва пойми, кто это: node с живым родителем-claude.exe — легальная сессионная копия, а не зомби.

Шаг 1. Спроси, телефон в руках? Коды сгорают по одному каждые 20с, окно 15 минут. Запускать «на всякий случай» = жечь цикл впустую. Одна строка: «телефон рядом? запускаю».

Шаг 2. Подними страницу.

python "$USERPROFILE\.claude\scripts\wa_qr_live.py"

Запускать в фоне (run_in_background), иначе блокирует сессию на весь скан. Скрипт печатает адрес страницы. Дальше — обязательно доведи картинку до глаз Антона, а не просто дай URL:

  • открой http://127.0.0.1:8799 в браузере (preview) и дай скриншот — канон §2.5 «убедись, что он видит»;
  • назови вслух путь %USERPROFILE%\.claude\whatsapp-mcp\index.html — ссылки у Антона не кликаются;
  • инструкция на самой странице уже написана (Настройки → Связанные устройства → Привязка устройства).

Шаг 3. Жди и следи. Страница сама показывает поколение кода и переключается на «готово». Со стороны сессии смотри status.json: state=QR + растущий generation = живой цикл; generation не растёт больше минуты = мост встал, смотри server.log.

Шаг 4. Проверь ЧУЖИМ прибором (обязательно). Свой же скрипт не считается доказательством — сторож не живёт в том, что сторожит:

python "$USERPROFILE\.claude\scripts\wa_probe.py" --json

status:"GREEN" = готово. RED с «МОЛЧИТ N суток» сразу после привязки — нормально: креды есть, а свежих сообщений ещё нет; перепроверь после первого входящего, не объявляй победу заранее.

Шаг 5. Прибери верстак. Фоновый процесс сам гасит мост и не оставляет клиентов. Проверь --check → живых клиентов : 0. Если привязка удалась — сними задачу 10-Tasks/task-2026-08-05-wa-qr-relink.md и пни connector-health-daily, чтобы табло позеленело.

Границы

  • Скан = руки Антона. Обойти нечем: не пароль из store и не OTP. Если он НЕ у экрана хаба — это не «жди», а другая рельса: node "$USERPROFILE\.claude\scripts\wa_pair.mjs" <телефон без +> просит у WhatsApp 8-значный код (телефон → Связанные устройства → «Связать по номеру телефона»). Код доезжает текстом в Telegram, QR — нет. Страница для этой рельсы не нужна.
  • Ничего наружу. Скилл не шлёт ни одного сообщения в WhatsApp; привязка устройства обратима (телефон → Связанные устройства → выйти) и не Tier-2.
  • Не чинит доставку. Спаренный мост ≠ работающая рассылка: тем занимается wa_broker.py (один владелец линка на машину) и связка демонов MCP.

Грабли, за которые уже платили

  1. npm update сносит патч QR_RAW_BEGIN → QR исчезает молча. --check это ловит.
  2. terminate()/kill() на Windows не валит node надёжно → накапливаются клиенты → следующий заход ловит AUTH_KEY_DUPLICATED. Движок гасит через taskkill /F /T.
  3. stdio-сервер гасит сам себя, как только закрыт stdin. Движок держит трубу открытой, поэтому отдельный keepalive.js больше не нужен.
  4. «Профиль отвечает, чаты видны» ≠ мост жив: это локальный кэш, он врал нам 26 дней. Доказательство живости = свежесть данных + наличие кредов, и только оно.

Канон: память [[whatsapp-mcp-integration]] (стек, пути, патчи), [[whatsapp-dead-since-july-and-watchdog-lied]] (почему сторож молчал), [[hub-connectors]]; CLAUDE.md §2.5 (покажи экран), §5.5 (сторож), §5.8 (тест+док+счётчик).

<!--kit-footer-->

Like this skill? It is part of second-brain-starter-kit: the second brain we built for ourselves and run every day at Palo Alto AI Research Lab. Install the whole set with npx skills add tonydzi/second-brain-starter-kit. Everything is open source and free, so take what you need.

Flagships worth a look on their own: secondop-panel (a second opinion from a panel of external models), claude-memory-tidy (stop your agent's memory from rotting), telegram-mcp-kit (your own Telegram over MCP in about 15 minutes).

Author: Anton Dziatkovskii, Palo Alto AI Research Lab. Telegram @tonydzi - WhatsApp +1 341 222 9178 - X @Tony_Stef_

Engineers: want to test-drive this setup? Message me. I hand out free starter seeds to engineers who test and report back, and custom skill requests are welcome.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

03

무료

Run an autonomous consensus round between agent peers on several machines: they negotiate a decision over a shared channel and execute it without a human relaying messages. Use when multiple machines must agree on a change. Triggers: "/03", "work it out among yourselves", "find consensus". Wakes the human only for irreversible actions or a deadlock.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

tonydzi/second-brain-starter-kit92026년 10월 20일 업데이트

1

무료

Recover a session after a hard crash (app died, machine rebooted, context lost mid-work): replay the turn-state ledger for the last requests, files and decisions, run a green/red health ping over the system map, file sync and MCP connectors, then rebuild the previous session history for pickup. Triggers: "/1", "resume after crash", "wake".

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

tonydzi/second-brain-starter-kit92026년 10월 20일 업데이트

agenda

무료

Show the operator's day: today's calendar plus what needs them personally (leads due, people awaiting a reply, deadlines), pulled from Calendar and Telegram and ranked. Read-only: sends and commits nothing. Triggers: "/agenda", "what's on today", "my agenda".

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

tonydzi/second-brain-starter-kit92026년 10월 20일 업데이트

ai-slop

무료

Rewrite machine-written text so it reads like a busy human wrote it: cut 50-70%, break the even rhythm, drop AI-tell words and filler, keep facts and protected terms. Use before publishing any post, reply or email drafted by a model. Triggers: /ai-slop, /slop, humanize, anti-slop, make it shorter and alive.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

tonydzi/second-brain-starter-kit92026년 10월 20일 업데이트

Decision protocol for strategic work: recall the knowledge vault, run a gap analysis, emit a deep-research prompt for external tools, then synthesize the returned reports into a decision memo. Use before any new product, feature, market, pricing, GTM or architecture call, where local recall alone is not enough. Triggers: "/alfa-search-recall-deepresearch", "alpha protocol", "R+DR".

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

tonydzi/second-brain-starter-kit92026년 10월 20일 업데이트

- КРЕДИТ АВТОРУ ИДЕИ: совет из комментария (TG @ClawRus / @ClawInga, комменты под постами Антона в FB, треды и issue на… Триггеры: “/alpha-credit“, “/credit“, “кто нам это посоветовал“, “запиши совет“, “поблагодари советчиков“, “кому мы должны спасибо“, “кредит автору“, “чей это был совет“, “credit the author“

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

tonydzi/second-brain-starter-kit92026년 10월 20일 업데이트

tonydzi의 스킬 모두 보기

이 스킬의 문제 신고