IA poate propune, dar repository-ul tău decide
Cel mai bun mod de a folosi IA pentru programare este să o faci mai lentă exact în momentele în care ghicitul e periculos. IA poate explica cod necunoscut, transforma erorile în ipoteze, redacta teste, revizui diff-uri, și sugera refactorizări. Poate de asemenea inventa API-uri, rata dependențe ascunse, se poate supra-potrivi la fragmentul lipit, sau poate produce un patch care arată curat în timp ce schimbă un comportament pe care voiai să îl păstrezi.
Folosește această regulă: IA poate propune, dar repository-ul tău decide. Sursa adevărului este baza de cod, reproducerea eșuată, suita de teste, jurnalele de execuție, cerințele de produs, și revizuirea umană. Un bun partener de programare IA ar trebui să te ajute să raționezi pe baza acelor artefacte, nu să le înlocuiască.
| Regulă | De ce contează | Ce să ceri modelului |
|---|---|---|
| Reprodu mai întâi | Previne patch-uri aleatorii | „Reformulează comportamentul eșuat și dovezile înainte să sugerezi cod.” |
| Păstrează scopul mic | Reduce riscul de regresie | „Propune cea mai mică schimbare sigură și listează fișierele atinse.” |
| Păstrează comportamentul | Protejează utilizatorii și contractele | „Numește invarianții pe care această schimbare nu trebuie să îi încalce.” |
| Cere teste | Face răspunsul verificabil | „Scrie teste care eșuează înainte de corecție și trec după.” |
| Revizuiește înainte de merge | Prinde greșelile sigure pe ele | „Revizuiește acest diff pentru corectitudine, securitate, și cazuri limită lipsă.” |
Asta contează la toate modelele, iar modelele diferă cu adevărat în cost și acoperire. Pe indicele de costuri al modelelor Whizi (tarife de listă OpenRouter, preluate 2026-08-20), un răspuns standard de 1.000 de tokeni de intrare plus 500 de ieșire costă circa $0.0105 pe Claude Sonnet 4.6, $0.008 pe GPT-5.6 Terra, și $0.00028 pe DeepSeek V4 Flash, o diferență de circa 37x între primul și ultimul, iar toate trei citesc un context de 1M de tokeni. Regula practică de rutare: trimite întrebările de tip explică-acest-cod și triaj de jurnale către un model ieftin precum DeepSeek V4 Flash sau Gemini 3.7 Flash, și rezervă Claude Sonnet 4.6 sau GPT-5.6 Terra pentru trecerea de revizuire și planul de refactorizare pe cod pe care nu îți permiți să-l strici. Documentația de capacități de la OpenAI și Anthropic îți spune ce poate încerca un model; nu înlocuiește fluxul de lucru de mai sus. Judecă modelele așa cum ai judeca un coleg de echipă: cer context lipsă, reduc incertitudinea, respectă constrângerile, și lasă o urmă pe care o poți verifica?
Depanează în cinci etape: reprodu înainte să faci patch
Un flux de depanare fiabil cu IA are cinci etape: reproducere, izolare, formulare de ipoteze, patch, și verificare. Nu începe cu „repară asta.” Începe cu dovezile. Dă-i modelului comanda eșuată, eroarea exactă, comportamentul așteptat, comportamentul observat, codul relevant, detaliile mediului, și orice schimbare recentă care ar fi putut cauza problema.
Etapa 1: captează reproducerea. Pentru cod de backend, include cererea, răspunsul, codul de status, jurnalele, și testul eșuat. Pentru cod de frontend, include ruta, acțiunea utilizatorului, eroarea din consola browserului, răspunsul de rețea, starea componentei, și descrierea capturii de ecran dacă e relevantă. Pentru probleme de build, include comanda, managerul de pachete, versiunea Node, și eroarea completă din jurul primei eșuări.
Etapa 2: cere ipoteze înainte de cod. Un model atent ar trebui să claseze cauzele probabile și să spună ce dovezi susțin fiecare. Dacă nu poate distinge între cauze, cere cel mai mic pas de diagnosticare. Acesta poate fi un jurnal, un test focalizat, o verificare de tip, sau citirea încă unui fișier.
Etapa 3: cere cel mai mic patch. Spune-i modelului să nu redenumească variabile, să nu rescrie codul din jur, să nu introducă dependențe, sau să nu schimbe comportamentul public decât dacă poate justifica de ce. Cere-i să întoarcă cauza rădăcină, schița patch-ului, fișierele atinse, testele, și riscul.
Etapa 4: rulează testele local. Rezultatul IA nu este un pas de verificare. Pasul de verificare este comanda sau traseul utilizatorului care dovedește comportamentul. Dacă nu există niciun test automat, cere modelului să creeze mai întâi un test de regresie, apoi să implementeze corecția.
Prompt de depanare:
Acționează ca un partener de depanare atent. Nu scrie încă cod. Reformulează mai întâi reproducerea, comportamentul așteptat, comportamentul observat, și cele mai probabile trei cauze rădăcină. Clasează fiecare cauză după dovezi. Apoi sugerează cel mai mic pas de diagnosticare. Bug: [descrie]. Comandă sau acțiune de utilizator: [lipește]. Eroare/jurnale: [lipește]. Cod relevant: [lipește]. Constrângeri: [stack, fișiere de neatins, comportament de păstrat].
Prompt de corecție:
Folosind cauza rădăcină confirmată, propune cea mai mică corecție sigură. Întoarce: cauza rădăcină, fișiere/funcții de schimbat, schița patch-ului, teste care eșuează înainte și trec după, cazuri limită, și riscul de rollback. Nu refactoriza cod nerelevant. Context: [lipește].
IA revizuiește diff-uri mai bine decât le scrie
IA este adesea mai bună ca revizor decât ca prim autor. Când o rogi să revizuiască un diff, poate căuta cazuri limită ratate, probleme de securitate, presupuneri învechite, lacune de testare, și schimbări de comportament. Cheia este să faci revizuirea specifică. Dacă întrebi „arată bine?” vei primi o aprobare politicoasă. Dacă ceri riscul de corectitudine, e mai probabil să primești obiecții utile.
Dă-i modelului diff-ul, comportamentul intenționat, testele conexe, și orice constrângeri. Cere-i să ignore stilul minor decât dacă afectează mentenabilitatea. Vrei ca revizuirea să prioritizeze bug-urile, nu comentarii de formă performative.
| Zonă de revizuire | Întrebări la care IA ar trebui să răspundă |
|---|---|
| Corectitudine | Diff-ul chiar satisface cerința? |
| Risc de regresie | Ce comportament existent s-ar putea schimba accidental? |
| Securitate | Sunt tratate intrările, autentificarea, secretele, permisiunile, sau riscurile de injecție? |
| Gestionarea erorilor | Ce se întâmplă la nuluri, timeout-uri, reîncercări, răspunsuri proaste, sau stare parțială? |
| Teste | Ce afirmații de comportament nu sunt acoperite? |
| Mentenabilitate | Urmează tiparele locale și menține schimbarea ușor de înțeles? |
Prompt de revizuire de cod:
Revizuiește acest diff ca un mentenant strict dar practic. Concentrează-te pe corectitudine, risc de regresie, securitate, cazuri limită, și teste lipsă. Ignoră stilul minor decât dacă creează un risc real de mentenanță. Întoarce un tabel cu problemă, prioritate, dovezi din diff, corecție sugerată, și test necesar. Comportament intenționat: [lipește]. Diff: [lipește]. Teste existente: [lipește].
Pentru schimbări cu risc mare, folosește un flux de comparare a corecțiilor modelelor în Whizi. Rulează același prompt de revizuire pe două sau trei modele. Dacă un model găsește o problemă posibilă, nu o accepta orbește; verifică dacă problema este reală în baza de cod. Ideea este să lărgești suprafața de revizuire înainte de merge, cu fiecare obiecție urmărită înapoi în cod, nu numărată ca vot.
Numește invarianții înainte ca IA să atingă o refactorizare
Refactorizarea cu IA este riscantă pentru că multe refactorizări sunt judecate după ce nu se schimbă. Modelul poate face codul mai frumos în timp ce schimbă subtil comportamentul, gestionarea erorilor, timpul, sau contractele publice. Un flux de refactorizare mai sigur începe prin definirea invarianților înainte de a atinge implementarea.
Pasul 1: descrie obiectivul refactorizării. Exemple: reduce duplicarea, împarte o componentă mare, izolează accesul la date, simplifică ramificarea, migrează un wrapper de API, sau îmbunătățește testabilitatea. Apoi precizează ce trebuie să rămână la fel: semnăturile funcțiilor publice, comportamentul rutelor, numele evenimentelor, formele răspunsurilor, analitica, permisiunile, comportamentul de accesibilitate, și așteptările de performanță.
Pasul 2: cere un plan pe etape. Un plan de refactorizare util cu IA ar trebui să fie reversibil. Fiecare etapă ar trebui să atingă o zonă mică, să includă teste, și să producă o stare intermediară funcțională. Evită rescrierile dintr-o singură lovitură decât dacă codul este mic și bine acoperit.
Pasul 3: scrie teste de caracterizare. Înainte să schimbi codul, cere IA să identifice comportamentul actual și să redacteze teste care fixează cazurile importante. Aceste teste sunt deosebit de utile pentru cod moștenit unde intenția e neclară. Ar trebui să includă intrări normale, intrări la limită, căi de eșec, și un caz de regresie legat de motivul refactorizării.
Pasul 4: implementează o etapă pe rând. După fiecare etapă, rulează testele și cere o revizuire focalizată. Dacă modelul propune o abstracție largă, pune-l să dovedească că abstracția elimină duplicare sau risc real. Altfel, păstrează codul plictisitor și local.
Prompt de planificare a refactorizării:
Creează un plan de refactorizare pe etape. Obiectiv: [obiectiv]. Cod actual: [lipește]. Constrângeri: păstrează comportamentul public, minimizează perturbarea, urmează tiparele existente, evită dependențe noi, păstrează fiecare etapă testabilă. Întoarce: invarianți, hartă de dependențe, etape, fișiere atinse, teste per etapă, risc de rollback, și listă de verificare pentru revizuire.
Prompt de teste unitare:
Scrie teste înainte de schimbările de implementare. Folosește stilul de test existent arătat aici: [lipește]. Comportament de păstrat: [lipește]. Cod testat: [lipește]. Întoarce numele testelor, setup, intrare, rezultat așteptat, și de ce contează fiecare test. Include calea fericită, cazul limită, cazul de eroare, și cazul de regresie.
Șabloane de prompt care elimină ambiguitatea
Prompturile puternice de programare sunt exact suficient de lungi cât să elimine ambiguitatea, nimic mai mult. Modelul are nevoie de rol, sarcină, context, constrângeri, format de rezultat, și criterii de verificare. Salvează prompturile care funcționează ca IA să devină un flux de lucru inginer repetabil, nu un chat de unică folosință. Tabelul de mai jos asociază fiecare sarcină de programare cu primul lucru de cerut și verificarea care dovedește răspunsul.
| Sarcină de programare | Ce să ceri mai întâi | Ce dovedește răspunsul |
|---|---|---|
| Depanare | Cauze rădăcină clasate cu dovezile din spatele fiecăreia | Un test de regresie care eșuează înainte de corecție și trece după |
| Revizuire de cod | Corectitudine, risc de regresie, securitate, cazuri limită, și lacune de testare | Fiecare problemă urmărită la o linie specifică din diff |
| Refactorizare | Invarianți și un plan pe etape înainte de orice schimbare de implementare | Testele de caracterizare tot trec la sfârșitul fiecărei etape |
| Scrierea testelor | Calea fericită, limită, eroare, și cazuri de regresie | Fiecare test corespunde unei afirmații de comportament pe care o poți numi |
| Explicarea codului | Scop, intrări, ieșiri, flux de date, dependențe, și moduri de eșec | Faptele vizibile în cod sunt separate de presupuneri |
Prompt de explicare a codului:
Explică acest cod pentru un dezvoltator care se alătură proiectului. Acoperă scopul, intrările, ieșirile, fluxul de date, dependențele, modurile de eșec, și testele care ar crește încrederea. Separă faptele vizibile în cod de presupuneri. Cod: [lipește].
Prompt de programare securizată:
Revizuiește acest cod pentru riscuri de securitate. Concentrează-te pe autentificare, permisiuni, injecție, secrete, validare, redirecționări nesigure, gestionarea fișierelor, riscul dependențelor, și expunerea datelor sensibile. Întoarce doar problemele cu dovezi, impact, corecție sugerată, și test sau verificare manuală. Cod/diff: [lipește].
Prompt de comparare a corecțiilor modelelor:
Compar modele de IA pentru o sarcină de programare. Folosește doar contextul oferit. Întoarce cauza rădăcină, cea mai mică corecție sigură, teste, riscuri, presupuneri, și întrebări. Notează încrederea de la 1 la 5 și listează ce dovezi ți-ar schimba răspunsul. Sarcină: [lipește]. Context: [lipește].
Listă de verificare a calității înainte să accepți cod generat de IA:
- Modelul a reformulat corect sarcina.
- Patch-ul este mai mic decât problema, nu mai mare.
- Comportamentul public și contractele sunt numite.
- Testele acoperă direct bug-ul sau obiectivul refactorizării.
- Cazurile limită și căile de eșec sunt listate.
- Intrările sensibile la securitate sunt revizuite.
- Diff-ul urmează tiparele existente ale proiectului.
- Ai rulat testul relevant, lint-ul, build-ul, sau reproducerea manuală.
- Un om a revizuit diff-ul final.
O limitare onestă: Whizi este un spațiu de lucru de chat, nu un plugin de IDE. Pentru autocompletare inline în timp ce tastezi, un asistent dedicat de IDE câștigă. Whizi își câștigă locul la punctele de control în schimb: lipește același prompt de depanare sau revizuire în Claude Sonnet 4.6, GPT-5.6 Terra, și DeepSeek V4 Pro, apoi notează rezultatele după dovezi, domeniu, teste, și risc. Începe cu alternative la ChatGPT pentru programare dacă vrei un ghid de selecție a modelului, compară planurile la prețuri, sau creează-ți un cont ca să rulezi fluxul pe propriul tău cod.
- Începe cu o reproducere reală, nu cu o descriere vagă a bug-ului.
- Cere ipoteze și dovezi înainte să ceri cod.
- Cere cea mai mică corecție sigură și numește fișierele atinse.
- Definește comportamentul care nu trebuie să se schimbe înainte de refactorizare.
- Scrie sau actualizează teste înainte să ai încredere în patch.
- Revizuiește diff-urile generate de IA pentru corectitudine, securitate, și cazuri limită.
- Rulează același prompt riscant pe mai multe modele și compară corecțiile în Whizi.
- Folosește revizuire umană înainte să faci merge la cod asistat de IA.
Întrebări frecvente
Cum ar trebui să folosesc IA pentru programare în siguranță?
Folosește IA ca partener de programare care propune opțiuni, teste, și revizuiri. Începe cu o reproducere, cere un patch mic, rulează teste, și revizuiește diff-ul înainte de merge. Nu trata codul generat ca fiind automat corect.
Poate IA să ajute la depanarea codului?
Da. IA este utilă pentru a transforma erori, jurnale, și cod în cauze rădăcină probabile. Cel mai sigur flux de depanare este să ceri mai întâi ipoteze, apoi un pas de diagnosticare, apoi cea mai mică corecție și teste de regresie.
Poate IA să scrie teste unitare?
IA poate redacta teste unitare, dar ar trebui să ceri acoperire clară a comportamentului. Cere calea fericită, limită, eroare, și cazuri de regresie, apoi verifică dacă testele ar eșua înainte de corecție și ar trece după.
Care este cel mai bun model de IA pentru programare?
Direcționează după risc. Un model ieftin precum DeepSeek V4 Flash gestionează explicarea codului și triajul de jurnale la un cost cu circa 37x mai mic per răspuns decât Claude Sonnet 4.6 la tarife de listă, așa că păstrează Claude Sonnet 4.6 sau GPT-5.6 Terra pentru revizuiri și planuri de refactorizare pe cod care contează. Dovedește alegerea rulând același prompt pe mai multe modele și păstrând răspunsul cu cele mai clare dovezi și cele mai puternice teste.