Preskoči na sadržaj
nazad na blog

4 min čitanja

Kako oblikovati kodnu bazu za AI agente

Arhitektura projekta često više ograničava AI agente nego sam model. Beleške iz razgovora Davida Ondreja i Matta Pococka o tome kako kod prilagoditi radu agenata.

  • ai-tools
  • workflow
  • engineering

Izvor: razgovor Davida Ondreja sa Mattom Pocockom (pogledaj ceo snimak).

AI agenti za pisanje koda napreduju iz meseca u mesec. Ipak, glavno ograničenje sve ređe je sam model. Mnogo češće je to kodna baza koju agent mora da pročita, razume i izmeni.

Pocock govori o tome kako treba oblikovati softver da bi agenti u njemu mogli pouzdano da rade. Tema nisu samo upiti i izbor alata, već iskustvo rada agenta (AX) kao važno inženjersko ograničenje.

Kodna baza kao ograničenje

Način na koji je kodna baza uređena određuje koliko će agent biti uspešan. Modeli su dovoljno napredovali da slaba karika često više nije njihova sposobnost, već način na koji im repozitorijum predstavlja sistem.

Zato je korisnije ulagati u arhitekturu nego stalno juriti najnoviji model. Jasno ograničen zadatak, čisti interfejsi među modulima, slaba spregnutost i pouzdani testovi vrede više od juče objavljene verzije modela.

To nije samo pitanje urednosti. Dobra arhitektura smanjuje potrošnju tokena i verovatnoću da će agent izmisliti nepostojeću vezu ili ponašanje.

U modularnoj kodnoj bazi mogu da posluže i manji, jeftiniji modeli. Granice modula tada rade kao zaštitne ograde: ograničavaju prostor u kojem agent može da pogreši.

Nasuprot tome, gomila tesno povezanih datoteka primorava i najbolji model da troši tokene na raspetljavanje veza koje nisu morale ni da postoje.

Stanje zadatka treba čuvati u repozitorijumu

Većina razgovora sa AI modelom nema trajno stanje: postaviš pitanje, dobiješ odgovor i razgovor se završi.

Složeniji poslovi traže stanje koje će opstati između dva pokretanja. Pocockov alat za komandnu liniju to rešava tako što u projekat upisuje datoteke stalnog oblika: mission.md, beleške o novim saznanjima i HTML izveštaj.

To je pouzdanije od gomilanja nepreglednih razgovora u privremenom kontekstu modela. Datoteke ostaju dostupne pri sledećem pokretanju, drugim agentima u istom projektu i ljudima koji proveravaju urađeno.

Tako repozitorijum postaje trajna memorija sistema, dok kontekst modela ostaje samo radna memorija jednog pokretanja.

Rad bez nadzora: red poslova umesto beskrajne petlje

Razgovor dobro razdvaja koristan rad bez nadzora od pompe oko potpuno samostalnih agenata.

Pocock navodi problem „Ralph petlje“: trajne while petlje koje modelu neprekidno vraćaju zadatak na samoprocenu. Takav pristup troši mnogo tokena, daje slab rezultat i uglavnom služi prodaji računarskih resursa.

Za ozbiljan rad bolji je poznat obrazac: više agenata bez trajnog stanja istovremeno uzima jasno određene zadatke iz reda poslova i izvršava ih nezavisno.

GitHub oznaka poput agent-implement može da pokrene jedan ograničen CI/CD posao. Nema beskrajne petlje ni agenta koji sam bira sledeći cilj. Označen zadatak pokreće jedno predvidivo izvršavanje.

Rad bez nadzora zahteva izolovano okruženje. Ako agent radi neposredno na razvojnoj mašini, može da izvršava neproverene naredbe i pristupa osetljivim podacima.

Zato ga treba smestiti u Docker, Podman ili privremenu udaljenu instancu, kakvu obezbeđuje Pocockov alat sandcastle.

Čovek i dalje treba da pregleda rezultat, ali taj pregled može biti jednostavniji. Agenti koji menjaju korisnički interfejs mogu, na primer, da prilože snimak izmene i govorno objašnjenje uz zahtev za spajanje koda.

Procedure umesto nepreglednog spiska alata

Uobičajena podešavanja stavljaju opise svih dostupnih alata u sistemsko uputstvo. Kada ih ima na desetine, ti opisi zauzimaju kontekst, slabe važnije instrukcije i povećavaju potrošnju tokena.

Bolje je posebne alate podesiti kao postupke koje pokreće korisnik, umesto kao mogućnosti koje model bira samostalno.

Ako u podešavanju alata stoji disable_model_invocation: true, njegov opis se ne pojavljuje u opštem kontekstu. Model ne vidi alat dok ga čovek izričito ne pokrene, pa kontekst ostaje manji i usmereniji.

Pocockov obrazac „grill me“ dobar je primer takvog postupka. Kratko uputstvo pretvara model u zahtevnog sagovornika koji pre pisanja koda ispituje arhitekturu, granične slučajeve i nejasne zahteve.

Vrednost tog obrasca je u redosledu. Umesto da model prvo napiše kod, a zatim ga više puta popravlja, najpre se razjašnjava problem. Rezultat je bolji, uz manje naknadnih ispravki.

Kako rasteretiti podešavanje

Prvo ukloni posebna uputstva, sistemske poruke, .cursorrules, CLAUDE.md, dodatke i MCP servere koji nemaju jasnu svrhu. Nagomilana, protivrečna ili zastarela pravila često samo pogoršavaju rad savremenih modela.

Zatim pokreni agenta bez dodatnih podešavanja i proveri kako rešava zadatak. Možda će se pokazati da podrazumevani model radi bolje bez sloja pravila koji se godinama taložio oko njega.

Na kraju vrati samo usko namenjene postupke za probleme koji se zaista ponavljaju. Ne dodaj alat unapred. Uvedi ga tek kada postoji jasno, merljivo usko grlo koje treba da otkloni.

Više o ovim temama nalazi se u celom razgovoru.