13 KiB
TOOLS.md - Echo (Unificat)
Unelte comune
Email (SMTP/IMAP)
- Cont principal: Gmail (mmarius28@gmail.com) - folosit pentru trimitere
- Cont backup: echo@romfast.ro (blocat MailChannels)
- Credențiale: în
.env(GMAIL_USER, GMAIL_PASSWORD) - Trimitere:
python3 tools/email_send.py "dest" "subiect" "corp" - From: Echo mmarius28@gmail.com
Format email rapoarte:
- Font: 16px text, 18px titluri
- Culori: albastru (#2563eb) pentru DONE, gri (#f3f4f6) pentru PROGRAMAT
- Puține emoji-uri, link-uri vizibile
- Titlu + acțiune combinate (ex: "A0 - Git commit si push")
- Subject confirmare: "Re: [subject original]"
- Procesare inbox:
python3 tools/email_process.py # listează necitite python3 tools/email_process.py --all # listează toate python3 tools/email_process.py --save # salvează ca note în memory/kb/emails/
Flux email → note → insights:
- Marius face forward la
echo@romfast.ro - La heartbeat sau manual:
python3 tools/email_process.py --save - Emailul devine notă în
memory/kb/emails/YYYY-MM-DD_subiect.md - Completez TL;DR și extrag insights în
memory/kb/insights/ python3 tools/update_notes_index.pyactualizează indexul
📧 Email Whitelist
Răspuns automat permis doar pentru:
- mmarius28@gmail.com (Marius - personal)
- marius.mutu@romfast.ro (Marius - work)
Pentru orice altă adresă: Citesc și raportez, aștept aprobare.
Dashboard
- URL: https://moltbot.tailf7372d.ts.net/echo/
- Task add:
python3 dashboard/update_task.py add in-progress "titlu" - Task done:
python3 dashboard/update_task.py done <task-id> - Notes: https://moltbot.tailf7372d.ts.net/echo/notes.html
- Files: https://moltbot.tailf7372d.ts.net/echo/files.html
- API:
dashboard/api.py
Reguli dashboard:
- Tab Activity afișează task-uri din tasks.json, sortate descrescător după timestamp
- Când creez/completez task-uri, să am timestamp complet (ISO format cu oră)
KB (Knowledge Base)
- Folder: memory/kb/ (youtube/, coaching/, insights/, projects/)
- Update index:
python3 tools/update_notes_index.py - Pagina web: https://moltbot.tailf7372d.ts.net/echo/notes.html
- Tags domeniu:
@work,@health,@growth,@sprijin,@scout - Tags tip:
@project,@fisa,@exercitiu,@meditatie,@reflectie
IMPORTANT: Când salvez orice notă (rețete, youtube, proiecte, etc.), trebuie să:
- Salvez în subdirectorul potrivit din
memory/kb/ - Rulez
python3 tools/update_notes_index.pypentru a actualiza indexul - Dau link-ul către pagina notes.html
🔍 Memory Search (Semantic Search)
Ce e: Căutare semantică în fișierele .md din memory/.
Cum funcționează:
- Clawdbot indexează automat fișierele (watcher + debounce 1.5s)
- Embeddings generate local cu Ollama (all-minilm, 384 dim)
- Index stocat în
~/.clawdbot/memory/echo.sqlite
Ce se indexează:
- ✅
memory/*.md- note zilnice, approved-tasks, etc. - ✅
memory/kb/**/*.md- toate notele din KB (youtube, coaching, insights, projects, etc.)
Când folosesc memory_search:
- Întrebări despre trecut: "ce am decis despre coaching"
- Context recent: "ce s-a întâmplat ieri"
Comenzi:
memory_search query="text" maxResults=5
memory_get path="memory/file.md" from=1 lines=50
Indexare automată: La fiecare modificare fișier în memory/, Clawdbot:
- Detectează schimbarea (watcher)
- Așteaptă 1.5s (debounce)
- Re-indexează DOAR fișierul modificat (incremental)
- Celelalte fișiere rămân neatinse
Git
- Repo: ~/clawd → gitea.romfast.ro/romfast/clawd
- Commit:
python3 tools/git_commit.py --push
ANAF Monitor
- Script:
python3 tools/anaf-monitor/monitor_v2.py - Monitorizează: D100, D101, D200, D390, D406, situații financiare, E-Factura
Pauze Respirație (Pattern Interrupt)
- Bancă tehnici:
memory/kb/tehnici-pauza.md - Script:
python3 tools/pauza_random.py- alege random, afișează cu context - Job:
respiratie-orar(09:00-19:00 București, orar) → #echo-self - Format output:
**Nume Tehnică** Pași de urmat 📊 Rezultat (ce obții) 📚 Sursă (autor/studiu)
Flux actualizare tehnici:
- Sursă: Insights din video-uri/articole procesate, tehnici din NLP/coaching
- Cine: Echo AUTOMAT prin job
insights-extract(08:00 și 19:00 București) - Ce caută: respirație, relaxare, mindfulness, pattern interrupt, mișcare scurtă (1-5 min)
- Cum: Verifică dacă nu există deja → adaugă în secțiunea potrivită (BIROU 09-17 / ACASĂ 18+)
- Format: Nume ### → bullet pași →
- **Rezultat:**→- **Sursă:** [autor](link)
Surse curente: Tony Robbins, Wim Hof, Jon Kabat-Zinn (MBSR), Dr. Andrew Weil, Amy Cuddy, Cal Newport
Link-uri sursă:
- Notă din KB →
https://moltbot.tailf7372d.ts.net/echo/files.html#memory/kb/... - Resursă externă → link direct (TED, Healthline, etc.)
Cron Jobs
| Oră (UTC) | Oră (București) | Job | Canal | Ce face |
|---|---|---|---|---|
| 00:00 | 02:00 | content-discovery | - | Caută video+articole pe teme recente → memory/kb/ |
| 01:00 | 03:00 | night-execute-late | #echo-work | Continuă execuția task-uri (run 2) |
| 03:00 | 05:00 | archive-tasks | #echo-work | Arhivează task-uri vechi |
| 06:00,17:00 | 08:00,19:00 | insights-extract | - | Extrage insights din memory/kb/ + actualizează tehnici-pauza.md |
| 06:30 | 08:30 | morning-report | Raport dimineață - vezi FLUX-JOBURI.md | |
| 07:00 | 09:00 | morning-coaching | #echo-self + 📧 | Gând + provocare → memory/kb/coaching/ |
| 07-17 | 09-19 | respiratie-orar | #echo-self | Pauze orare: tehnică + rezultat + sursă (din tehnici-pauza.md) |
| 15:00 mar,joi | 17:00 | project-checkin | #echo-work | Check-in Vending Master |
| 15:00 3/feb | 17:00 | grup-sprijin-pregatire | #echo-sprijin | Pregătire fișă grup joi |
| 15:00 5/feb | 17:00 | grup-sprijin-5feb | #echo-sprijin | Reminder grup sprijin |
| 18:00 | 20:00 | evening-report | Raport seară - vezi FLUX-JOBURI.md | |
| 19:00 | 21:00 | evening-coaching | #echo-self + 📧 | Reflecție seară → memory/kb/coaching/ |
| 20:00 | 22:00 | seara-merit-reminder | #echo-self | Reminder lista "10 lucruri pentru care merit respect" |
| 19:00 dum | 21:00 | weekly-planning | #echo-work | Planning săptămânal |
| 21:00 | 23:00 | night-execute | #echo-work | Execută task-uri aprobate (run 1) |
Marcaje insights:
[ ]= disponibil (rapoarte pot propune)[x]= executat/implementat[—]= skip/refuzat
Răspuns la rapoarte email: Marius răspunde cu:
1 pentru X,Y= execută ACUM propunerile X și Y2 pentru X,Y= pune în tasks pentru noaptea asta3 pentru X,Y= NU (skip, marchez [—])- Text liber = procesez și răspund
La heartbeat verific inbox și procesez răspunsurile.
Răspuns la rapoarte email: Marius răspunde cu:
1 pentru X,Y= execută ACUM propunerile X și Y2 pentru X,Y= pune în tasks pentru noaptea asta3 pentru X,Y= NU (skip, marchez [—])- Text liber = procesez și răspund
La heartbeat verific inbox și procesez răspunsurile.
Comenzi:
cron action=list # vezi toate joburile
cron action=run jobId=X # rulează manual
cron action=update jobId=X # modifică job
Regulă: Când modific joburi, actualizez și acest tabel!
Infrastructură
Servicii LLM/AI locale
| LXC | Serviciu | IP:Port | Utilizare |
|---|---|---|---|
| flowise (104) | Ollama | 10.0.20.161:11434 | Embeddings (all-minilm), LLM local |
| flowise (104) | Flowise | 10.0.20.161:3000 | Flow builder |
| dokploy (103) | Dokploy | 10.0.20.? | Deployment platform |
Modele Ollama disponibile:
all-minilm- embeddings rapid (45MB) ← folosit pentru memory_searchnomic-embed-text- embeddings calitate (274MB)llama3.2:3b-instruct-q8_0- LLM conversație (3.4GB)smollm:135m- LLM mic rapid (91MB)
Docker LXC (portainer)
- Host: 10.0.20.170 (LXC 100 pe pvemini)
- User: echo
- SSH:
ssh echo@10.0.20.170 - Portainer: https://10.0.20.170:9443
- Docker: v28.3.3 + Compose v2.39.1
- Resurse: 1GB RAM, 20GB disk
- Proiecte:
/opt/docker/
Containere:
| Container | Port | Status | Descriere |
|---|---|---|---|
| portainer | 9443 | ✅ | Management Docker |
| nginx | 443, 8080 | ✅ | Reverse proxy |
| roa-efactura | 5003 | ⚠️ | E-Factura ANAF |
| pdf-qr-app | 5002 | ✅ | QR facturi |
| flask_app | 5001 | ✅ | ROA Flask |
| bt-web-automation | 5000, 8081 | ✅ | BT automation |
| pulse | 7655 | ✅ | Monitoring Proxmox |
| wol-manager | - | ✅ | Wake-on-LAN |
| rustdesk (hbbs+hbbr) | 21115-21119 | ✅ | Remote desktop server |
Proiecte docker-compose:
/opt/docker/docker-compose.yaml- stack principal (nginx, flask, efactura, qr)/opt/docker/wol/docker-compose.yml- Wake-on-LAN/opt/docker/qrinvoice/docker-compose.yml- QR Invoice app
Proxmox Cluster (3 noduri)
User: echo | Acces: doar din 10.0.20.173 (moltbot) | Sudo: qm, pct, pvesh
pveelite (10.0.20.202)
- Resurse: 16GB RAM, 557GB disk
- SSH:
ssh echo@10.0.20.202 - Scripturi:
/opt/scripts/oracle-backup-monitor-proxmox.sh- zilnic 21:00, verifică backup Oracleweekly-dr-test-proxmox.sh- sâmbătă 06:00, test restore Oracle DR (VM 109)
| VMID | Tip | Nume | Status |
|---|---|---|---|
| 109 | VM | oracle-dr-windows | stopped |
| 101 | LXC | minecraft | stopped |
| 110 | LXC | moltbot | running |
| 301 | LXC | docker-portainer-template | stopped |
pvemini (10.0.20.201)
- Resurse: 64GB RAM, 1.4TB disk
- SSH:
ssh echo@10.0.20.201 - Scripturi monitorizare:
/opt/scripts/ha-monitor.sh- status cluster HAmonitor-ssl-certificates.sh- verifică SSL-uri zilnicups-shutdown-cluster.sh- shutdown orchestrat la UPS criticups-monthly-test.sh- test baterie UPS lunar (1 ale lunii)ups-maintenance-shutdown.sh- shutdown pentru mentenanță UPSvm107-monitor.sh- monitorizează VM 107
- Emailuri automate: backup, cluster status, UPS, restore Oracle (sâmbătă)
| Cron | Oră | Script/Job |
|---|---|---|
| Zilnic 00:00 | ha-monitor.sh | Status cluster HA |
| 1 ale lunii 00:00 | ups-monthly-test.sh | Test baterie UPS |
| Zilnic 02:00 | vzdump backup | VM 100,108,104,106,201,171 → storage "backup" |
| Zilnic 22:00 | vzdump backup | LXC 101,110 (moltbot) → backup-pvemini-nfs |
| VMID | Tip | Nume | Status |
|---|---|---|---|
| 201 | VM | roacentral | running |
| 300 | VM | Win11-Template | stopped |
| 302 | VM | oracle-test-302 | stopped |
| 100 | LXC | portainer | running |
| 103 | LXC | dokploy | running |
| 104 | LXC | flowise | running |
| 105 | LXC | test | stopped |
| 106 | LXC | gitea | running |
| 108 | LXC | central-oracle | running |
| 171 | LXC | claude-agent | running |
LXC 171 - claude-agent (Development Environment)
- IP: 10.0.20.171
- Resurse: 4 cores, 16GB RAM, 32GB disk
- OS: Ubuntu (unprivileged, nesting enabled)
- Tailscale: Da (acces remote)
Servicii:
code-server@claude— VS Code în browserttyd— Web Terminalssh— acces direct
Claude Code:
- Instalat și configurat
- Git configurat pentru
gitea.romfast.ro - Mod interactiv:
claude(în terminal) - Mod programatic:
claude -p "task description"— pentru sarcini automatizate
Utilizare:
# Acces SSH
ssh user@10.0.20.171
# Sau prin Proxmox
ssh echo@10.0.20.201 "sudo pct exec 171 -- bash"
# Claude Code - interactiv
claude
# Claude Code - task direct
claude -p "descrie sarcina aici"
pve1 (10.0.20.200)
- Resurse: 32GB RAM, 1.3TB disk
- SSH:
ssh echo@10.0.20.200 - Status: Gol (fără VM/LXC)
Unelte per domeniu
Self (wellbeing, coaching)
- Ritual zilnic: 08:00 și 23:00 - citate cu format specific
- Tehnici CNV, NLP, Sleight of Mouth
- Tracking sănătate (de creat)
- Resurse NMG (de adăugat)
- Post negru tracker (de creat)
Sprijin (grup joi)
- Notes: filtru
@sprijinpe https://moltbot.tailf7372d.ts.net/echo/notes.html - Proiect:
memory/kb/projects/grup-sprijin/ - Biblioteca activități:
memory/kb/projects/grup-sprijin/biblioteca.json - Fișe:
memory/kb/projects/grup-sprijin/fise/ - Template:
memory/kb/projects/grup-sprijin/template-fisa.md
Scout (cercetași)
- Template activități scout
- Locații Constanța (de completat)
- Contacte echipă (de completat)