# Chatboții și punțile de mesagerie — care e care Există **trei lucruri numite „Maria"**, **doi boți pe Discord** și **două punți WhatsApp legate la același număr de telefon**. Documentul ăsta spune care e care, unde rulează și cum verifici, în 30 de secunde, cu care vorbești de fapt. > **De ce există documentul:** pe 2026-08-31 s-a pierdut aproape o oră de diagnostic > fiindcă Maria de pe WhatsApp răspundea, dar toate verificările se făceau pe containerul > greșit. Pe LXC 171 totul părea rupt (niciun LLM, WhatsApp neasociat, log fără > activitate) — răspunsurile veneau de pe LXC 104. **Verificat live pe 2026-08-31.** Stările (`connected`, ce serviciu rulează) se schimbă; topologia, nu. --- ## Tabelul scurt | Cine | Unde rulează | Canal | Model | Sursa de cunoștințe | |---|---|---|---|---| | **Maria pe Flowise** | LXC 104, `flowise.service`, port 3000 | web (prin ngrok) | configurat în chatflow | chatflow Flowise + docstore propriu | | **Maria WhatsApp** ← instanța vie | LXC 171, `maria-*.service` | WhatsApp, nr. 40723197939 | `llama-qwen35` de pe 104, prin rețea | depozit sincronizat din Google Drive | | **Maria WhatsApp — prototipul** | LXC 104, `maria-whatsapp-*.service` | — (**oprit** 2026-08-31) | — | `rag_index.json` propriu, mic | | **Echo (MoltBot)** | LXC 110, `echo-core.service` | Telegram + WhatsApp + Discord | Claude Opus 4.5 (API) | proiectele lui, roa2web | | **Puntea Discord → Claude Code** | LXC 171, `claude-discord.service` | Discord (guild privat) | Sonnet/Opus, per fir | tot `/workspace`, acces SSH la cluster | Cele două Marii de WhatsApp rulează **același cod**, din surse diferite. Vezi mai jos. --- ## Cele trei Marii ### 1. Maria pe Flowise — chatbot web LXC 104 (`10.0.20.161`), `flowise.service` pe portul 3000, expus public prin `ngrok.service` la `https://mutual-special-koala.ngrok-free.app`. Chatflow-ul e definit în interfața Flowise; memoria e Buffer Window (ultimele 5 schimburi). Sursa versionată a chatflow-ului: `vfp_roaauto/COMUN/utile/chatbot/`. Detalii: [`proxmox/lxc104-flowise/README.md`](../proxmox/lxc104-flowise/README.md). ### 2. Maria WhatsApp + RAG — prototipul, OPRIT din 2026-08-31 **LXC 104**, `/root/maria-whatsapp-bridge/` — **în afara git-ului**. Serviciile `maria-whatsapp-bridge` și `maria-whatsapp-consumer` sunt **oprite și dezactivate** din 2026-08-31, când rolul a trecut pe versiunea din git de pe LXC 171. Codul a rămas pe disc ca plasă de siguranță; `llama-qwen35.service` și `flowise.service` rulează mai departe și sunt folosite de restul sistemului. Ce era cât timp a fost activ: | Serviciu | Ce face | |---|---| | `maria-whatsapp-bridge.service` | punte Baileys (Node), port 8099 | | `maria-whatsapp-consumer.service` | `consumer.py` — citește mesaje, caută în RAG, întreabă LLM-ul | | `llama-qwen35.service` | `llama.cpp` cu `Qwen3.5-2B-Q4_K_M`, API compatibil OpenAI pe **8091** | | `ollama.service` | embeddings, port 11434 | Era legată la **+40723197939**, în self-chat. **De ce a fost înlocuită:** indexul ei avea 24 de chunk-uri dintr-un singur fișier (`knowledge/roaauto_instructiuni.txt`), deci orice întrebare din afara subiectului roaauto primea un răspuns inventat — retrieval-ul n-avea ce să găsească. ### 3. Maria WhatsApp + RAG — versiunea din git, cea care răspunde acum **LXC 171**, cod în `proxmox/lxc171-claude-agent/maria-whatsapp-bridge/`, stare în `~/.maria-bridge/`. Aceleași servicii, sub `systemctl --user`. Are tot ce s-a construit peste prototip: depozit sincronizat din Google Drive prin rclone (11 documente, 173 de chunk-uri), suport `.xml` preferat peste `.md`, lacăt între reindexări, dashboard de control. Foloseste LLM-ul de pe 104 prin rețea (`LLM_URL=http://10.0.20.161:8091`) — pe 171 nu există niciun model de chat, doar embeddings. **Asociată la +40723197939 pe 2026-08-31**, ca dispozitiv nou al aceluiași cont; sesiunea stă în `~/.maria-bridge/whatsapp-auth/`. Din acel moment e singura Maria care răspunde pe WhatsApp. Detalii: [`maria-whatsapp-bridge/README.md`](../proxmox/lxc171-claude-agent/maria-whatsapp-bridge/README.md). --- ## Cei doi boți de Discord ### Puntea Discord → Claude Code (LXC 171) `claude-discord.service`. Un fir de Discord = o sesiune Claude Code care rulează **pe container, cu drepturile utilizatorului `claude`**: acces la `/workspace`, chei SSH, `pct exec` pe tot clusterul. Comenzi `/new`, `/cd`, `/model`, `/status`, `/stop`, `/cleanup`, `/permisiuni`. Dashboard de control: `claude-discord-dashboard.service`, port 18790, expus prin Tailscale la `https://claude-agent.tailf7372d.ts.net/claude`. Tot de acolo se comandă și Maria. Detalii: [`discord-bridge/README.md`](../proxmox/lxc171-claude-agent/discord-bridge/README.md). ### Echo Core (LXC 110) `echo-core.service` — bot pe Telegram, WhatsApp **și** Discord, cu Claude Opus 4.5 prin API. Alt bot, alt scop, alt container. Dacă un mesaj de pe Discord primește un răspuns care nu seamănă cu Claude Code, verifică dacă nu cumva a răspuns Echo. Detalii: [`proxmox/lxc110-moltbot/README.md`](../proxmox/lxc110-moltbot/README.md). --- ## Porturi | Port | Container | Serviciu | |---|---|---| | 3000 | LXC 104 | Flowise (web, prin ngrok) | | 4040 | LXC 104 | ngrok, interfață locală | | 8091 | LXC 104 | `llama.cpp` / Qwen3.5-2B — **LLM-ul de răspuns al Mariei**, folosit de 171 | | 8099 | LXC 104 | punte WhatsApp Maria — prototip, oprit | | 11434 | LXC 104 | Ollama (embeddings) | | 8098 | LXC 110 | punte WhatsApp Echo | | 18789 | LXC 110 | gateway clawdbot | | 7788 / 7789 | LXC 110 | supertonic-tts / pocket-tts | | 8099 | LXC 171 | punte WhatsApp Maria — **instanța vie** | | 11434 | LXC 171 | Ollama (doar embeddings, fără model de chat) | | 18790 | LXC 171 | dashboard punte Discord + Maria | `8099` și `11434` există pe **ambele** containere, cu conținut diferit. De aici jumătate din confuzie — verifică întotdeauna pe ce container ești. --- ## Cum afli cu cine vorbești ```bash # Care punte WhatsApp e conectata, si pe ce numar ssh root@10.0.20.171 "curl -s http://127.0.0.1:8099/status" # Maria (vie) ssh root@10.0.20.201 "pct exec 104 -- curl -s http://127.0.0.1:8099/status" # prototip (oprit) ssh root@10.0.20.200 "pct exec 110 -- curl -s http://127.0.0.1:8098/status" # Echo # Ce a procesat consumer-ul Mariei din git (daca e gol, nu ea a raspuns) tail -20 ~/.maria-bridge/logs/rag.log # LLM-ul de raspuns curl -s http://10.0.20.161:8091/v1/models ``` **Regula:** WhatsApp-ul lui Echo (LXC 110) și cel al Mariei (LXC 104) sunt legate la **același număr**, `+40723197939`, ca dispozitive diferite ale aceluiași cont. Un mesaj poate ajunge la ambele. Dacă primești două răspunsuri, două punți sunt active simultan. --- ## Capcane - **„Maria" nu e un singur lucru.** Întreabă întâi: web (Flowise), WhatsApp de pe 104, sau WhatsApp de pe 171? - **Prototipul de pe 104 nu e în git** și e oprit din 2026-08-31. Nu-l reporni ca să „repari" Maria: ar răspunde în paralel cu cea din git, pe același număr, cu un index de 24 de chunk-uri. Codul versionat e cel de pe 171. - **Depozitul Mariei din git e oglindă a Google Drive.** `rclone sync` șterge local ce nu mai există în Drive; un document adăugat manual din dashboard dispare la următoarea sincronizare. - **Reindexarea durează ~21 de minute** pentru 173 de chunk-uri (embedding CPU-only, ~7,3 s per chunk pe LXC 171). Nu pare blocată — chiar durează. - **Maria nu are voie la infrastructură.** E chatbot pentru clienții ERP ROA; nimic din `proxmox/`, niciun IP, port sau credențial nu intră în depozitul ei de documente. Puntea Discord, în schimb, are acces la tot. Vezi `claude-agent/CLAUDE.md`.