Files
claude-agent/CLAUDE.md
Claude Agent 5f3e9b5c47 docs: TODO.md ca registru viu + flux plan-pe-Opus / executie-pe-Sonnet
Firele Discord sunt independente: un fir nou nu vede conversatia din alt fir.
Fara un loc scris, progresul unei functionalitati se pierde intre runde. TODO.md
e acel loc, iar CLAUDE.md il face parte din procedura, nu optional.

- TODO.md: intrari grupate pe stare (in lucru / blocate / planificate / gata),
  fiecare cu unde, ce face, ce s-a verificat si data absoluta, plus un Jurnal
  append-only. Populat cu starea reala de azi.
- docs/flux-dezvoltare.md: pentru orice cerere de dezvoltare -- citeste TODO.md,
  planifica delegand `Agent(subagent_type: "Plan", model: "opus")`, posteaza
  planul in fir, executa tu (firul e pe Sonnet), actualizeaza TODO.md.
  Delegarea catre subagent obtine "plan pe Opus, executie pe Sonnet" fara
  `/model` si fara repornirea sesiunii, ceea ce un fir nu poate face oricum.
  Excepii: intrebarile si diagnosticele fara modificare. Marimea sarcinii NU e
  criteriu -- prima versiune a documentului lasa asta ambiguu si agentul a sarit
  peste plan la un script de 20 de linii; acum e spus explicit in ambele locuri.
- CLAUDE.md: sectiunea "Cum lucrezi" in cap, cei 4 pasi, plus TODO.md si
  documentul de flux in tabelul de documentatie.
- CLAUDE.md: nota despre atasamente actualizata -- imaginile si fisierele text
  ajung acum la agent (implementat azi in discord-bridge).
- README.md: tabel de fisiere; `!cd`/`!status` -> `/cd`/`/status`.

Verificat pe o sesiune reala pe Sonnet in acest director, cu aceeasi cerere
inainte si dupa intarire: prima data a sarit peste plan, a doua oara a chemat
subagentul Plan pe Opus si a actualizat TODO.md in formatul cerut.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q4uzvgm7AyJch5WH8QHRhY
2026-08-31 17:56:51 +00:00

115 lines
6.5 KiB
Markdown

# CLAUDE.md — claude-agent (spațiul punții Discord)
Vezi `README.md` pentru context general.
## Cum lucrezi (OBLIGATORIU pentru orice cerere de dezvoltare)
1. **Citește [`TODO.md`](TODO.md)** — registrul viu al funcționalităților. Poate lucrul e
deja început, blocat sau abandonat deliberat.
2. **Planifică pe Opus**, delegând unui subagent: `Agent(subagent_type: "Plan",
model: "opus", ...)`. Firul rulează pe Sonnet; nu schimba modelul firului.
**Pasul ăsta nu se sare pentru că sarcina pare mică.** Un singur fișier nou, un
script de 20 de linii, o schimbare „evidentă" — tot trec prin subagentul Opus.
Mărimea nu e criteriu; singurul criteriu e dacă schimbi ceva (vezi lista de
excepții din documentul de flux).
3. **Postează planul în fir**, apoi **execută tu, pe Sonnet**.
4. **Actualizează [`TODO.md`](TODO.md)** la final — mută intrarea, scrie data absolută,
adaugă o linie în `Jurnal`. Dacă rămâne ceva neterminat, scrie explicit următorul pas:
firul următor nu va ști nimic din conversația asta.
Pașii, excepțiile (întrebări și diagnostice nu au nevoie de plan) și motivele sunt în
**[docs/flux-dezvoltare.md](docs/flux-dezvoltare.md)** — citește-l înainte de prima
cerere de dezvoltare din fir.
## Unde ești
Rulezi pe **LXC 171 (`claude-agent`, 10.0.20.171, nod pvemini)**, în ecosistemul Romfast:
un cluster Proxmox de 3 noduri, Oracle XE 21c, ERP-ul **ROA**, plus punțile de chat
(Discord, WhatsApp). Directorul acesta e doar spațiul de lucru al punții Discord —
**nu** e tot ce știi.
**Documentația reală a infrastructurii e în `/workspace/romfastsql/`**, un repo separat
(`git@gitea.romfast.ro:romfast/ROMFASTSQL.git`). Citește de acolo înainte să cauți cu
`find`/`grep` prin tot discul:
| Ai nevoie de… | Citește |
|---|---|
| Regulile proiectului + indexul complet de documentație | `/workspace/romfastsql/CLAUDE.md` |
| Infrastructură Proxmox (noduri, LXC, VM, rețea, incidente) | `/workspace/romfastsql/proxmox/README.md` |
| Codul punții Discord (acest bot) | `/workspace/romfastsql/proxmox/lxc171-claude-agent/discord-bridge/` |
| Codul Mariei (WhatsApp + RAG) | `/workspace/romfastsql/proxmox/lxc171-claude-agent/maria-whatsapp-bridge/` |
| Oracle (XE 21c/18c, migrări, cazuri clienți) | `/workspace/romfastsql/proxmox/lxc108-oracle/` |
| Reguli SQL de migrare (obligatoriu înainte de a scrie SQL) | `/workspace/romfastsql/system_instructions/system_prompt.md` |
Rezumat rapid, dacă nu vrei să deschizi nimic: [docs/infrastructure.md](docs/infrastructure.md).
## Memorie
Memoriile acestui director sunt **comune cu cele ale proiectului `romfastsql`**
(`~/.claude/projects/-workspace-claude-agent/memory` e un symlink către
`~/.claude/projects/-workspace-romfastsql/memory`). Deci ce s-a învățat lucrând pe
infrastructură e disponibil și în firele de pe Discord, și invers — scrie memorii
acolo, nu în fișiere ad-hoc. Copia veche, dinainte de unificare:
`~/.claude/projects/-workspace-claude-agent/memory.bak-2026-08-31`.
Sesiunile Discord sunt totuși **per fir**: un fir nou pornește o sesiune Claude nouă,
care are memoriile de mai sus dar nu conversația din alt fir. Ce trebuie să
supraviețuiască între fire se scrie în memorie sau în documentație, nu se presupune.
## Canal principal
Utilizatorul comunică cu acest agent în principal prin **Discord**, prin puntea
Discord → Claude Code (vezi și `docs/echo-roa2web.md` pentru diferența față de
Echo/MoltBot). Botul care răspunde pe Discord este acest agent (**claude-agent**,
LXC 171), nu Echo. Atașamentele trimise pe Discord ajung la tine din 2026-08-31:
imaginile (png/jpeg/gif/webp, max 4) le vezi direct, fișierele text intră în prompt,
restul sunt doar numite. Mesajele vocale, nu — vezi `TODO.md`.
## Documentație locală
| Subiect | Fișier |
|---------|--------|
| **Progresul funcționalităților (de citit și actualizat la fiecare cerere)** | [TODO.md](TODO.md) |
| **Fluxul de lucru: plan pe Opus → execuție pe Sonnet → TODO.md** | [docs/flux-dezvoltare.md](docs/flux-dezvoltare.md) |
| Infrastructură Proxmox — rezumat (noduri, LXC, VM, proiecte) | [docs/infrastructure.md](docs/infrastructure.md) |
| Echo (LXC 110 moltbot) — acces și comenzi pentru roa2web | [docs/echo-roa2web.md](docs/echo-roa2web.md) |
| Punte Discord → Claude Code — context | [docs/discord-bridge-context.md](docs/discord-bridge-context.md) |
| Maria — punte WhatsApp + RAG | [docs/maria-whatsapp-rag-prototype.md](docs/maria-whatsapp-rag-prototype.md) |
## Maria (RAG) — GRANIȚĂ OBLIGATORIE
**Maria e chatbot de suport tehnic pentru clienții ERP ROA. Nu are voie să vadă nimic
din infrastructura Romfast.**
Maria răspunde exclusiv din depozitul ei de documente
(`~/.maria-bridge/documents/`, sincronizat din `D:\GoogleDrive\romfast\document_store`);
prin construcție nu are shell, nici acces la fișiere în afara acelui depozit. Granița se
poate rupe doar dacă **tu** pui acolo ce nu trebuie. Deci:
- **NU** copia niciodată în `~/.maria-bridge/documents/` (sau în dosarul Drive
`document_store`) fișiere din `/workspace/romfastsql/proxmox/`, `docs/` de aici,
`docs/infrastructure.md`, README-uri de infrastructură, runbook-uri, proceduri DR
sau de failover.
- **NU** pune acolo IP-uri interne, nume de noduri/containere, porturi, chei SSH,
parole, token-uri, string-uri de conexiune Oracle, adrese de clienți sau orice
altceva operațional.
- În depozit intră **doar material orientat spre client final**: cum se folosește ROA,
proceduri din aplicație, întrebări frecvente, mesaje de eroare din interfață.
- Când utilizatorul cere „adaugă documentul X la Maria", verifică întâi conținutul
cu acest filtru. Dacă e material de infrastructură, refuză și spune de ce.
- Nu extinde `DOCS_DIR`, nu adăuga surse noi de indexare și nu adăuga unelte de
fișiere/shell consumerului Mariei (`rag/consumer.py`) fără cerere explicită.
Pentru contrast: **tu** (punte Discord) ai voie la toată infrastructura, inclusiv SSH
și `pct exec` — vezi memoriile. Maria, nu.
## Convenții de lucru
- Pentru sarcini care se pot repeta (ex: extragere transcript video, procesare de
fișiere), scrie un script reutilizabil (bash/python) în `tools/` în loc de comenzi
ad-hoc de unică folosință.
- Acest director e **repo propriu** (`git@gitea.romfast.ro:romfast/claude-agent.git`).
Nu comite aici modificări la codul punții sau la documentația de infrastructură —
alea aparțin repo-ului `romfastsql`. `/workspace` e la rândul lui alt repo
(`romfast/workspace`) și ignoră acest director.