Files
Claude Agent f46410eb58 feat(maria): ALLOW_SELF_CHAT — Maria raspunde doar in grupul de test, nu si in self-chat
`TEST_MODE_SELF_CHAT_ONLY` insemna „self-chat SI grupurile permise"; nu exista
niciun fel de a spune „doar grupurile". `ALLOW_SELF_CHAT=false` (nou, implicit
`true`) scoate chatul cu sine insusi din filtrul puntii.

De ce: `SUPPORT_JID` e tot numarul propriu, deci escaladarile, reamintirile si
raspunsurile suportului cadeau in acelasi chat cu intrebarile — Maria isi citea
propriul canal de suport ca pe o discutie cu un client.

Pus pe `false` in `~/.maria-bridge/env`, puntea repornita: raspunde acum doar in
`120363409761730101@g.us` („Maria Test"). Se vede in `/status` (`allowSelfChat`)
si in linia de conectare din log.

Trimiterea catre suport nu e afectata — filtrul e doar pe mesajele primite.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q4uzvgm7AyJch5WH8QHRhY
2026-09-01 21:12:25 +00:00

89 lines
4.5 KiB
Plaintext

# Configurarea puntii WhatsApp+RAG a lui Maria.
#
# install.sh copiaza acest fisier in ~/.maria-bridge/env cu drepturi 0600.
# Format KEY=value, fara `export`, fara expandare de variabile.
# --- Puntea WhatsApp (whatsapp/index.js) -----------------------------------
BRIDGE_HOST=127.0.0.1
BRIDGE_PORT=8099
# true = raspunde DOAR in chatul cu tine insuti (self-chat). Pune "false" abia
# dupa ce esti multumit de calitatea raspunsurilor — altfel Maria raspunde la
# oricine iti scrie pe numarul legat.
TEST_MODE_SELF_CHAT_ONLY=true
# false = Maria nu mai raspunde in chatul cu tine insuti, doar in grupurile din
# ALLOWED_GROUP_JIDS. De pus pe false cand SUPPORT_JID e chiar numarul propriu:
# altfel escaladarile si raspunsurile suportului cad in acelasi chat cu
# intrebarile.
ALLOW_SELF_CHAT=true
# Grupuri in care Maria raspunde chiar si cu self-chat-only (JID-uri, separate prin
# virgula). JID-ul unui grup se citeste din punte: curl -s localhost:8099/groups
# ATENTIE: nu pune un grup in care raspunde si Echo (LXC 110) — puntea lui nu
# filtreaza `fromMe` in grupuri, deci cei doi boti isi raspund unul altuia la
# nesfarsit. Vezi docs/chatboti-si-punti.md.
ALLOWED_GROUP_JIDS=
# Imaginile primite (capturi cu erori) peste aceasta marime sunt refuzate, fara
# descarcare. O captura de ecran normala are sub 1 MB.
MAX_MEDIA_MB=8
# --- OCR pentru capturile de ecran ------------------------------------------
# Modelul de raspuns e strict text, deci capturile trec prin tesseract inainte de
# RAG (vezi rag/ocr.py). Cere: apt-get install tesseract-ocr tesseract-ocr-ron
OCR_LANGS=ron+eng
OCR_MAX_CHARS=1500
OCR_TIMEOUT_S=60
# --- Ordonare (rank) si pragul de escaladare ---------------------------------
# Chunk-urile se ordoneaza de doua ori — semantic (embeddings) si lexical (BM25) —
# iar clasamentele se fuzioneaza. Vezi rag/rank.py; valorile de mai jos sunt
# calibrate pe indexul real, nu alese din burta.
# Sub RANK_WEAK_COSINE escaladam direct; peste, raspundem doar daca termenii rari
# din intrebare (coduri de eroare, in general) chiar apar in chunk-urile gasite.
# Nu exista prag „cosinus destul de mare ca sa nu mai verificam" — vezi rag/rank.py.
RANK_WEAK_COSINE=0.58
RANK_RECALL_N=12
# Ce fractiune din termenii distinctivi ai intrebarii trebuie sa apara in
# chunk-urile gasite, ca sa salvam un cosinus de mijloc. Un singur termen gasit
# nu e o dovada — vezi ops/calibrate-rank.py.
RANK_MIN_RARE_RATIO=0.5
# --- Escaladare la suport ----------------------------------------------------
# Unde pleaca intrebarile la care Maria NU are raspuns in documente. Fara asta ar
# raspunde generic, ceea ce e mai rau decat sa nu raspunda deloc.
# JID de WhatsApp: "<numar>@s.whatsapp.net" pentru o persoana,
# "<id>@g.us" pentru un grup. Numarul se scrie international, fara "+".
# Gol = escaladarile se scriu doar in ~/.maria-bridge/escalations/, fara notificare.
SUPPORT_JID=
# Numarul spus clientului cand asteapta de peste 30 de minute fara raspuns.
SUPPORT_PHONE=
# --- Backend LLM + embeddings -----------------------------------------------
# Modelul de chat folosit pentru raspunsuri (format compatibil OpenAI
# /v1/chat/completions). Implicit presupune un tunel/proxy local catre acelasi
# backend folosit de Echo (LXC 110) — vezi docs/maria-whatsapp-rag-prototype.md.
LLM_URL=http://127.0.0.1:8091
# Ollama, pentru embeddings (nomic-embed-text).
OLLAMA_URL=http://127.0.0.1:11434
EMBED_MODEL=nomic-embed-text
TOP_K=3
MAX_TOKENS=250
# 0 = raspunsul e mereu acelasi si sta in context. Nu urca fara motiv.
LLM_TEMPERATURE=0
POLL_INTERVAL_S=2
# --- Depozit de documente + sincronizare Google Drive -----------------------
# Tinta rclone pentru dosarul de documente din Drive (pe Windows apare ca
# D:\GoogleDrive\romfast\document_store). Se aduc doar *.txt, *.md, *.xml.
# Gol = sincronizare dezactivata; documentele se administreaza doar manual din
# dashboard. Vezi README.md, "Sincronizare cu Google Drive": autorizarea se face
# cu `rclone authorize` pe o masina cu browser, tokenul se muta aici — fara cont
# de serviciu. Exemplu, cu dosarul fixat pe ID:
# DRIVE_REMOTE=gdrive,root_folder_id=1C4e75zgH1_7ZK-_oBP5ZZBvUPh3iEo1O:
DRIVE_REMOTE=
# --- control -----------------------------------------------------------------
# Fara dashboard propriu: start/stop/restart, documente, reindexare si
# sincronizare Drive se fac din dashboard-ul puntii Discord (discord-bridge/),
# sectiunea "Maria — WhatsApp + RAG" — un singur panou comun, o singura
# autentificare (DASHBOARD_TOKEN din ~/.claude-discord/env).