Intervjuer: Pričaj kako radi OpenClaw? Ja: Od osnovne arhitekture do deploy-ovanja Agenta, sve ti objasnim!
Intervjuer Lao Wang me pita: "Ako bi dizajnirao Agenta, kako bi projektovao njegovo kratkoročno i dugoročno pamćenje?"
Na trenutak sam zastao, a u glavi mi je prolazila arhitektonska slika OpenClawa.

Iskreno, otkako se bakćem sa OpenClawom, moje razumevanje Agenta je prešlo na viši nivo. Ne onaj nivo "ume da koristi alate", već nivo "razume principe".
Lao Wang vidi da razmišljam i navodi: "Pa onda pričaj, kako radi OpenClaw?"
Udahnuo sam duboko i od osnovne arhitekture do deploy-ovanja Agenta pričao punih 20 minuta.
01. Šta dobijaš ako se bakćeš sa OpenClawom?
Kada ozbiljno podesiš OpenClaw, tvoje razumevanje sledećih pitanja će preći na novi nivo:
- Dizajn i upravljanje Skills-ima
- Koordinacija i komunikacija više Agenata
- Principi samostalnog deploy-ovanja modela
- Kako radi memory-search
- Klasična arhitektura Agenta
Prvo, mogućnost automatizacije. Agent može da radi za tebe repetitivne poslove: deploy koda, prikupljanje podataka, generisanje izveštaja. Ranije si to morao ručno, sada jednom rečenicom Agent to reši.
Drugo, koordinacija više Agenata. Možeš projektovati više Agenata koji rade zajedno, na primer jedan Agent pretražuje, jedan sažima, jedan šalje. Ova koordinacija je posebno korisna u kompleksnim zadacima.
Treće, brza izrada prototipa. Sa OpenClawom brzo proveravaš ideje. Hoćeš automatizacioni alat? Ne moraš da pišeš kod, konfiguriši Agenta i već radi.
Četvrto, prednost na intervjuu. OpenClaw je trenutno jedan od najpopularnijih Agent frejmvorkova. Kada na intervjuu pomeniš praktično iskustvo sa OpenClawom, to je veliki plus.
Česta pitanja na intervjuu
Na primer ova pitanja se često pojavljuju na intervjuima:
"Ako bi dizajnirao Agenta, kako bi projektovao njegovo kratkoročno i dugoročno pamćenje?"
"Ako bi dizajnirao arhitekturu sa više Agenata, koje bi komunikacione metode projektovao?"
"U srednjim i velikim projektima, kako upravljaš situacijom sa više Skills-a, kako izbegavaš eksploziju zbog više i niskokvalitetnih Skills-a?"
Ako si koristio OpenClaw, sva ova pitanja imaju spreman odgovor.

Na primer na prvo pitanje možeš odgovoriti: projektovao bih dva sloja — kratkoročno pamćenje (Session) i dugoročno pamćenje (Memory). Kratkoročno čuva kontekst tekućeg razgovora, dugoročno čuva važne informacije kroz razgovore. Kada Session priđe gornjoj granici context-a, automatski se pokreće Compaction koji važne informacije upisuje u Memory.
Takav odgovor intervjuer odmah čuje i zna da zaista duboko razumeš principe Agenta.
02. Koje su osnovne komponente OpenClawa?
Lao Wang namešta naočare i nastavlja: "Pričaj o osnovnim komponentama OpenClawa."
Odgovaram.

LLM: Ovo je mozak Agenta, odgovoran za razumevanje instrukcija, planiranje zadataka, generisanje odgovora. OpenClaw podržava više modela — Claude, GPT, GLM mogu svi da se priključe.
Task Planner: Razlaže korisnikove potrebe iz prirodnog jezika u izvršive korake. Na primer "pomogni mi da proverim vreme" se razlaže na: pozovi API za vreme → parsiraj vraćene podatke → generiši odgovor.
Tool Executor: Poziva spoljašnje alate, kao što su pretraga, operacije nad fajlovima, upiti nad bazom. Svaki alat ima jasno definisane ulaz i izlaz.
Memory Manager: Upravlja kratkoročnim (Session) i dugoročnim (Memory) pamćenjem Agenta. Ovo je ključ sposobnosti Agenta da održi kontinualni razgovor.
Skill Loader: Dinamički učitava Skills i proširuje sposobnosti Agenta. Skills su suštinski kombinacija upakovanih prompt-ova i alata.
Lao Wang klima glavom: "Kako ove komponente komuniciraju?"
Mehanizam komunikacije
Kažem: "OpenClaw usvaja laku komunikacionu mehanizmu zasnovanu na message bus."
"Svaka komponenta je nezavisna i razmenjuje podatke preko message bus-a. Prednosti ovog dizajna su:"
- Decoupling: Komponente ne zavise neposredno jedna od druge, lako se menjaju i proširuju
- Asinhronost: Poruke se obrađuju asinhrono, ne blokiraju glavni tok
- Posmatranost: Sve poruke idu kroz bus, lako za debug i monitoring
Intervjuer nadovezuje: "Kako je message bus konkretno implementiran?"
Implementacija message bus-a
Kažem: "Message bus je suštinski event queue."
"Kada komponenta A treba da pozove komponentu B, ne poziva je neposredno, već šalje poruku na bus. Poruka sadrži:"
- ID ciljne komponente: kome se poruka šalje
- Tip poruke: koja je vrsta poruke (zahtev, odgovor, događaj)
- Sadržaj poruke: konkretan podatak
- Adresa callback-a: kome se vraća odgovor
"Komponenta B čita poruku sa bus-a, kada obradi, šalje odgovor na bus. Komponenta A čita odgovor sa bus-a i nastavlja izvršenje."

"Prednosti ovog dizajna su:"
Prvo, potpuni decoupling između komponenti. Komponenta A ne mora da zna za postojanje komponente B, dovoljno da zna format poruke. Možeš u svakom trenutku zameniti komponentu B, dok god se format poruke ne promeni, komponenta A ne oseća razliku.
Drugo, podržana asinhrona obrada. Komponenta A nakon slanja poruke ne mora da čeka odgovor, može da radi druge stvari. Kada odgovor stigne, obradi ga.
Treće, lako proširenje. Nova komponenta C samo treba da sluša poruke na bus-u, bez izmene ostalih komponenti.
Lao Wang pita: "A kako sam Agent radi? Da li je rezidentni proces?"
03. Da li je Agent rezidentni proces?
Kažem: "Ne, Agent je per-session prolazna instanca."
Lao Wang podiže obrvu: "Šta to znači?"
Objašnjavam: "Svaki razgovor je jedan pun ciklus učitavanja-izvršenja-uništavanja."
"Kada korisnik pokrene razgovor:"
- Faza učitavanja: Čita konfiguracione fajlove poput AGENTS.md, SOUL.md, inicijalizuje ličnost i sposobnosti Agenta
- Faza izvršenja: Prima korisnički ulaz, poziva LLM za odgovor, izvršava alate, vraća rezultat
- Faza uništavanja: Razgovor završava, Session se snima na disk, resursi se oslobađaju

"Ovaj dizajn ima dve prednosti:"
Prvo, ušteda resursa. Agent ne mora stalno da zauzima memoriju, učita se samo za vreme razgovora.
Drugo, konfiguracija radi odmah. Svaki run ponovo čita workspace fajlove, promena konfiguracije ne zahteva restart servisa.
Lao Wang pita: "Kako se Session upravlja?"
04. Kako Session implementira on-demand učitavanje?
Kažem: "Učitavanje Session-a je lenjo (lazy)."
"Kada poruka stigne i rutira se na SessionKey, OpenClaw traži sessions.json da dobije trenutni SessionId, a zatim učita .jsonl fajl tog SessionId-a u Agenta."
Lao Wang pita: "Ako je Session predug, da li će puknuti context LLM-a?"
Mehanizam optimizacije Session-a
Kažem: "OpenClaw u fazi učitavanja Session-a u LLM radi dve stvari:"
A. Kompresija i persistencija
Kada Session priđe gornjoj granici context-a, OpenClaw automatski navodi Agenta da upiše Memory, a zatim kompresuje Session. Kompresovani sadržaj se snima na disk, ne gubi se.

Konkretno, Compaction radi sledeće:
- Analizira sve poruke u Session-u
- Prepoznaje važne informacije (činjenice koje je korisnik izričito naveo, zaključke razgovora i sl.)
- Upisuje te informacije u Memory
- Komprimuje originalne poruke u sažetak, smanjuje zauzeće token-a
B. Pruning
Pre slanja LLM-u, privremeno se skraćuju stari tool rezultati. Na primer, alat pretrage vrati 100 rezultata, ali LLM treba samo prvih 10, ostatak se odseca.
Strategije prunninga obuhvataju:
- Zadržavanje samo najnovijih N poruka
- Zadržavanje samo sažetka rezultata poziva alata, ne i celog izlaza
- Spajanje sličnih poruka
Lao Wang pita: "Koja je razlika između Compaction i Pruning?"
Kažem: "Compaction je perzistentan, upisuje važne informacije u Memory i čuva ih dugoročno. Pruning je privremen, samo privremeno skraćuje ono što se šalje LLM-u, ne menja fajl Session-a."
"Da pojednostavnim: Compaction je kao da važne beleške prepisuješ u svesku da ih trajno sačuvaš. Pruning je kao da privremeno precrtavaš nebitne stvari na papiru da bi lakše pročitao."
Lao Wang pita: "Kako Agent odlučuje kako da koristi Memory?"
05. Detaljna analiza mehanizma Memory
Kažem: "Memory je jedan od najvažnijih mehanizama OpenClawa, daje Agentu sposobnost 'pamćenja'."
Kratkoročno pamćenje (Session): Kontekst tekućeg razgovora, čuva se u memoriji. Sadrži korisnički ulaz, odgovore Agenta, rezultate poziva alata.
Dugoročno pamćenje (Memory): Perzistentno pamćenje kroz razgovore, čuva se na disku. Sadrži korisničke preference, istorijske činjenice, važne zaključke.

Lao Wang pita: "Kako ta dva pamćenja sarađuju?"
Tok rada Memory-ja
Kažem: "Rad Memory-ja se deli u tri faze:"

Faza 1: Upis u Memory
Kada Session priđe gornjoj granici context-a, OpenClaw pokreće mehanizam Compaction. Agent analizira sadržaj tekućeg Session-a, izdvaja važne informacije i upisuje ih u Memory.
Upisani sadržaj obuhvata:
- Činjenice koje je korisnik izričito naveo ("sviđa mi se Wang Er")
- Važne zaključke iz razgovora ("projekat koristi mikroservisnu arhitekturu")
- Vredne informacije koje je Agent generisao ("rezultati pretrage pokazuju...")
Faza 2: Snimanje Memory-ja
Upisani Memory se čuva u fajlu memory.sqlite.

Svaki Memory sadrži: content — sadržaj pamćenja, timestamp — vreme upisa, importance — važnost (1-10), tags — oznake za pretragu.
Faza 3: Čitanje Memory-ja
Kada novi razgovor počne, OpenClaw na osnovu tekućeg sadržaja razgovora pretražuje relevantne Memory-je i učitava ih u kontekst Agenta.
Strategije pretrage obuhvataju:
- Poklapanje ključnih reči: pretraga na osnovu ključnih reči iz korisničkog ulaza
- Semantička sličnost: vektorska pretraga, pronalazi semantički povezane Memory-je
- Vremensko opadanje: noviji Memory ima veći prioritet
Lao Wang pita: "Kako izbeći eksploziju Memory-ja?"
Strategije optimizacije Memory-ja
Kažem: "Loše upravljan Memory-ja zaista dovodi do pada efikasnosti pretrage. OpenClaw ima nekoliko strategija optimizacije:"
1. Ocenjivanje važnosti. Prilikom upisa, Agent ocenjuje svaki Memory. Samo Memory-ji čija važnost pređe prag se zadržavaju.
2. Redovno čišćenje. OpenClaw povremeno čisti istekle Memory-je. Podrazumevano zadržava 30 dana, podesivo konfiguracijom.
3. Spajanje sličnih Memory-ja. Ako je više Memory-ja slično po sadržaju, OpenClaw ih automatski spaja, izbegava duplikate.
4. Tiered storage. Često pristupani Memory-ji idu u memoriju, retko pristupani na disk, balansira se performansa i kapacitet.
Lao Wang pita: "Agent koristi Memory na dva načina, koji?"
Razlika između sessions_send i sessions_spawn
Kažem: "Agent koristi Memory na dva načina: sessions_send i sessions_spawn."
sessions_send: Šalje poruku drugom Agentu i čeka odgovor. Kao poziv funkcije, sinhrono blokirajuće.
sessions_spawn: Izvodi novu instancu Agenta koja radi nezavisno. Kao multithreading, asinhrono neblokirajuće.
Lao Wang pita: "Koja je metoda za koju situaciju?"
Kažem:
- sessions_send je za zadatke koji zahtevaju koordinaciju. Na primer jedan Agent pretražuje, drugi sažima, Agent za pretragu šalje rezultat Agentu za sažimanje.
- sessions_spawn je za paralelnu obradu. Na primer istovremeno se prate više izvora podataka, svaki izvor obrađuje jedan Agent, ne mešaju se.

Lao Wang pita: "Da li sadržaj komunikacije sessions_send ima mehanizam isteka?"
Kažem: "Ima. OpenClaw povremeno čisti podatke isteklog Session-a, podrazumevano zadržava 7 dana. Vreme zadržavanja je podesivo."
Intervjuer pita: "Kako je implementirana komunikacija između Agenata?"
06. 8 konfiguracionih fajlova Agenta?
Lao Wang pita: "Malopre si pomenuo AGENTS.md, SOUL.md, čemu služe ovi konfiguracioni fajlovi?"
Kažem: "Svaki Agent ima svoj odgovarajući workspace, u kojem je 8 osnovnih konfiguracionih fajlova."

"Ovih 8 fajlova čine kompletnu ličnost Agenta, nedostaje bilo koji i ne valja."

AGENTS.md: Definiše granice sposobnosti Agenta. Obuhvata ime, opis, system prompt, ponašanje i ograničenja Agenta. Ovo je najvažniji konfiguracioni fajl.
SOUL.md: Ubacuje dušu u Agenta. Definiše karakter, ton, vrednosti Agenta. Na primer da Agent bude duhovit, strog ili profesionalan.
TOOLS.json: Određuje zabranjene alate Agenta. Definiše koje alate Agent sme da koristi i parametre i povratne vrednosti svakog alata.
SKILLS.json: Konfiguriše koje Skills Agent učitava. Može precizno da kontroliše koje se Skills učitavaju, izbegava prepunjavanje context-a zbog previše Skills-a.
MEMORY.json: Konfiguriše strategije čuvanja i pretrage dugoročnog pamćenja.
SESSION.json: Konfiguriše strategiju upravljanja Session-om, uključujući prag kompresije i vreme zadržavanja.
ROUTER.json: Konfiguriše pravila rutiranja poruka, odlučuje koji Agent obrađuje koju poruku.
CONFIG.json: Ostale razne konfiguracije, kao što su izbor LLM modela, API Key itd.
Kažem: "AGENTS definiše granice sposobnosti, SOUL ubacuje dušu, TOOLS određuje zabrane — ovih 8 fajlova čine kompletnu ličnost Agenta."
Lao Wang pita: "Šta konkretno sadrži AGENTS.md?"
07. Šta je pisano u AGENTS.md?
Kažem: "Fajl AGENTS.md je suštinski najvažniji prompt fajl OpenClawa."
"Detaljno opisuje proces pokretanja Agenta i proces upravljanja Memory-jem."

Proces pokretanja: Definiše korake koje Agent izvršava pri pokretanju, uključujući učitavanje konfiguracije, inicijalizaciju Memory-ja, registraciju alata.

Proces upravljanja Memory-jem: Definiše kada se upisuje u Memory, kada se čita, kako se kompresuje Session.
U AGENTS.md jasno piše:
- Kada dužina Session-a pređe određeni broj token-a, pokreće se Compaction
- Prilikom upisa u Memory, kako se ocenjuje važnost
- Prilikom čitanja Memory-ja, kako se sortira i filtrira

Specifikacija poziva alata: Definiše format poziva alata, obradu grešaka, mehanizam timeout-a.
Obuhvata:
- JSON format poziva alata
- Strategiju retry-ja kada izvršenje alata ne uspe
- Obradu timeout-a alata

Bezbednosna ograničenja: Definiše šta Agent ne sme da radi, na primer ne sme da briše sistemske fajlove, ne sme da pristupa osetljivim podacima.
Lao Wang pita: "Čemu služi SOUL.md?"
Ubacivanje duše u Agenta
Kažem: "Ako AGENTS.md definiše sposobnosti Agenta, SOUL.md definiše karakter Agenta."

"U SOUL.md se mogu definisati:"
- Ton i stil: formalan, opušten, duhovit, ozbiljan
- Vrednosti: korisnik prvo, efikasnost prvo, bezbednost prvo
- Pravila ponašanja: aktivna potvrda, pažljive operacije, transparentna komunikacija
"Na primer možeš da Agentu daš ličnost iskusnog starijeg programera koji priča direktno, bez okolišenja. Ili ličnost strpljivog učitelja koji detaljno objašnjava, korak po korak."
"To je vrednost SOUL.md: iste sposobnosti, različite ličnosti."
Lao Wang pita: "Kako se učitavaju Skills?"
08. Da li previše Skills-a izaziva probleme sa performansama?
Kažem: "Previše Skills-a zaista opterećuje context Agenta, a čak i pogrešni Skills-i mogu dovesti do toga da Agent pogrešno pozove alat."
"Zato Agent moramo fino da kontrolišemo."

Kažem: "Na primer Skill brave_search omogućava Agentu da efikasno pretražuje mrežu, to bi trebalo da bude osnovni opšti Skill."
"A Skill poput code review-a treba da učita samo Agent za razvojne scenarije."
Lao Wang pita: "Kako izbeći eksploziju niskokvalitetnih Skills-a?"
Kažem: "Tri principa:"
Princip minimalizma: Učitavaj samo potrebne Skills, nemoj pohlepno. Generalno, Agentu je dovoljno 5-10 Skills-a.
Princip ocenjivanja: Koristi mehanizam Evals da testiraš kvalitet Skills-a. Napiši test case, neka Agent izvrši, pa pogledaj da li rezultat odgovara očekivanom. Nevaljane Skills ne koristi.
Princip verzija: Skills upravljaj verzionisanjem, izbegavaj konflikte. Na primer ako brave_search ima v1 i v2, obezbedi da Agent učita pravu verziju.
Lao Wang pita: "Koja je razlika između TOOLS.json i SKILLS.json?"

Kažem: "Ova dva fajla se lako brkaju, ali su im odgovornosti različite."
TOOLS.json: Definiše alate koje Agent sme da koristi. Alat je niskonivojska sposobnost, kao što su čitanje fajla, mrežni zahtev, upit nad bazom.
SKILLS.json: Definiše Skills koje Agent učitava. Skill je visokonivojski omotač, kao što su pretraga, code review, analiza podataka. Jedan Skill može pozivati više Tool-ova.
"Da pojednostavnim: Tools su 'ruke', Skills su 'veštine'."
"Na primer Skill 'pretraga' možda poziva Tool 'mrežni zahtev' i Tool 'parsiranje sadržaja'."
Lao Wang pita: "A MEMORY.json i SESSION.json?"
Kažem: "Ova dva fajla konfigurišu strategije upravljanja Memory-jem i Session-om."

MEMORY.json:
- Putanja čuvanja: gde se čuva fajl Memory-ja
- Maksimalni kapacitet: koliko Memory-ja najviše čuvati
- Vreme zadržavanja: koliko dugo se čuva Memory
- Strategija pretrage: kako na osnovu ulaza pretraživati relevantne Memory-je
SESSION.json:
- Prag kompresije: kada dužina Session-a pređe koliko token-a pokrenuti Compaction
- Vreme zadržavanja: koliko dugo se čuva fajl Session-a
- Strategija prunninga: kako skraćivati stare tool rezultate
"Ove dve konfiguracije direktno utiču na 'pamćenje' Agenta. Dobro podešen Agent pamti važne informacije; loše podešen ili zaboravlja ili mu context eksplodira."
Lao Wang pita: "Čemu služi ROUTER.json?"
ROUTER.json: Rutiranje poruka
Kažem: "ROUTER.json konfiguriše pravila rutiranja poruka, odlučuje koji Agent obrađuje koju poruku."
"U sistemu sa više Agenata, više njih može istovremeno raditi. ROUTER.json definiše pravila rutiranja, na primer:"
- Poruke koje sadrže ključnu reč "kod" rutiraju se CodeAgentu
- Poruke koje sadrže ključnu reč "pretraga" rutiraju se SearchAgentu
- Podrazumevano se rutira GeneralAgentu
"Tako korisnik pošalje jednu poruku i sistem automatski pronalazi najpogodnijeg Agenta da je obradi."
Lao Wang pita: "A CONFIG.json?"
CONFIG.json: Razne konfiguracije
Kažem: "CONFIG.json sadrži ostale razne konfiguracije, uključujući:"
- Izbor LLM modela: Claude, GPT ili GLM
- API Key: API ključeve različitih modela
- Nivo logovanja: DEBUG, INFO, WARN, ERROR
- Timeout: postavke timeout-a različitih operacija
"Ove konfiguracije su prilično opšte, različiti Agenti mogu imati slične vrednosti."
ending
Šta je zaista smisao bakćenja sa OpenClawom?
Nije da se hvališ, nije da juriš trendove.
Nego da razumeš osnovnu logiku AI-ja.
Kada svojom rukom konfigurišeš Agenta, kada razumeš kako se Session učitava, kako se Memory upravlja, kako se Skills raspoređuju, tvoje razumevanje AI-ja se više ne zadržava na nivou "pozovi API".
Počećeš da razmišljaš:
- Ako bih dizajnirao Agenta, kako bih projektovao njegov mehanizam pamćenja?
- Ako bih dizajnirao sistem sa više Agenata, kako bih projektovao njihovu komunikaciju?
- Ako bih dizajnirao sistem upravljanja Skills-ima, kako bih izbegao eksploziju niskokvalitetnih Skills-a?
Na ova pitanja nema standardnih odgovora. Ali proces razmišljanja o njima učiniće te boljim inženjerom.
Vrednost tehnologije nije u tome koju alatku koristiš, nego u tome koju princip razumeš.
OpenClaw je tek početak.
Kada razumeš njegovu arhitekturu, shvatićeš: ah, to je Agent. A onda možeš tim znanjem da projektuješ Agenta koji više odgovara tvom scenariju, da gradiš kompleksnije AI sisteme.
To je pravi smisao bakćenja sa OpenClawom.
