AI agenti brzo otkrivaju arhitektonski dug. Pretražuju nazive, prate import-e, kopiraju obližnje obrasce i koriste testove kao povratnu informaciju.
Ako se ti signali ne slažu, agent može da napravi lokalno razumnu izmenu koja krši sistem. Isti repo je težak i novom inženjeru. Dizajn za agente je uglavnom dizajn za preglednost.
Učini granice izmene vidljivim
Modul treba da ima uzak razlog za promenu i jasan javni interfejs. Unutrašnji detalji mogu da se menjaju bez toga da ih svaki pozivalac poznaje.
Grupiši po mogućnosti sistema kada to odgovara domenu. Politika fakture, adapter baze, API handler i testovi treba da budu dovoljno blizu da pretraga pojma „invoice“ pokaže put kroz sistem.
Izbegavaj utility foldere koji postanu zavisnost nepovezanog koda. Mali helper korišćen svuda može da ima veći domet kvara od ozbiljnog feature modula.
Granicu možeš da proveriš jednim pitanjem: koji fajlovi treba da se promene kada se ovo ponašanje promeni? Ako je odgovor „zavisi ko primeti“, arhitektura krije spregu.
Pretvori granice u izvršive provere
Nazivi foldera prenose nameru, ali je ne sprovode. Dodaj provere za ograničenja koja su bitna:
- unit testove za lokalno ponašanje;
- contract testove za interfejse modula ili servisa;
- integration testove na granicama baze i mreže;
- architecture testove ili lint pravila za zabranjene zavisnosti;
- proveru tipova za podatke između slojeva.
Agent može da pokrene ove provere posle svakog dela. Repo mu kaže da je prešao granicu pre nego što reviewer mora ručno da rekonstruiše pravilo.
Komande drži predvidivim. Ciljani test treba lako pokrenuti bez poznavanja celog CI sistema.
Omogući lokalno zaključivanje
Kod se lakše menja kada relevantno ponašanje stane u mali skup za čitanje. Handler koji zavisi od udaljenih hook-ova, runtime zakrpa i implicitnog globalnog stanja zahteva mnogo pretpostavki odjednom.
Zavisnosti prosleđuj eksplicitno. Sporedne efekte drži iza imenovanih interfejsa. Koristi strukture čija se pravila vide u tipovima i konstruktorima.
Lokalno zaključivanje ne zahteva sitne fajlove. Deljenje jedne smislene operacije kroz dvanaest wrapper-a može da oteža navigaciju. Cilj je mala pojmovna površina, ne zadat broj redova.
Olakšaj pronalaženje ispravnog obrasca
Agenti često kopiraju najbliži primer. Merodavnim primerima daj jasna imena, a zastarele alternative obriši.
Zapiši komande, granice paketa, generisane fajlove i oblasti koje traže ljudsko odobrenje. Pravila paketa drži u tom paketu umesto u ogromnom dokumentu u korenu.
Ako je ograničenje bitno na review-u, pokušaj da ga pretvoriš u test ili alat. Proza ostaje korisna za razlog iza pravila i odluke koje se ne mogu automatski proveriti.
Ukloni nejasna stanja uspeha
Repo je pogodan za agente kada „gotovo“ ima dokaz. Build prolazi, ciljani testovi pokrivaju novo ponašanje, generisani fajlovi su ažurni, a diff nema nepovezane izmene.
Izbegavaj skripte koje gutaju grešku ili prijavljuju uspeh pre kraja asinhronog rada. Pouzdani exit kodovi i korisne greške skraćuju petlju ispravke ljudima i alatima.
Pregledaj jednu putanju izmene
Izaberi rutinsku promenu, na primer dodavanje polja u API odgovor. Isprati je od zahteva do baze i nazad.
Prebroj module. Nađi testove koji dokazuju kompatibilnost. Zapiši svako pravilo koje si morao da zapamtiš, a nisi mogao da ga pronađeš. Te beleške su arhitektonski backlog.
Dobra struktura ne čini agenta pouzdanim. Ona olakšava da njegov rad pregledaš, ograničiš i odbaciš kada je pogrešan. Isto treba da radi održiv repo za ljude.