Lucrul cu Agenți AI de Programare — Ghid Practic (2026)
Configurarea agenților, straturile de aplicare și standardele de logging care fac codul generat de LLM depanabil — bazat pe ce funcționează cu adevărat la începutul lui 2026.
01
Ce sunt agenții AI de programare?
Un agent AI de programare este un instrument bazat pe LLM care poate citi baza de cod, scrie cod, rula comenzi shell și lua decizii în mai mulți pași pentru a îndeplini o sarcină. Spre deosebire de autocompletare (care prezice următoarea linie), agenții operează autonom pe mai multe fișiere și execută secvențe de acțiuni.
Distincția esențială: autocompletarea reacționează la cursorul tău; agenții urmăresc obiective.
| Instrument | Tip | Capabilități principale |
|---|---|---|
| Claude Code | CLI, bazat pe terminal | Acces la sistemul de fișiere, comenzi shell, hooks, sub-agenți, skills |
| Cursor | IDE, fork VS Code cu mod agent | Citește baza de cod, editează fișiere, rulează terminalul |
| GitHub Copilot | Extensie IDE | Autocompletare + mod agent pentru editări multi-fișier și creare PR-uri |
| OpenAI Codex | Cloud, sandbox | Operează pe branch-uri în mod asincron |
| Windsurf | IDE, agentul Cascade indexează întreaga bază de cod | Focus pe enterprise |
| Zed + Aider | Editor/CLI | Agenți lightweight cu suport AGENTS.md |
OBSERVAȚIE CHEIE PENTRU ÎNCEPĂTORI
Acești agenți nu rețin starea între sesiuni. Fiecare conversație nouă pornește de la zero. Agentul nu își amintește discuția de ieri, preferințele tale sau deciziile anterioare. De aceea există fișierele de configurare — injectează context persistent care supraviețuiește între sesiuni.
02
De ce au nevoie agenții de reguli (și de ce regulile nu sunt suficiente)
Fără reguli explicite, un agent va ghici stack-ul tehnic (adesea greșit), va alege propriul stil de cod, va genera logging minimal, va explora baza de cod de la zero de fiecare dată și va lua decizii arhitecturale care contrazic pattern-urile stabilite.
Regulile pentru agenți rezolvă această problemă prin injectarea contextului proiectului tău la începutul fiecărei sesiuni. Gândește-te la ele ca la documentația de onboarding pentru un AI.
Dar iată partea pe care majoritatea ghidurilor o ratează: chiar și cu reguli, agentul poate totuși să ignore standardul tău de logging. Regulile din fișierele de configurare sunt consultative — LLM-ul le citește, dar le poate ignora sub presiune de context. Pentru standarde critice, ai nevoie de mecanisme de aplicare dincolo de fișierele de configurare. Exact asta acoperă Secțiunea 8.
MODUL REAL DE EȘEC
Un agent generează un script Python care procesează cereri de credit. Fără reguli, produce cod cu print("done") la final. Șase luni mai târziu, când ceva eșuează la ora 2 noaptea, persoana care depanează nu are nicio idee ce a făcut codul, ce cerere a eșuat sau de ce.
03
Peisajul configurărilor
Fiecare instrument și-a inventat propriul format de fișier de configurare. Vestea bună: această fragmentare se rezolvă rapid. De la sfârșitul lui 2025, majoritatea instrumentelor majore citesc AGENTS.md nativ sau prin symlink-uri.
| Instrument | Fișier de configurare | Suport AGENTS.md |
|---|---|---|
| Claude Code | CLAUDE.md | Citește dacă este prezent (symlink recomandat) |
| Cursor | .cursor/rules/*.mdc | Nativ din sfârșitul lui 2025 |
| GitHub Copilot | .github/copilot-instructions.md | Nativ |
| OpenAI Codex | AGENTS.md | Nativ (inițiatorul standardului) |
| Windsurf | .windsurfrules | Symlink |
| Zed/Aider/OpenCode | Diverse | Nativ |
CONCLUZIE PRACTICĂ
Folosește AGENTS.md ca sursă unică de adevăr și creează symlink-uri către fișierele specifice fiecărui instrument. Dar reține: activarea automată bazată pe glob a Cursor în .cursor/rules/ și hook-urile și skill-urile din Claude Code oferă capabilități pe care AGENTS.md singur nu le poate replica. S-ar putea să ai nevoie în continuare de fișiere specifice instrumentelor pentru funcționalități avansate.
04
AGENTS.md — Standardul emergent
AGENTS.md este un standard deschis administrat de Agentic AI Foundation sub Linux Foundation. A fost lansat de OpenAI în august 2025 și a fost adoptat de peste 60.000 de proiecte open-source. AAIF a fost co-fondat în decembrie 2025 de OpenAI, Anthropic, Block, AWS, Google, Microsoft, Bloomberg și Cloudflare.
Cum funcționează: plasează un AGENTS.md în rădăcina proiectului — Markdown simplu, fără schemă specială. Agenții citesc cel mai apropiat AGENTS.md din arborele de directoare (pentru suport monorepo, imbrică-le). Prompt-urile utilizatorului au întotdeauna prioritate față de conținutul fișierului.
05
Ce conține un fișier de configurare
Nu toate regulile sunt la fel. Cercetarea și experiența practicienilor arată constant că instrucțiunile concrete și verificabile au performanțe mai bune decât recomandările abstracte. Ordinea de mai jos reflectă impactul măsurat.
AVERTISMENT PRIVIND BUGETUL DE CONTEXT
Cercetarea de la HumanLayer arată că system prompt-ul lui Claude Code conține singur ~50 de instrucțiuni individuale. Modelele de raționament de frontieră pot urma aproximativ 150–200 de instrucțiuni înainte ca degradarea să devină semnificativă. Pe măsură ce numărul de instrucțiuni crește, conformitatea se degradează uniform — modelul nu uită doar ultimele elemente, ci începe să ignore totul mai mult. Menține fișierul de configurare sub 150 de linii.
Nivel 1 (Impact ridicat — Include întotdeauna)
- Prezentare generală a proiectului — stack tehnic, versiuni, scop
- Comenzi — build, test, lint, deploy (exact, copy-paste)
- Stil de cod și convenții — formatare, naming, pattern-uri
- Standarde de logging — niveluri, format, ce se loghează
Nivel 2 (Impact mediu)
- Indicatoare de arhitectură — structura folderelor, responsabilități module
- Reguli de tipul «Fă» și «Nu face» — cele mai frecvente greșeli ale agentului
- Cerințe de testare — framework, acoperire minimă, convenții
Nivel 3 (Randament descrescător)
- Ghid PR/Commit — format, convenții de mesaje
- Note de securitate — informații sensibile, practici de evitat
- Instrucțiuni de persoană — ton, nivel de detaliu
06
Piramida de aplicare
Acesta este conceptul pe care majoritatea ghidurilor existente îl ratează complet. Nu toate regulile ar trebui aplicate în același mod. Gândește-te la aplicare ca la o piramidă cu trei straturi:
IMPLICAȚIA PRACTICĂ
Dacă o regulă trebuie respectată de fiecare dată (cum ar fi rularea prettier după editări, sau interzicerea scrierii în .env), pune-o într-un hook. Dacă o regulă ar trebui respectată, dar o deviere ocazională este acceptabilă (cum ar fi pattern-urile de logging), pune-o în fișierul de configurare. Dacă se aplică doar pentru task-ul curent, pune-o în prompt.
Stratul Enforce — Hooks și porți CI
Deterministice. Comenzi shell care se execută la puncte specifice din ciclul de viață. Agentul nu le poate ocoli. Exit code 2 = blocat, fără negociere.
- Folosește pentru: formatare, linting, execuție teste, scanare de securitate, blocare scrieri în fișiere sensibile
Stratul Advise — Fișiere de configurare (AGENTS.md / CLAUDE.md)
Consultative. Agentul le citește și le urmează de cele mai multe ori, dar sub presiune de context sau semnale conflictuale, poate devia.
- Folosește pentru: stil de cod, ghid de arhitectură, pattern-uri de logging, convenții de denumire
Stratul Suggest — Instrucțiuni în prompt
Efemere. Instrucțiuni contextuale în prompt-ul tău. Prioritate maximă pentru task-ul curent, dar dispar la următoarea sesiune.
- Folosește pentru: cerințe punctuale, constrângeri specifice task-ului
07
Standarde de logging — Regula cu cel mai mare ROI
Logging-ul este cel mai impactant standard pe care îl poți aplica prin regulile agentului, din mai multe motive care se acumulează:
- LLM-urile loghează natural insuficient. Optimizează pentru «funcționează», nu pentru «este observabil». Fără reguli, obții print("processing...") și nimic altceva.
- Majoritatea codului este acum generat de LLM. Persoana care depanează la ora 2 noaptea probabil nu a scris codul. Log-urile sunt singura lor fereastră.
- Se aplică universal, indiferent de limbaj, framework sau tip de proiect.
- Este verificabil. Spre deosebire de «scrie cod curat», pattern-urile de logging sunt concrete și pot fi căutate cu grep.
Pattern-ul de logging în cinci părți
Fiecare operație semnificativă ar trebui să producă un traseu structurat de log-uri care urmează aceste cinci componente:
# 1. HEADER DE RULARE — Ce pornește, cu ce parametri
logger.info("=== Început procesare cereri ===")
logger.info(f" Mediu: {env}")
logger.info(f" Fișier intrare: {input_file}")
logger.info(f" Total înregistrări: {total}")
# 2. PROGRES LOT — Vizibilitate la nivel de lot
for i, batch in enumerate(batches):
logger.info(f" Lot {i+1}/{len(batches)}: procesare {len(batch)} elemente...")
# 3. DELIMITATOARE ELEMENT — Fiecare element semnificativ se loghează
for item in batch:
logger.info(f" [{item.id}] Procesare: {item.name}")
# ... logică
logger.info(f" [{item.id}] Finalizat: status={result.status}")
# 4. IEȘIRE CONSOLĂ — Rezumat vizibil pentru om
print(f"\n✓ Procesate {success}/{total} cereri ({elapsed:.1f}s)")
# 5. REZUMAT RULARE — Totaluri finale structurate
logger.info("=== Rezumat rulare ===")
logger.info(f" Reușite: {success}")
logger.info(f" Eșuate: {failed}")
logger.info(f" Durată: {elapsed:.1f}s")Calitatea mesajelor de log
Mesajele de log opace sunt la fel de inutile ca lipsa totală a log-urilor. Compară:
| Rău (opac) | Bun (auto-explicativ) |
|---|---|
| logger.error("Failed") | logger.error(f"Eșec procesare cerere {id}: {e}", exc_info=True) |
| logger.info("Done") | logger.info(f"Finalizat: {count} înregistrări în {elapsed:.1f}s") |
| logger.info("Sending...") | logger.info(f"Trimitere email către {recipient} (șablon={template})") |
Când să folosești logging JSON structurat în schimb
Logging-ul structurat JSON este cel mai potrivit atunci când log-urile sunt consumate de mașini (agregatori, alerte, dashboards). Pentru script-uri și tool-uri CLI, log-urile text lizibile de om sunt de obicei mai practice. Folosește logging JSON structurat când: operezi microservicii cu agregare centralizată de log-uri, ai nevoie de câmpuri de căutare consistente în mai multe servicii, sau cerințele de conformitate impun formate de log auditabile.
Comenzi utile pentru analiza log-urilor
# Găsește toate eșecurile dintr-o rulare
grep "EȘEC\|ERROR\|Eșuate" app.log
# Numără elementele procesate
grep -c "Procesare:" app.log
# Extrage rezumatele de rulare
grep -A 5 "Rezumat rulare" app.log
# Urmărește progresul în timp real
tail -f app.log | grep "Lot"08
Hooks: Când regulile trebuie să fie garanții
Această secțiune abordează cea mai mare lacună din majoritatea ghidurilor despre AI coding. Regulile din fișierele de configurare sunt consultative — LLM-ul le citește, le înțelege și totuși le poate ignora. Așa cum a documentat un practician: «Poți scrie NU EDITA NICIODATĂ fișierele .env în CLAUDE.md. Claude va citi asta. Claude va înțelege. Și Claude ar putea totuși să editeze fișierul .env.»
Hook-urile sunt comenzi shell care se execută la puncte specifice din ciclul de viață al lui Claude Code. Sunt deterministice — se execută de fiecare dată când se declanșează evenimentul corespunzător, indiferent de ce crede modelul că ar trebui să facă.
Exit code 2 = acțiune blocată. Agentul nu poate negocia trecerea dincolo de acest punct.
| Eveniment Hook | Când se declanșează | Exemple de utilizare |
|---|---|---|
| PostToolUse | După editarea/scrierea unui fișier | Auto-formatare cu prettier/gofmt, rulare linter |
| PreToolUse | Înainte de execuția unui instrument | Blocare scrieri în .env, prevenire rm -rf riscante |
| Stop | Când agentul termină | Rulare suită de teste, verificare tipuri, scanare securitate |
| SessionStart | La începutul sesiunii | Injectare context dinamic |
| PermissionRequest | Agentul cere permisiuni | Auto-aprobare operații sigure, blocare operații distructive |
STRATEGIA COMBINATĂ
Fișierele de configurare învață agentul cum arată codul bun. Hook-urile garantează că regulile critice sunt aplicate. Linter-ele și CI-ul prind tot restul. Folosește toate cele trei straturi — nu te baza pe niciunul singur.
Exemplu: Auto-formatare după fiecare editare
// .claude/settings.json
{
"hooks": {
"PostToolUse": [
{
"matcher": "write|edit",
"command": "npx prettier --write $CLAUDE_FILE_PATH"
}
]
}
}Exemplu: Blocare scrieri în fișiere sensibile
// .claude/settings.json
{
"hooks": {
"PreToolUse": [
{
"matcher": "write|edit",
"command": "echo $CLAUDE_FILE_PATH | grep -qE '\\.(env|pem|key)$' && exit 2 || exit 0"
}
]
}
}09
Evaluare onestă: Ce funcționează, ce e hype
REGULA 80/20
Cea mai mare parte a valorii provine dintr-un set mic de reguli concrete: pattern-uri de logging, comenzi exacte de build/test, 5–10 reguli de tipul «fă»/«nu face» și hooks pentru bariere de protecție critice. Tot ce depășește acest set are randament descrescător și cost crescut de mentenanță. Cel mai mare risc nu sunt prea puține reguli — ci regulile depășite care derutează activ.
Funcționează cu adevărat
| Practică | De ce funcționează |
|---|---|
| Comenzi exacte în blocuri de cod | Agenții copiază și lipesc în loc să ghicească |
| Fișiere reale ca exemple | Exemplele concrete bat descrierile abstracte |
| Fișiere de configurare scurte, sub 150 de linii | Urmarea instrucțiunilor se degradează uniform pe măsură ce numărul crește |
| Reguli de logging | LLM-urile loghează constant insuficient fără ele |
| Hooks pentru reguli critice | Deterministice, nu pot fi ignorate |
| Delegare către lintere | Sursă unică de adevăr |
Are nuanțe
| Practică | Nuanța |
|---|---|
| Căi detaliate de fișiere | Căile devin depășite rapid, descrie capabilități în schimb |
| Etichete simple de persoană | Impact măsurabil minim, dar contextul de încadrare într-un domeniu poate modela semnificativ rezultatul |
| Reguli complexe pe mai multe fișiere | Costul de mentenanță crește rapid |
| AGENTS.md ca standard «universal» | Symlink-urile funcționează, dar activarea bazată pe glob a Cursor și hook-urile/skill-urile Claude Code oferă capabilități pe care nu le poate replica |
Supraevaluat
| Afirmație | Realitatea |
|---|---|
| «Platformele de observabilitate pentru agenți sunt esențiale» | Pentru agenții de programare, logging-ul structurat în codul generat este mai valoros |
| «Agenții AI vor înlocui dezvoltatorii» | Fiecare output necesită revizuire umană. Revizuirea nu este niciodată zero. |
| «Seturi diferite de reguli pentru fiecare limbaj» | Regulile de logging, arhitectură și testare sunt agnostice față de limbaj. Aspectele specifice limbajului sunt gestionate mai bine de lintere reale |
10
Playbook de implementare
Pasul 1: Creează AGENTS.md (30 min)
Pornește cu un template minimal și adaugă pe măsură ce descoperi ce lipsește. Un fișier de 40 de linii care acoperă comenzile, stilul de cod și logging-ul valorează mai mult decât un manifest de 300 de linii pe care agentul îl ignoră pe jumătate.
# AGENTS.md
## Prezentare proiect
- Stack: Next.js 16, TypeScript, Tailwind CSS v4, Sanity CMS
- Manager pachete: pnpm
- Node: >=20
## Comenzi
```bash
pnpm dev # Server de dezvoltare
pnpm build # Build producție
pnpm lint # ESLint
pnpm test # Vitest
```
## Stil de cod
- Formatare: prettier (se aplică la salvare)
- Imports: absolute cu alias @/
- Componente: funcționale, cu TypeScript strict
- Naming: camelCase variabile, PascalCase componente, kebab-case fișiere
## Standarde de logging
- Folosește console.error() pentru eșecuri cu context
- Fiecare funcție async are try/catch cu mesaje descriptive de eroare
- Header de rulare la intrarea în operații batch
- Include întotdeauna: ce element, ce operație, ce rezultat
## Reguli
- NU edita .env, .env.local sau fișiere .pem
- NU folosi `any` în TypeScript
- NU adăuga dependențe fără aprobare explicită
- RULEAZĂ întotdeauna pnpm lint înainte de a considera un task completPasul 2: Configurează symlink-uri (5 min)
Creează symlink-uri de la AGENTS.md către fișierele specifice fiecărui instrument:
# Din rădăcina proiectului
ln -sf AGENTS.md CLAUDE.md
ln -sf AGENTS.md .windsurfrules
mkdir -p .github
ln -sf ../AGENTS.md .github/copilot-instructions.md
# Adaugă în .gitignore dacă nu vrei symlink-urile în repo
echo "CLAUDE.md" >> .gitignore
echo ".windsurfrules" >> .gitignorePasul 3: Adaugă hooks pentru reguli critice (15 min)
Configurează hooks în Claude Code pentru a garanta regulile care nu pot fi încălcate:
// .claude/settings.json
{
"hooks": {
"PostToolUse": [
{
"matcher": "write|edit",
"command": "npx prettier --write $CLAUDE_FILE_PATH 2>/dev/null || true"
}
],
"PreToolUse": [
{
"matcher": "write|edit",
"command": "echo $CLAUDE_FILE_PATH | grep -qE '\\.(env|pem|key)$' && exit 2 || exit 0"
}
],
"Stop": [
{
"command": "pnpm lint --quiet 2>&1 | tail -20"
}
]
}
}Pasul 4: Adaugă reguli glob Cursor (opțional, 15 min)
Cursor suportă activare automată bazată pe glob, unde regulile se aplică doar fișierelor care corespund unui pattern:
---
globs: ["**/*.ts", "**/*.tsx"]
alwaysApply: false
---
# Reguli TypeScript
- Strict mode activat, fără `any`
- Exportă tipuri explicit
- Folosește pattern-uri zod pentru validarePasul 5: Tratează-l ca pe cod (continuu)
AGENTS.md are aceleași probleme de mentenanță ca orice documentație. Fără întreținere activă, regulile devin depășite și derutante.
- Versionează AGENTS.md în Git
- Revizuiește modificările în code review
- Curăță trimestrial: elimină regulile depășite
- Testează: după modificări, rulează o sesiune agent și verifică dacă urmează noile reguli
- Menține sub 150 de linii — dacă depășește, prioritizează
11
Observabilitate agenți — Clarificarea confuziei
Există două preocupări distincte pe care multe ghiduri le amestecă:
RECOMANDARE
Pentru majoritatea echipelor care folosesc Cursor sau Claude Code pentru a scrie cod de aplicație, concentrează-te pe prima categorie. Dacă construiești aplicații bazate pe LLM în producție, atunci observabilitatea agentului devine relevantă — industria converge spre convențiile semantice OpenTelemetry pentru GenAI.
Observabilitatea codului generat
Logging adecvat, tratarea erorilor, metrici — exact ce acoperă Secțiunea 7. Aceasta este prioritatea pentru majoritatea echipelor care folosesc agenți de programare pentru a scrie cod de aplicație.
Observabilitatea agentului însuși
Trasarea raționamentului, urmărirea consumului de token-uri, evaluarea calității output-ului — instrumente precum LangSmith, Langfuse etc. Acest lucru devine relevant doar dacă construiești aplicații bazate pe LLM (chatboți, pipeline-uri RAG, workflow-uri autonome).
12
Recomandări
FĂ ACESTE ȘASE LUCRURI
- Creează un AGENTS.md în rădăcina fiecărui proiect activ (sub 150 de linii, concentrează-te pe comenzi, stil de cod, logging).
- Configurează symlink-uri către CLAUDE.md, .windsurfrules etc.
- Adaugă standarde de logging din Secțiunea 7.
- Adaugă hooks pentru tot ce trebuie să fie determinist.
- Delegă către instrumentele existente — lintere, formatoare, verificatoare de tipuri sunt surse unice de adevăr.
- Tratează AGENTS.md ca pe cod: versionează-l, revizuiește-l, curăță-l trimestrial.
OMITE DEOCAMDATĂ
- Ierarhii complexe de reguli pe mai multe fișiere
- Platforme de observabilitate pentru agenți (cu excepția cazului în care construiești sisteme de producție bazate pe LLM)
- Etichete simple de persoană
- Documentație detaliată a căilor de fișiere
Pregătit pentru implementare?
Obține ghidul complet în format PDF pentru referință offline și distribuire în echipă.
Descarcă PDF