Kinetik ti nudi 500€ da ga isprobaš — u pitanju je marketing agent kakvog bih voleo da sam imao kad sam počinjao. Više detalja ↓
Prethodni deo se završio 16. maja, kada je veza terminala i Telegrama preko tuđeg dodatka konačno proradila — kako smo dotle stigli, pisao sam u sedmom delu. Radila je taman toliko da prestanem da je popravljam, i taman toliko malo da joj ne verujem.
Sve do tog dana radio sam onako kako se u ovoj seriji provlači kao lajtmotiv: menjaš po jednu stvar, gledaš da li se upalilo, pa ideš dalje. Taj pristup je brz dok je problem mali. Kada problem pređe iz "ne radi" u "radi nasumično", isti pristup počinje da te vuče unazad, jer svaka nova zakrpa pokriva simptom koji si upravo video, a ne razlog zbog kog se pojavio.
Ovaj deo je o tome kako smo prestali da krpimo i seli da razumemo kako stvar zapravo funkcioniše — i šta se promenilo kada smo prvi put napravili svoje rešenje umesto da biramo tuđe.
Šta je Telegram u suštini
Telegram spolja izgleda kao aplikacija za poruke, ali za nekoga ko pravi ovakav sistem to su zapravo dvoja vrata.
Prva vrata su botovi. Napraviš bota, dobiješ token — dugačku šifru koja je istovremeno i adresa i ključ — i onda tim tokenom pitaš Telegram: ima li šta novo za mene. Telegram čuva red novih događaja i predaje ti ih. Ključna reč je predaje: kada ti jednom isporuči poruku, ona iz tog reda izlazi. Dva programa sa istim tokenom nisu dve sigurnosne mreže, nego dva igrača koji vuku iz istog špila — svaki dobije deo poruka i nijedan nema ceo razgovor.
Druga vrata su tvoj lični nalog. Tu se ne prijavljuje bot nego ti, istim brojem telefona i istim kodom kao na svom telefonu, kroz biblioteku koja se zove Telethon. Time dobijaš sve što vidiš i sam: stare prepiske, grupe, mogućnost da pišeš kao ti. I tu važi isto pravilo o predaji: ako dva procesa koriste isti ključ sesije, svaki novi događaj dobije samo jedan od njih, i to nasumično.

To je cela tajna nasumičnosti koja me je mučila nedeljama. Poruke se nisu gubile — bile su uredno isporučene, samo ne onome ko ih je čekao.
Kako mi radimo
Da bi se videlo zašto je to bio problem baš kod nas, treba znati kako izgleda naš radni dan.
Kod mene ne postoji jedan agent nego više njih, i svaki ima svoj posao: jedan piše tekstove, drugi vodi operativu, treći kopa po podacima. Svaki od njih živi kao zasebna sesija na računaru koji je uvek upaljen, u drugom gradu od mene. Sesija nije program koji se pokrene i završi — ona traje danima, pamti kontekst posla i čeka šta ću sledeće tražiti.
Ja jesam (previše) za računarom, ali ne želim stalno da budem u terminalu jer radim još beskraj stvari u paraleli, ali često nisam za računarom a posao treba da se uradi bez obzira.
Ono što mi tu treba jeste da svakome od njih mogu da pišem sa telefona, iz prevoza, sa nepotrebnog sastanka ili iz teretane na pauzi, i da odgovor stigne tu gde sam pitao. Zato je Telegram i ušao u priču: otkako su agenti postali velika stvar to je mesto gde provodim ceo dan, UX proizvoda je uglavnom perfektan — prečice na tastaturi na desktopu, nema lagovanja, malolije.
Iz toga izlazi zahtev koji zvuči jednostavno, a nije: pet, deset ili dvadeset dugotrajnih sesija mora da deli jedan te isti kanal ka meni, a da se pritom ne pomešaju — da poruka namenjena piscu ne ode operativi, i da nijedna ne nestane usput.
Kako je izgledao kvar
Šesnaestog maja u 17:07, istog dana kada je tuđi dodatak proradio, već sam pitao agenta da li uopšte možemo sami preko Telethona, i odmah zatim kako da izbegnemo sudar sa drugom Telethon vezom. Pitanje nije bilo teorijsko — večer je pokazala zašto.
Prvih nekoliko poruka je prošlo, naredne nisu. Od 18:04 do 18:19 pet puta sam poslao istu poruku: "da li to moze da sj* sta radim sa telethonom i partnerom". Nisam znao da li išta stiže, pa sam ponavljao. To je najgora vrsta kvara — ne ona koja te zaustavi, nego ona koja te ostavi da nagađaš.
Ispod toga su se krila tri različita problema koja su na površini izgledala isto.
Prvi: dva procesa na istom ključu, pa se poruke dele nasumično. Drugi: agent bi odgovor napisao, ali u terminal umesto u Telegram — za mene je to izgledalo kao da nije odgovorio, a zapravo je odgovorio u prazno. Treći: prepiska koju agent vidi bila je stara, pa je odgovarao na poruku koja više nije bila poslednja.
Kako je osmišljeno rešenje
Prelom u razmišljanju je bio prost, iako mi je trebalo mesec dana da do njega dođem: ako Telegram svaku poruku predaje tačno jednom, onda tačno jedan proces sme da stoji na tim vratima.
Tako je nastao ruter. Jedan proces drži vezu sa Telegramom i ne radi ništa drugo — ne piše tekstove, ne obrađuje zadatke, samo prima i razvrstava. Sesije više ne razgovaraju sa Telegramom direktno; one razgovaraju sa ruterom, a on zna koja poruka kojoj pripada, jer svaka sesija ima svog bota i svoj chat.

Uz to ide druga odluka, koja je zapravo važnija od same arhitekture: prestali smo da se oslanjamo na disciplinu. Agent koji "treba da zapamti" da odgovor ide na Telegram zaboraviće to u nekom retkom slučaju, i taj retki slučaj ću ja doživeti kao ćutanje. Zato svako pravilo koje je jednom prekršeno dobija čuvara — mali program koji na kraju koraka proveri je li se pravilo ispunilo, i sam ispravi ako nije.
Tu se moj način rada konačno promenio. Do tada sam popravljao ono što je puklo. Od tada svaki kvar ostavlja za sobom branu, pa isti kvar ne može da se ponovi na isti način.
Kako je implementirano
Redosled je bio ovakav, i skoro svaki korak ima datum jer je nastao iz konkretnog kvara.
Sedamnaestog maja smo dodali terminal-guard: ako agent pokuša da odgovori samo u terminalu, odgovor se blokira i usmerava na Telegram. Time se odmah videlo da jedan deo "izgubljenih" poruka nikada nije bio izgubljen — stizao je, samo ne meni u telefon.
Dvadeset četvrtog maja smo napravili živu sinhronizaciju svih 482 razgovora, uz freshness-guard koji tera agenta da pre odgovora povuče svežu verziju prepiske. Tu smo i našli pravilo o dva klijenta na istom ključu, koje je objasnilo najveći deo nasumičnosti.
Dvadeset osmog maja je napravljen ruter. Botovi su prestali da se otimaju oko istog kanala jer se više nisu ni sretali na njemu. Dan kasnije smo dodali slanje sa mog naloga, sa prepoznavanjem jezika sagovornika, pa je agent mogao da piše kao ja u bilo koji od tih 482 razgovora.
Bilans te faze zapisao sam tada na slajdu jedne prezentacije ovako: "5 bots, 3 hooks, 2 Telethon sessions, 1 router, 0 flakiness." Pre toga smo probali tuđe MCP servere i dodatke, mislim da i zvaničan, i naprosto nije radilo za naš specifičan slučaj. Kada je agent napisao naše rešenje, stvar je konačno proradila kako treba.
Svaki kvar je postao nova brana
"0 flakiness" na slajdu je značilo da je otimanje oko kanala rešeno, ne da ništa više neće otkazati. Sledećih šest nedelja su to dokazale, kvar po kvar — i svaki je ostavio čuvara.
Sedmog juna sam pisao: "nije stigla meni poruka, ni moja njemu". Devetog: "sto mi nisi odgovorio na TG". Agent je odgovor napravio, ali ga je ostavio u terminalu. Kada se to ponovilo istog dana, dodali smo Stop hook — proveru koja na kraju svakog koraka gleda da li je odgovor zaista poslat i sama ga prosleđuje ako nije.
Jedanaestog juna je grubi restart usred upisa oštetio sesiju, iz čega je nastalo pravilo urednog gašenja.
Trinaestog juna se dogodio najgori mogući kvar te vrste: sesija je ugasila sopstvenu vezu ka Telegramu i prećutala. Moje poruke su ostale u redu čekanja, a agent nije mogao ni da javi šta se desilo, jer je upravo prekinuo kanal kojim bi to javio. Morao sam ručno da ga vratim.
Šesnaestog juna smo našli rupu i u samom čuvaru odgovora. Kratka rana poruka poput "podigao sam se, čitam" ubedila bi ga da je posao završen, pa bi pravi odgovor opet ostao u terminalu. Novi reply-guard zato gleda redosled i veličinu: ako se posle poslednjeg slanja pojavio suštinski tekst, odgovor nije isporučen. Proverili smo ga na šest scenarija.

Šta danas znači "radi"
Danas kroz taj ruter prolazi 19 botova. Slack smo u međuvremenu doveli na isti ulaz, pa agenti na jednom mestu dobijaju poruke iz oba sistema.
Posle sopstvenog rešenja više nije bilo one stare nasumične nepouzdanosti, samo nekoliko zastoja. Pod znakom pitanja su mi ostali 18. jun i 2. avgust; zapis zaista beleži neodgovorene poruke prvog datuma i rupu između botova drugog. Zato "0 flakiness" ne znači da se ništa više nikada nije pokvarilo, nego da kvar više nije normalno stanje sistema — kada se desi, ima ime, datum i čuvara koji se posle njega rodi.
Sporedna korist pouzdanosti je što sam se osmelio da pustim agente da razgovaraju i sa drugim ljudima; takve poruke nose napomenu da ih šalje moj agent, a sistem i danas radi sa AI Hub zajednicom.
Ako hoćeš isto, ali bez tri meseca debagovanja, Kinetik je gotov proizvod koji ovaj deo posla već radi.
OVU SERIJU TI DONOSI
Kinetik
marketing i content agent kakvog bih voleo da sam imao kad sam počinjao — kineto.app
Put kojim sam ja išao je legitiman i bilo mi je zabavno — ali je koštao: mesece rada i ozbiljan novac u vremenu i alatima. Da je tada postojao gotov agent kao Kinetik, platio bih nesrazmerno manje i vremenom i parama. Ako hoćeš gotovo, već napravljeno i testirano rešenje — pogledaj Kinetik i njihov kreatorski program, koji nudi do 500 evra svakom kreatoru koji napravi sadržaj o agentu.

KAKO SAM NAPRAVIO SVOJ MARKETING TIM OD AI AGENATA — SERIJA U 10 NASTAVAKA
3. Kako automatizovati Instagram karusel — šta može i treba da radi mašina, šta ostaje na čoveku
4. Dizajn bez ijedne generisane slike — uskoro
5. Agent koji svako jutro donese ideje — uskoro
6. Analitika koja bira temu — uskoro
7. Kako razgovaraš sa svojim agentima — uskoro
8. Kako smo napravili svoj Telegram sistem koji radi do danas — upravo čitaš
9. Najteži problemi usput — uskoro
10. Brojke koje stvarno znače — i da li se isplatilo — uskoro
Javiću ti kad izađe sledeći nastavak:
Bez spama — samo nastavci ove serije.

