Zadanie 7: bot-whatsapp-basecamp (propozycja rozwiązania)
Treść zadania
Prośba użytkownika (1:1):
> Zaproponuj rozwiązanie dla takiego problemu. Współpracuje z różnymi ludźmi na grupach WhatsApp. Oni czasami coś potrzebują. Chciałbym, żeby w grupie na WhatsApp był AI bot, który wrzuca te zadania do odpowiedniej listy na Basecamp. I analogicznie, jeżeli ktoś w Basecamp zadanie zrobi, to wtedy się prześle informacja na grupę dokładnie odnośnie tego zadania z linkiem. Dzięki czemu kontraktorzy będą mieli wygodnie, a ja pracujący tylko na Basecamp też wygodnie. Bot ma monitorować grupę; jeżeli widzi zadanie / potrzebę, to robi zadanie w Basecamp.
Problem
- Grupa WhatsApp → Basecamp: ludzie (kontraktorzy, znajomi) zgłaszają potrzeby/zadania w grupach WhatsApp — trzeba je łapać i przekładać na todo w Basecamp (odpowiednia lista).
- Basecamp → grupa WhatsApp: gdy todo zostanie wykonane, grupa ma dostać informację o tym zadaniu + link.
- Cel: kontraktorzy zgłaszają wygodnie z WhatsApp; Kuba pracuje tylko w Basecamp.
Rekomendacja: Opcja A — Hermes gateway (wbudowany most Baileys) + dedykowany profil bota
Fakt (udokumentowany): Hermes Agent natywnie obsługuje WhatsApp jako platformę gatewaya przez wbudowany most Baileys (dokumentacja: /user-guide/messaging/whatsapp; wymaga Node.js v18+ i npm — most działa jako proces Node.js, bez stosu Chromium/Puppeteer). Oznacza to: bot ma swój numer/parę QR, siedzi w grupie, odbiera wiadomości na żywo i odpowiada. Adapter natywnie robi filtrowanie DM/grupa/wzmianka — grupy są wspierane, whitelist grup spójny z allowlistami grup Signal. Nie trzeba budować własnego bota od zera.
Komponenty
┌────────────────────────────┐ ┌──────────────────────────────┐
│ Grupa WhatsApp │ │ Basecamp (Convertere) │
│ (kontraktorzy) │ │ lista „Zlecenia do AI" itd. │
└────────────┬───────────────┘ └──────────────┬───────────────┘
│ wiadomości (live) │ webhook/polling
▼ ▼
┌──────────────────────────────────────────────────────────────┐
│ HERMES — profil „whatsapp-bot" (gateway WhatsApp/Baileys) │
│ • klasyfikacja wiadomości (LLM): czy to zadanie/potrzeba? │
│ • tworzenie todo w Basecamp (CLI basecamp, profil he) │
│ • nadzór: cron poller „Basecamp done → grupa" (wzorzec │
│ bot-responder / HE poller) │
└──────────────────────────────────────────────────────────────┘
1. Most WhatsApp (setup, ~0.5–1 dzień)
- Node.js ≥ 22 na serwerze (wymóg mostu Baileys).
- Numer telefonu (np. eSIM/drugi numer) — para przez kod QR przy pierwszym starcie (headless: wzorzec
headless-oauth-login/browser-tunneldo zeskanowania QR). - Kuba dodaje numer bota do grupy/grup.
- Config: sekcja
whatsappw config.yaml profilu (platforma gatewaya),unauthorized_dm_behavioritp.
2. Profil „whatsapp-bot"
- Nowy profil Hermes (wzorzec
hermes-profile-management/hermes-agent-roles): własny model (np.deepseek-v4-flashdo klasyfikacji — tanio; ew.kimi-k2-7-codedo zadań), własna pamięć, własne skille. - SOUL.md bota zawiera regułę klasyfikacji:
- Każda wiadomość w grupie → ocena „czy to zadanie/potrzeba?" (1 wywołanie LLM).
- TAK → utwórz todo w Basecamp; odpowiedz w grupie potwierdzeniem z linkiem.
- NIE → MILCZ (zero odpowiedzi na szum; oszczędność tokenów).
- Mapowanie grupa → lista Basecamp w configu bota (np.
config/bot-routing.yaml): domyślnie „Zlecenia do AI" (id10240043779), możliwe inne listy zależnie od grupy/tematu. - Tworzenie todo zawsze: assignee = AI + deadline (reguła z Zadania 6; tworzenie z due działa — przy tworzeniu
--duezapisuje się poprawnie).
3. Kierunek grupa → Basecamp (detekcja + todo)
Na wiadomość zaklasyfikowaną jako zadanie:
basecamp todo "<tytuł (skrót wiadomości)>" \
--in 48546146 --list <lista wg mapowania> \
--assignee 52866218 --due <dzień domyślny/+1 roboczy> \
--description "<pełna treść + autor + timestamp + link do wiadomości>"
- Bot odpowiada w grupie:
✅ Dodałem do Basecamp:. - Komendy pomocnicze bota (opcjonalnie):
/lista,/status— w stylu quick commands (zero-token).
4. Kierunek Basecamp → grupa (2 warianty)
| Wariant | Mechanizm | Zalety | Wady |
|---|---|---|---|
| B1 (Rekomendowany): cron poller | wzorzec bot-responder/HE poller: co 1–2 min skrypt czyta Basecamp (nowo ukończone todo z list), wypisuje JSON; agent wysyła na grupę przez gateway | zero publicznego endpointu, spójne z istniejącym HE botem; opóźnienie 1–2 min OK | opóźnienie |
| B2: Basecamp webhook | basecamp webhooks create na event Todo (completed) → publiczny endpoint webhooków Hermesa → agent wysyła na grupę | niemal 0 latencji | wymaga publicznego HTTPS endpointu + auth |
Rekomendacja: B1 na start, webhook jako późniejszy upgrade.
Komunikat do grupy:
✅ Gotowe: <tytuł zadania>
🔗 <app_url todo (link do Basecamp)>
5. Ochrona przed pętlą i bezpieczeństwo
- Bot ignoruje własne wiadomości (nie tworzy zadań z własnych postów).
- Whitelist grup — bot reaguje tylko w skonfigurowanych grupach (mapa
grupa JID → lista). - Nie odpowiada na szum (klasyfikacja LLM + próg).
- RODO: minimalizacja danych — do todo trafia treść zadania + autor + timestamp + link do wiadomości (nie zrzut całej rozmowy); dane osobowe tylko w niezbędnym zakresie;
send_read_receiptsdomyślnie wyłączone (prywatność). Sesja Baileys (~/.hermes/platforms/whatsapp/session) zawiera klucze szyfrowania i dane urządzenia — chroniona jak sekret, nie udostępniana. - Rate limiting (max N todo/godz. z grupy, anti-spam).
- Ryzyko platformy (Baileys): most emuluje sesję WhatsApp Web — dokumentacja Hermes wprost klasyfikuje tę ścieżkę jako „unofficial and ban-prone" (ryzyko blokady numeru przez WhatsApp). Numer bota musi być dedykowany (eSIM/prepaid), nigdy osobisty. Jeśli priorytetem jest formalna stabilność → Opcja B (Cloud API), kosztem większego setupu i ograniczeń Meta.
6. Metryki i porównanie botów
- Każda akcja bota logowana (czas, tokeny, koszt) — wzorzec
task-execution-summary; da się porównywać modele/boty (kimi vs deepseek) na realnych zadaniach.
Alternatywy
- Opcja B: Meta WhatsApp Cloud API (oficjalny) — konto Meta Business + dedykowany numer biznesowy + publiczny HTTPS endpoint (webhook, np. cloudflared) + token (System User permanent; tokeny tymczasowe żyją 24h). Produkcyjna, zero ryzyka blokady numeru. Setup: weryfikacja biznesu, aplikacja Meta, WABA, webhook — 2–3+ dni. Kluczowe ograniczenie dla kierunku Basecamp → grupa: Meta dopuszcza wiadomości free-form tylko w oknie 24h od ostatniej wiadomości użytkownika; poza oknem tylko zatwierdzone szablony (push po >24h ciszy → błąd Graph 131047). Przy asynchronicznym raportowaniu wykonanych todo z Basecamp to istotna wada — wzmacnia rekomendację B1.
- Opcja C: standalone service (whatsapp-web.js / Baileys + własny skrypt + Basecamp API) — bez Hermesa. Więcej ruchomych części, bez pamięci/skilli/kanban/cron Hermesa; reinwencja koła.
- Opcja D (hybryda): Baileys przez cron, nie gateway — bot odbiera przez osobny poller (whatsapp-web.js/Baileys w tle dopisuje wiadomości do kolejki), Hermes cron je czyta i tworzy todo. Działa bez pełnego wpięcia gatewaya, ale traci live-odpowiedzi.
Rekomendacja
Opcja A (B1): Hermes gateway + WhatsApp (Baileys) + profil whatsapp-bot + cron poller Basecamp→grupa.
Uzasadnienie: zero nowych usług, spójne z obecną infrastrukturą (profile, pamięć, skille, kanban, cron, koszty), najszybsze wdrożenie (1–2 dni), wzorce już sprawdzone (HE bot na Basecamp).
Nakład pracy (szacunek)
| Krok | Czas |
|---|---|
| Node 18+ + most WhatsApp (Baileys) + para QR + dodanie do grup | 0.5–1 dzień |
| Profil whatsapp-bot + SOUL + mapowanie grup→listy | 0.5 dnia |
| Cron poller Basecamp done → grupa (wzorzec bot-responder) | 0.5 dnia |
| Testy live (grupa testowa) | 0.5 dnia |
Status
Anulowane 2026-08-26 decyzją Kuby (wstrzymane; dokument pozostaje jako propozycja do ewentualnego wznowienia).
Propozycja — oczekuje na decyzję A/B/C użytkownika (rekomendacja: A/B1).
Źródła (Pliki)
/root/convertere/reports/zadania/7-bot-whatsapp-basecamp.md— ten plik- Skill
bot-responder— wzorzec pollera (Basecamp → platforma zewnętrzna) - Skill
basecamp— lista „Zlecenia do AI" (10240043779), reguła assignee+deadline - Skill
task-execution-summary— metryki kosztów/czasu zadań - Dokumentacja Hermes: WhatsApp via Baileys (
/docs/user-guide/messaging/whatsapp), llms-full.txt (sekcja whatsapp, wymóg Node.js ≥ 22)
Źródła (Linki URL)
- https://hermes-agent.nousresearch.com/docs/user-guide/messaging/whatsapp
- https://hermes-agent.nousresearch.com/docs/user-guide/messaging/whatsapp-cloud
- https://hermes-agent.nousresearch.com/docs/llms.txt
- https://app.basecamp.com/6251746/buckets/48546146/todolists/10240043779
- https://github.com/WhiskeySockets/Baileys (most WhatsApp, używany przez Hermes)