Sunt o singură persoană și am unsprezece produse în stadii diferite — unele live în magazinele de aplicații, unele self-hosted, unele încă în beta privat. Lumea presupune că secretul e să muncești mai multe ore. Nu e. Secretul e un flux de dezvoltare cu AI în care agenții scriu codul, iar eu judec, structurat suficient de strâns cât să pot trece de la o aplicație Flutter pentru animale la o platformă de trading în Django fără să-mi pierd firul.

Asta e povestea din spatele întregului portofoliu. Vreau să fiu concret în privința a ceea ce chiar funcționează, fiindcă „folosesc AI ca să scriu cod" e o propoziție goală care nu spune nimic. Partea interesantă e structura din jurul AI-ului: buclele, specurile, recenzorii și locurile unde dependența de agenți m-a costat pe tăcute.

Bucle autonome bazate pe specuri

Cel mai util tipar pe care îl rulez e o buclă autonomă de build pornită de o coadă de specuri. LaunchPad, platforma mea de automatizare a lansărilor de produs, a fost construită aproape integral așa, printr-o buclă pe care o numesc /evolve: face commit la o singură sarcină per ciclu, din coada EVOLUTION.md, apoi trece la următoarea. Aproximativ 40 de sarcini de evoluție, în 7 faze, au adus-o unde e acum.

Constrângerea care face asta să funcționeze e „o singură sarcină per ciclu, cu commit". Forțează agentul să termine ceva — o schimbare reală, revizuibilă, comisă — înainte să aibă voie să înceapă următorul lucru. E opusul tiparului obișnuit de eșec al AI-ului, unde ceri o funcționalitate mare și primești 600 de linii de cod plauzibil, care ating douăsprezece fișiere și compilează, dar nu funcționează cap-coadă. O coadă de specuri mici și ordonate ține agentul în lesă și mă ține pe mine capabil să revizuiesc schimbări în bucăți suficient de mici cât să le înțeleg cu adevărat.

Specurile în sine duc greutatea. Pe TradingHub, platforma mea de crypto în paper-trading, partea de strategie e pornită de 242 de specuri de research în markdown care alimentează o buclă de autoresearch și evoluție. Fiecare spec e o bucată autonomă de intenție — o idee de strategie, o regulă de risc, un model de integrat — scrisă înainte să existe vreun cod. Când intenția trăiește într-un document versionat, nu într-o fereastră de chat, agentul are ceva durabil pe care să construiască, iar eu am ceva de revizuit care nu e doar un diff.

Arena de agenți: pune modelele să concureze

Aici e partea din fluxul TradingHub care mi se pare cea mai interesantă. Specurile de research nu alimentează un singur model. Alimentează o arenă unde Claude și Codex concurează pe aceeași sarcină. Doi agenți diferiți, același spec, iar eu compar rezultatele în loc să mă încred în oricare l-am întrebat la întâmplare.

Contează mai mult decât pare. Un singur agent greșește cu încredere, în moduri consecvente — are obiceiuri, puncte oarbe, un stil propriu de bug. Când pui două modele diferite pe același spec, dezacordurile lor sunt un semnal. Acolo unde amândouă ajung la aceeași abordare, am mai multă încredere. Acolo unde diverg, exact acolo era nevoie de un om care să gândească. Arena transformă „e corect codul ăsta?" în „uite două încercări, ce-mi spune diferența dintre ele?" — o întrebare mult mai ușor de răspuns bine.

Nu e gratis. Să rulezi două modele pe tot costă mai multe tokenuri și mai multă atenție din partea mea, așa că o rezerv pentru părțile unde a greși e scump — gate-urile de risc, logica de fuziune a semnalelor — și las un singur agent să se ocupe de boilerplate.

Self-review adversarial

Tiparul pe care mă bucur cel mai mult că l-am adoptat e recenzia adversarială, iar Anima — sistemul meu de management al vieții cu AI — e locul unde și-a meritat banii. Dezvoltarea Animei rulează o cultură de self-review adversarial: trei agenți recenzori independenți a căror singură sarcină e să presupună că am greșit și să caute dovada.

Au găsit dovada. Pe parcursul build-ului au prins și reparat o vulnerabilitate de Cypher injection, un IDOR (insecure direct object reference) și curse TOCTOU (time-of-check to time-of-use). Niciuna nu e exotică. Sunt exact clasa de bug pe care un fondator solo care merge repede îl livrează fără să observe, fiindcă drumul fericit funcționează și demo-ul arată bine. Nu există un al doilea inginer care să le prindă, așa că îl fabric eu — trei, de fapt — din agenți îndreptați asupra propriului meu cod cu intenție ostilă.

Motivul pentru care merge unde „te rog revizuiește-mi codul" nu merge e încadrarea. Un agent rugat să revizuiască tinde să fie de acord; dă din cap și găsește mărunțișuri. Un agent căruia i se spune că treaba lui e să spargă codul, să găsească injectarea, să demonstreze că autorizarea poate fi ocolită, se comportă complet diferit. Postura adversarială e tot trucul. Mă bazez acum pe o variantă a ei în tot ce construiesc, fiindcă alternativa e să afli despre IDOR de la un utilizator.

Disciplina anti-slop

Sub toate astea stă o regulă culturală pe care o țin deliberat și care e același instinct ce face restul fluxului demn de încredere. Anima are un mandat explicit „anti-AI-slop": fără metrici false, fără stock art, fără CTA-uri cu emoji, păstrează un nivel de calitate Linear/Stripe. Sună a preferință de design. În practică e o constrângere de inginerie care țintește direct modul de eșec al lucrului cu AI.

„Fără metrici false" înseamnă că produsul nu poate afișa un scor de încredere pe care nu l-a calculat niciodată. E aceeași disciplină ca EvalGate-ul care face AI-ul Animei să refuze un răspuns în loc să halucineze despre viața ta. Un AI care își umple output-ul cu umplutură plauzibilă produce slop, fie că output-ul ăla e un UI, un paragraf sau o funcție. Construitul la un nivel real de calitate elimină majoritatea scurtăturilor care fac produsele construite cu AI să pară ieftine — și de asta fiecare afirmație din aceste articole e ancorată în ce conțin repo-urile cu adevărat, nu în ce ar suna impresionant.

CLAUDE.md și configurarea agenților per proiect

Nimic din asta nu scalează peste unsprezece produse fără memorie per proiect. Fiecare repo poartă un CLAUDE.md și propria configurare de agenți — convențiile proiectului, arhitectura lui, comenzile care contează, lucrurile pe care un agent nu trebuie să le atingă. PokiPaw, aplicația mea de îngrijire a animalelor pe șase platforme în Flutter, e un exemplu bun: repo-ul ei arată clar fluxul intens asistat de AI, cu CLAUDE.md, configurări de agenți, documente de strategie și pre-mortem, și zeci de scripturi de patch pentru localizare care au împins-o în peste șapte limbi.

Acea automatizare a localizării e recompensa neglamuroasă. Să traduci și să menții o aplicație mobilă în EN, RO, DE, ES, FR, ID și ZH manual e genul de muncă repetitivă și predispusă la erori care epuizează un fondator solo. Scriptarea ei — agenți care generează și aplică patch pe fișierele de l10n după o structură cunoscută — e exact corvoada de care AI-ul ar trebui să se ocupe. CLAUDE.md e ce face agentul fiabil la asta: când convențiile trăiesc în repo, nu reexplic proiectul în fiecare sesiune, iar un agent nou continuă de unde s-a oprit cel anterior.

Unde ajută AI și unde creează datorie

Vreau să fiu onest în privința costului, fiindcă fluxul are un dezavantaj real, iar a pretinde altceva ar fi propriul lui slop.

AI-ul e genuin excelent la: scaffolding, boilerplate, localizare, conectarea tiparelor cunoscute, explorarea unui design în două feluri deodată și recenzia cu intenție ostilă. Comprimă munca acolo unde răspunsul e în mare cunoscut, iar efortul e bottleneck-ul. Așa există în cea mai mare parte unsprezece produse.

Dar agenții îți vor construi bucuroși un sistem mai mare decât ai nevoie, o sarcină rezonabilă pe rând, și n-o simți până când două jumătăți ale codebase-ului nu sunt de acord asupra realității. LaunchPad e povestea mea de avertizare. A pornit îngust — automatizează postarea la lansare — iar bucla evolve a tot spus da: urmărirea concurenței, vizibilitatea în căutarea AI, ASO, influenceri, outreach pe email. Fiecare adăugire avea sens singură. Împreună au produs un creier scindat, unde jumătate din sistem gândea în „lansări și canale", iar cealaltă jumătate devenise o suită generală de marketing-intelligence, iar modelul de date nu putea cădea de acord care e obiectul central. Un audit a forțat un refactor project-first care să reconcilieze cele două. A fost cea mai valoroasă săptămână de muncă pe care a primit-o proiectul, iar datoria care a făcut-o necesară a fost un produs direct al unei bucle autonome care nu s-a oprit niciodată să întrebe „care e lucrul central aici?".

Lecția pe care am tras-o: buclele autonome sunt grozave la execuție și groaznice la a spune nu. Judecata arhitecturală — ce să construiești, ce să refuzi, când modelul lumii a derapat — e partea care rămâne a mea. Agentul face commit la o sarcină per ciclu; decizia dacă sarcina aia ar trebui să existe e treaba pe care AI-ul n-a preluat-o.

Mai e un al doilea cost, mai ascuțit. Să mergi atât de repede peste atâtea repo-uri face ușoară scurgerea unor lucruri — un README de la TradingHub a expus la un moment dat o credențială de admin care n-ar fi trebuit comisă niciodată. E genul de greșeală pe care o produce viteza și exact de asta recenzorii adversariali și nivelul anti-slop nu sunt luxuri opționale. Sunt frânele.

Forma lucrurilor

Dacă dai la o parte specificul, fluxul e: scrie intenția sub formă de specuri, lasă o buclă în lesă să execute o singură sarcină comisă pe rând, pune modelele să concureze acolo unde a greși e scump, îndreaptă recenzori ostili spre rezultat, ține un nivel real de calitate și păstrează ferm umană judecata arhitecturală „ar trebui asta să existe?". AI-ul face volumul. Eu spun nu.

Dacă vrei să vezi aceste tipare în acțiune, sunt cel mai vizibile în build-ul cu bucla evolve al LaunchPad și refactorul care a urmat, în arena Claude-vs-Codex și cele 242 de specuri de research ale TradingHub și în cultura de recenzie adversarială cu trei agenți a Animei. Totul se leagă de imaginea mai mare: cele unsprezece produse pe care le construiesc ca fondator solo. Scriu despre ele pe măsură ce merg — dacă fluxul ăsta e genul tău, newsletter-ul e unde aterizează prima dată următorul teardown.

AIagențiClaudeworkflowautomatizareDjango
Distribuie articolul