Intervjuer: "Kako se implementira OpenClaw multi-Agent rutiranje?", ja uzvraćam: "dmPolicy+bindings, vi ovo zovete teškim pitanjem?"
Lao Wang je lagano prišao sa šoljom čaja: "Onaj prethodni članak sa pitanjima sa intervjua o OpenClaw-u, video sam da je odjek bio dobar. Šta kažeš da napišemo još jedan, dublji? Integracija više Feishu aplikacija, rutiranje više Agenata, Gateway arhitektura — to su ta pitanja koja intervjueri vole da postavljaju."
Rekao sam: "Upravo sam to mislio. Prethodni članak je objavljen pre sat vremena, a čitanja su već prešla 7000, lajkovi i delijenja su jaki, što pokazuje da ljudi zaista imaju potrebu za ovakvim rastavljanjem pitanja sa intervjua."
Prethodni članak je ovde, ko nije video može prvo da baci pogled:
https://mp.weixin.qq.com/s/z02mZYqn3Wv-euhhPIBYGQ

Rekao sam: "Ovog puta ćemo iz nekoliko nivoa — integracija više Feishu aplikacija, dmPolicy strategija, Gateway gateway arhitektura, praktično otkrivanje poruka, kao i najnovije verzije osobina — da raspetljamo OpenClaw do kraja."
Lao Wang se nasmejao: "Sviđa mi se tvoj istraživački duh. Kreni."
01,Integracija više Feishu aplikacija
Lao Wang me nije dugo ostavio da se uvučem u priču, direktno je pitao: "Zašto za svaki Agent koristiti zasebnu Feishu aplikaciju?"
Rekao sam: "Zbog izolacije. U enterprise scenarijima najveći problem nije to što ne mogu da se konfigurišu, već to što su dozvole, rutiranje, revizija i domeni otkaza sve izmešani. Jedan Agent prema jednoj Feishu aplikaciji — tek tada su granice jasne."

Suštinska logika multi-aplikacione konfiguracije
Feishu plugin OpenClaw-a podržava multi-aplikacionu konfiguraciju, ključ je u polju defaultAccount. Kada u openclaw.json konfigurišete više Feishu aplikacija, obavezno morate navesti jednu podrazumevanu aplikaciju:
{
"channels": {
"feishu": {
"defaultAccount": "app1",
"accounts": [
{
"appId": "cli_xxx1",
"appSecret": "xxx",
"encryptKey": "xxx",
"verificationToken": "xxx"
},
{
"appId": "cli_xxx2",
"appSecret": "xxx",
"encryptKey": "xxx",
"verificationToken": "xxx"
}
]
}
}
}Lao Wang me prekide: "Sačekaj, šta tačno radi ovaj defaultAccount?"
Rekao sam: "Kada Gateway primi poruku, ako ne može preko bindings pravila da je upari sa specifičnim Agentom, koristi aplikaciju koju navodi defaultAccount za odgovor. To je rezervna strategija."
Uparivanje: Naučiti bota ko ste vi
Lao Wang je nastavio: "Znam za uparivanje. Ne želim definicije pojmova, nego koji problem to rešava u enterprise scenarijima?"
Rekao sam: "Uparivanje je bezbednosni mehanizam OpenClaw-a. Podrazumevano, bot ne reaguje ni na kakve poruke, osim ako sami ne završite uparivanje."

Postoje dva načina uparivanja:
Prvi, uparivanje preko privatnog razgovora. U Feishu-u pretražite bota i pošaljete privatnu poruku, bot će vam odgovoriti sa uparivanim kodom. Taj kod saopštite OpenClaw-u i uspostavili ste odnos jedan-na-jedan.
openclaw pairing approve feishu xxxDrugi, uparivanje u grupi. Dodajte bota u grupu i pomenuvši ga pošaljite komandu za uparivanje. Bot će identifikovati ID grupe i dodati je na listu dozvoljenih.
Lao Wang je pitao: "Zašto toliko komplikacija? Zar ne bi bilo lakše da bot odgovara na sve poruke?"
Rekao sam: "Bezbednost na prvom mestu. Razmisli, ako je bot otvoren za sve, a neko zlonamerno zove interfejs, tvoji tokeni bi nestali za tren. Mehanizam uparivanja služi kao dodatni sloj kontrole pristupa."
Najbolje prakse za enterprise deployment
Kada bih radio enterprise deployment, planirao bih ovako:
- Razvojno okruženje: jedna Feishu aplikacija, vezana za test grupe
- Produkcijsko okruženje: jedna Feishu aplikacija, vezana za zvanične grupe
- Namenski Agent: za svaki poslovni scenario zasebna aplikacija, na primer Agent za pregled koda, Agent za operacije, Agent za korisničku podršku
Lao Wang je klimnuo glavom: "To je zaista jasno. A šta ako su dve aplikacije dodate u istu grupu, kome će poruka biti prosleđena?"
Rekao sam: "Ovo vodi ka prioritetu rutiranja. OpenClaw koristi princip 'najspecifičnije prvo' — ako bindings jasno navode da je ID grupe vezan za neki Agent, ide po bindings; ako nije navedeno, koristi se defaultAccount kao rezerva. Ali dve aplikacije koje istovremeno odgovaraju u istoj grupi treba izbegavati, lako nastane haos."
02,Mehanizam rutiranja više Agenata
Lao Wang je spustio šolju: "Malopre si pomenuo bindings, kako zapravo radi ovo rutiranje više Agenata?"
Rekao sam: "Ovde ključno nisu pojmovi, već odnos kombinacija. Ono što zaista određuje rutiranje više Agenata su upravo dmPolicy i bindings."
dmPolicy: Kontrola pristupa privatnim porukama
dmPolicy je skraćenica od Direct Message Policy i kontroliše kako bot obrađuje privatne poruke. Na raspolaganju su tri strategije:
{
"dmPolicy": {
"app1": "allow", // Dozvoli sve privatne poruke
"app2": "deny", // Odbij sve privatne poruke
"app3": "pairing" // Dozvoli samo uparene korisnike
}
}Lao Wang je pitao: "Kako odabrati u stvarnim scenarijima?"
Rekao sam: "Zavisi od scenarija. Za interne alate, allow je najpraktičniji; za bota za korisničku podršku okrenutog eksternim korisnicima, obavezno pairing, da se spreči zloupotreba; deny se obično koristi za Agente u čisto grupnim scenarijima."
bindings: Pravila preciznog rutiranja
bindings je ključni mehanizam rutiranja više Agenata u OpenClaw-u. On definiše kako bi poruke trebalo da se distribuiraju različitim Agentima.
{
"bindings": [
{
"agentId": "CodeReview",
"match": {
"channel": "feishu",
"accountId": "cli_xxx1",
"peer": {
"type": "group",
"id": "oc_xxx"
}
}
},
{
"agentId": "DevOps",
"match": {
"channel": "feishu",
"accountId": "cli_xxx2"
}
}
]
}Lao Wang je pokazao na konfiguraciju i pitao: "Imena polja poznajem. Reci mi direktno, kako ova polja učestvuju u uparivanju rutiranja i oceni prioriteta?"
Rekao sam: "channel je izvor poruke, na primer feishu, wecom; accountId je App ID Feishu aplikacije; peer je informacija o pošiljaocu, type može biti user ili group, id je odgovarajući ID."
"Brate, obrati pažnju na prioritet ovog pravila rutiranja — bindings koristi princip 'najspecifičnije prvo'. Ako jedna poruka istovremeno odgovara dva bindings-a, koristi se onaj čiji je match uslov specifičniji."
Na primer:
- Binding A: navodi samo channel=feishu
- Binding B: navodi channel=feishu + accountId=cli_xxx
- Binding C: navodi channel=feishu + accountId=cli_xxx + peer.id=oc_xxx
Ako poruka dolazi iz feishu aplikacije cli_xxx iz grupe oc_xxx, prvo će se upariti sa Binding C, jer je najspecifičniji.

groupPolicy: Strategija za grupe
Pored dmPolicy, postoji i groupPolicy koji kontroliše ponašanje u grupama:
{
"groupPolicy": {
"requireMention": true, // Da li je u grupi potrebno pomenuti bota
"allowAnonymous": false // Da li su dozvoljene anonimne poruke
}
}Lao Wang je pitao: "Na requireMention sam već naišao. Ponekad u grupi pomene bota i on me ignoriše, je li to problem u ovoj konfiguraciji?"
Rekao sam: "Da. Podrazumevano, bot u grupi reaguje samo na poruke u kojima je pomenut. Ako želiš da sluša sve poruke, postavi requireMention na false. Ali imaj na umu da će to povećati potrošnju tokena i može dovesti do problema sa privatnošću."
03,Analiza Gateway gateway arhitekture
Lao Wang je spustio šolju na sto: "Konfiguracija sa strane. Gateway je suština, rastavi mi ga od osnove."
Ključne odgovornosti Gateway-a
Rekao sam: "Gateway je 'nervni centar' OpenClaw-a, zadužen za tri stvari:"

Čitav lanac izgleda ovako:
Feishu poruka → Gateway → Agent → veliki model → Agent → Gateway → Feishu odgovorWebSocket konekcija i Token autentikacija
Lao Wang je nastavio: "Kako Gateway i Feishu zapravo komuniciraju? Nemoj samo da kažeš dugačke konekcije, objasni ključni lanac."
Rekao sam: "WebSocket dugačka konekcija. Feishu open platforma nudi mehanizam za pretplatu na događaje, Gateway pri pokretanju kod Feishu-a registruje WebSocket konekciju. Nakon toga Feishu aktivno gura poruke."
Način autentikacije koristi Token mehanizam. verificationToken i encryptKey koji se konfigurišu u openclaw.json služe za proveru izvora poruke i dešifrovanje sadržaja poruke.
{
"gateway": {
"port": 18789,
"auth": "token",
"host": "0.0.0.0"
}
}Lao Wang je pitao: "Šta još može da stoji u ovom auth polju osim token?"
Rekao sam: "Trenutno je uglavnom token autentikacija. Za intranet enterprise deployment, može se kombinovati sa IP listom dozvoljenih, TLS sertifikatima i drugim metodama za jačanje bezbednosti."
Dizajn arhitekture visoke dostupnosti
Lao Wang je nastavio: "A ako zaista ideš u produkciju, kako rešavaš problem single point-a kod Gateway-a? Nemoj mi reći 'zvanično će jednog dana podržati'."
Rekao sam: "OpenClaw zvanično trenutno nema rešenje za visoku dostupnost, Gateway je single point. Ali možemo kroz arhitektonski dizajn da ostvarimo visoku dostupnost:"
Opcija jedan: Gateway cluster + load balancing
Deployuj više Gateway instanci, ispred njih stavi load balancer (kao što je Nginx). Feishu-ove WebSocket konekcije se mogu distribuirati na različite instance.
Feishu → load balancer → Gateway cluster (više instanci)Opcija dva: Spuštanje stanja sesije
Prenesi stanje sesije sa lokalnog diska u Redis, tako da Gateway instance postaju bez stanja. Ako bilo koja instanca padne, druge mogu preuzeti sesiju.
{
"memory": {
"storage": "redis",
"redis": {
"host": "localhost",
"port": 6379,
"db": 0
}
}
}Opcija tri: Red zadataka
Za dugotrajne zadatke, koristi red poruka (kao RabbitMQ) za ublažavanje, kako Gateway ne bi bio blokiran.
Lao Wang je klimnuo glavom: "Da li su ove opcije kompleksne za implementaciju?"
Rekao sam: "Zavisi od sposobnosti tima. Za mali tim, predlažem prvo single instancu + nadzor i alarme; kada se opterećenje poveća, razmotri cluster opciju. Ne treba previše optimizirati pre vremena."
Upravljanje sesijom i mehanizam kompresije
Lao Wang nije ispustio ovaj detalj: "Gde tačno pada kontekst višekružnog razgovora? Zašto nakon restarta Gateway-a može da se nastavi?"
Rekao sam: "Podaci sesije se podrazumevano čuvaju u ~/.openclaw/workspaces/<agent>/memory/ direktorijumu. Svaki razgovor se serijalizuje i čuva, identifikovan session_id-om. Nakon restarta Gateway-a stanje sesije se može obnoviti."
Ali ovde postoji zamka — podaci sesije se stalno gomilaju, posebno u dugim razgovorima. OpenClaw nudi mehanizam kompresije:
{
"memory": {
"compression": true,
"maxHistory": 20, // Zadrži poslednjih 20 rundi razgovora
"summarizeThreshold": 10 // Nakon 10 rundi automatski sažmi
}
}Lao Wang je pitao: "Šta znači automatsko sažimanje?"
Rekao sam: "Kada broj rundi razgovora premaši threshold, Agent će komprimovati prethodni sadržaj u sažetak, zadržavajući samo ključne informacije. Time se kontroliše potrošnja tokena i izbegava prelivanje kontekstnog prozora."
Praktično upravljanje kontekstnim prozorom
Lao Wang je nastavio: "Nemoj samo da pričaš o konfiguraciji kompresije. Ako kontekstni prozor zaista puca, kako to rešavaš u produkciji?"

Iskustvo jedno: Slojeviti dizajn memorije
Podeli memoriju u tri sloja:
- Kratkoročna memorija: poslednjih 5 rundi razgovora, potpuno zadržano
- Srednjeročna memorija: rundi 6-20, komprimirano
- Dugoročna memorija: preko 20 rundi, zadržan samo ključni sažetak
{
"memory": {
"layers": [
{"type": "short", "rounds": 5, "compression": "none"},
{"type": "medium", "rounds": 15, "compression": "light"},
{"type": "long", "compression": "heavy"}
]
}
}Iskustvo dva: Izdvajanje ključnih informacija
U BOOT.md recite Agentu koje informacije mora zapamtiti, a koje može odbaciti:
## Strategija memorije
Informacije koje moraju ostati:
- Identitet i preferencije korisnika
- Kontekst trenutnog zadatka
- Ključni poslovni parametri
Informacije koje se mogu odbaciti:
- Učtive reči
- Ponovljena potvrđivanja
- Privremeni međurezultatiIskustvo tri: Mehanizam redovnog čišćenja
Podesi zakazani zadatak koji automatski čisti istekle podatke sesija:
# Očisti sesije starije od 7 dana
openclaw memory cleanup --before 7d
# Očisti sesije određenog Agent-a
openclaw memory cleanup --agent CodeReview --before 3dLao Wang je uzdahnuo nakon što je saslušao: "Ovi detalji se ne nalaze u zvaničnoj dokumentaciji, sve je iskustvo stečeno kroz zamke."
Upravljanje životnim ciklusom Gateway-a
Lao Wang je nastavio: "Nemoj samo o komandama. Pokretanje, zaustavljanje, restart Gateway-a — podrenderer životnog ciklusa rastavi mi u detalje."

Lao Wang je pitao: "Ako Gateway padne, da li se gubi sesija?"
Rekao sam: "Zavisi od konfiguracije. Ako je uključena persistencija, podaci sesije se redovno upisuju na disk i mogu se obnoviti nakon pada. Ali zadaci koji se trenutno obrađuju mogu biti prekinuti."
Graceful shutdown i obrada signala
Nastavio sam: "Ako intervjuer nastavi da pritiska o graceful shutdown-u, ove tačke moraš da izneseš:"
- Prestani da primaš nove konekcije
- Sačekaj da se postojeće konekcije obrade (podrazumevani timeout 30 sekundi)
- Sačuvaj stanje sesije
- Očisti resurse i izađi
# Graceful shutdown
kill -TERM <pid>
# Prisilno gašenje (ne preporučuje se)
kill -9 <pid>Lao Wang je pitao: "A šta ako zadatak nije završen ni nakon 30 sekundi?"
Rekao sam: "Nakon timeout-a će biti prinudno prekinut, nezavršeni zadaci se gube. Zato je najbolje da složeni zadaci budu dizajnirani kao reentrantni, sa podrškom za nastavak od tačke prekida."
04,Bot ne prima poruke?
Lao Wang je uzdahnuo: "Imao sam problem — u grupi bot ne reaguje na pominjanje, ali u privatnom razgovoru radi normalno. Trebalo mi je pola dana da otkrijem uzrok."
Rekao sam: "Ovo je najčešći problem pri korišćenju OpenClaw-a. Daću ti sistematski proces otkrivanja."
Prvi korak: Proveri konfiguraciju pretplate na događaje
Ako Feishu bot ne prima poruke, 90% je do toga što pretplata na događaje nije dobro podešena.
Ovaj deo nemoj otkrivati na osećaj, direktno se rukovodite zvaničnom Feishu dokumentacijom o konfiguraciji pretplate na događaje — to štedi najviše vremena.
Otvori Feishu open platformu, uđi u svoju aplikaciju i proveri ove tačke:
- Pretplata na događaje je uključena: potvrdi da je prekidač u uključenom stanju
- Način pretplate je ispravno odabran: preporučuje se dugi konekcijski mod (WebSocket), a ne HTTP callback
- Događaj za pretplatu je dodat: obavezno dodati
im.message.receive_v1događaj

Drugi korak: Proveri dozvole bota
Feishu aplikacija mora da zatraži specifične dozvole da bi primala poruke:
im:chat:readonly- čitanje informacija o grupiim:message:send- slanje porukaim:message:receive- primanje poruka
Lao Wang je pitao: "Dozvole sam tražio, ali i dalje ne radi?"
Rekao sam: "Nakon odobrenja dozvola, morate da objavite verziju da bi stupile na snagu. Mnogi zaborave da kliknu 'Objavi', pa dozvole ostanu u stanju čekanja."
Treći korak: Proveri Gateway logove
Ako je konfiguracija ispravna, pogledaj Gateway logove:
openclaw gateway se pokreće, vidljivo u konzoli.
Najčešće greške su:
Greška jedan: Pogrešan App ID ili App Secret
Error: Invalid app credentialsRešenje: Idi u Feishu pozadinu i ponovo kopiraj ispravne akreditive.
Greška dva: Encrypt Key se ne podudara
Error: Failed to decrypt messageRešenje: Proveri da li se encryptKey u openclaw.json podudara sa onim u Feishu pozadini.
Greška tri: Neuspela WebSocket konekcija
Error: WebSocket connection closed unexpectedlyRešenje: Proveri mrežnu povezanost, potvrdi da server može da pristupi Feishu-ovoj WebSocket adresi.
Četvrti korak: Proveri konfiguraciju grupe
Ako privatni razgovor radi normalno, ali u grupi nema odgovora, proveri:
- Da li je bot dodat u grupu: u podešavanjima grupe potvrdi postojanje bota među članovima
- Da li je uključeno pominjanje: proveri konfiguraciju
groupPolicy.requireMention - Da li je grupa onemogućena: Feishu enterprise verzija može ograničiti upotrebu bota u određenim grupama
Lao Wang je dodao: "Još jedna zamka — podešavanje u Feishu grupi 'samo admin može da pomene sve', može uticati na odgovor bota."
Rekao sam: "Da, i na to treba obratiti pažnju. Pored toga, ako u grupi ima više botova, može doći do takmičenja za poruke, predlažem samo jednog OpenClaw bota po grupi."
Brza referentna tabela uobičajenih problema
Skupio sam pristup otkrivanju u brzu referentnu tabelu i predao Lao Wang-u:
| Simptom | Mogući uzrok | Rešenje |
|---|---|---|
| Privatni razgovor radi, grupa ne reaguje | Nije omogućena dozvola im:message.group:readonly | Zatraži dozvolu i objavi verziju |
| Pominjanje bota bez reakcije | requireMention konfigurisan kao false, ali bez pominjanja | Proveri konfiguraciju ili potvrdi ispravan format pominjanja |
| Ozbiljno kašnjenje poruka | Gateway preopterećen ili model sporo odgovara | Proveri iskorišćenost resursa Gateway-a, optimizuj konfiguraciju modela |
| Deo poruka nedostaje | Konflikt u konkurentnoj obradi | Proveri bindings konfiguraciju, izbegavaj takmičenje više Agenata |
| Bot duplo odgovara | Dupla pretplata na događaje ili konflikt više Gateway instanci | Proveri konfiguraciju pretplate u Feishu pozadini, osiguraj single instancu |
Lao Wang je klimnuo glavom: "Ovo je praktično, sačuvao sam sliku."
Peti korak: Test mrežne povezanosti
Ako ništa od gore navedenog nije problem, testiraj mrežnu povezanost:
# Test povezanosti sa Feishu API-jem
curl -I https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal
# Test WebSocket povezanosti
wscat -c wss://ws.feishu.cn/Ako mreža ne radi, proveri firewall servera, sigurnosne grupe i proxy konfiguraciju.
Ako ste ionako u proxy okruženju, nemojte testirati samo Feishu API, prelistajte i OpenClaw-ovu proxy konfiguracionu dokumentaciju, jer WebSocket može izgledati kao da se ne povezuje, a zapravo proxy sloj nije dobro podešen.
05,Tumačenje novih osobina u verziji 2026.3.11
Lao Wang je nastavio: "Da li se isplati nadogradnja na ovo ažuriranje od 11. marta? Nemoj mi nabrajati, izdvoji najvažnije promene."
Nadogradnja memorije
Ranije se čuvala u md fajlu, sada je u sqlite-u.

Podrška za GPT-5.4
Dodata je podrška za GPT-5.4. Način konfiguracije:
{
"model": {
"provider": "openai",
"defaultModel": "gpt-5.4",
"profiles": {
"coding": {
"model": "gpt-5.4",
"temperature": 0.2
}
}
}
}ending
Lao Wang je nakon što je saslušao neko vreme ćutao.
Zatim je rekao: "Kada si sve ovo izložio, shvatam da je OpenClaw prilično dubok. Na površini izgleda kao framework za chat bota, ali podrenderer obuhvata arhitektonski dizajn, algoritme rutiranja, distribuirane sesije i bezbednosnu autentikaciju — sve tvrdi tehnički."
Rekao sam: "To je razlog zašto vi intervjueri volite da pitate o OpenClaw-u. On obuhvata sve aspekte inženjerske implementacije AI Agenta — od konfiguracije do principa, od upotrebe do otkrivanja problema — može se ispitati mnogo tačaka."
Ako možeš da savladaš sve ovo danas, na intervjuu ćeš se svakako izdvojiti.
[Vrednost tehnologije ne leži u tome koliko alata si koristio, već u tome koliko duboko ih razumeš.]
OpenClaw je samo jedan od mnogobrojnih AI Agent framework-a. Ali kroz njega možeš videti kompletnu sliku AI inženjerstva — pozivanje modela, rutiranje poruka, upravljanje sesijama, kontrola prava, dizajn visoke dostupnosti — sve su to univerzalne sposobnosti.
Ako savladaš ovo, prebacivanje na druge framework-e će biti brzo.
Alati se menjaju, ali podrenderer principi i način razmišljanja ostaju.
Vidimo se u sledećem, idemo!
