Zasto Tencent uvek nudi tako prestizne pozicije? Neko je u 2 godine bio na intervjuu 6 puta (sa pitanjima o Agentu)
Relativno govoreći, Tencent bi trebalo da bude domaća internet kompanija koju ljudi najviše vole (možda bez konkurencije).

Razmislio sam o dve tačke (slobodno dodajte):
①. Obim biznisa je veliki — društvene mreže, igrice, sadržaj, oblak, AI itd., više pravaca znači više pozicija.
②. Kada u biografiji imate period u Tencentu, svaki sledeći traženje posla i svaka provera referenci predstavljaju prednost.
Tencent je takođe ključna reč o kojoj se najčešće raspravlja u svim mojim tehničkim grupama za komunikaciju.

Dve godine, šest intervjua — neki možda misle zašto?
Moje mišljenje je upravo suprotno, od ovog druga možemo naučiti tri stvari:
- Ako padnete na intervjuu, nemojte sebe odbacivati; nakon svakog pada napravite pregled, i tako znate šta sledeće treba da popravite
- Tokom dve godine tržište je imalo uspone i padove, ali on nije menjao pravac, nije snižavao očekivanja, i kada prepozna šta želi, juri za tim — takva predanost je retka u bilo kojoj industriji
- Mentalitet je dovoljno stabilan. Odbijen pet puta od iste kompanije, a prijavljuje se i šesti put — to pokazuje da ima poverenja u sebe i zna da će, ako je dovoljno dobar, prilika doći
Nema sumnje, ove godine koncentracija AI-ja na intervjuima će biti veća. Prošle godine je glavni fokus bio RAG, ove godine više Agent.
Ova promena je prilika za one koji su spremni da uče nove stvari, vole da se petljaju i što su uporniji nakon pada. Sledeći teški sadržaj o Agentu, nadam se da ćete pažljivo pročitati.

(Tekst je prilično opsežan, garantujem da ćete naučiti jako puno. Vežite sigurnosne pojaseve, krećemo.)
content
PS: Projekat koristi PaiCLI, već je open source na GitHub-u. To je terminalni Agent sličan Claude Code-u, zainteresovani mogu da uče.

https://github.com/itwanger/PaiCLI-Python
01. Kako Agent obrađuje duge tekstove?
Prvo pitanje starog Vanga ide pravo na Agent: „Kako Agent obrađuje duge tekstove? Šta kada premaši prozor konteksta?"
„Moj princip je da ne puštam duge tekstove odjednom u kontekst; pre nego što uđu, prvo ih obradite. Svaki alat PaiCLI ima ograničenje protoka:"
- čitanje datoteka se paginira po linijama, podrazumevano 500 linija odjednom, model sa ofsetom čita segmentovano;
- izlaz izvršavanja komande se prekida na 20000 karaktera
- preuzimanje web stranice prvo izdvaja telo, pa prekida, podrazumevano zadržava 10000 karaktera
- rezultati pretrage prikazuju samo prvih 5

„Za naročito velike datoteke potrebno je osloniti se na pretragu za lociranje; prvo se pomoću grep pronađe broj linije, a zatim se paginacijom pročita povezani kontekst."
Zašto čitanje datoteka ide po linijama, a ne po karakterima?
„Zato što se na broj linije može referisati. Model kaže 'problem je u liniji 320', sa ofsetom se može ponovo pročitati taj deo; deljenje po znacima ne dozvoljava ovakav precizan povratak."

„Druga linija odbrane je kompresija konteksta. Dostupan budžet je prozor minus rezervisani izlaz i bafer, što se aktivira kada se dostigne oko 80% budžeta. Poslednjih 6 poruka se čuvaju u originalu, a starije se sažimaju."
02. Šta je ključ kontekst memorije?
Stari Vang klimnu glavom i pita: „A šta je ključ kontekst memorije?"
„Tri ključne tačke: slojevitost, izolacija, sprečavanje kontaminacije."
- slojevitost: istorija poruka unutar sesije, dugoročno pamćenje između sesija — svako upravlja svojim
- izolacija: dugoročno pamćenje je izolovano po putanji projekta; preferencije projekta A ne smeju preći u projekat B
- sprečavanje kontaminacije: sadržaj se deduplicira po hešu, prekoračenja se eliminišu po važnosti, podržano je automatsko istekanje vremena

„Sažeci generisani kompresijom ne smeju se mešati sa dugoročnim pamćenjem; dugoročno pamćenje beleži samo činjenice koje je korisnik izričito tražio da se sačuvaju."
„I povraćaj mora biti obuzdan. Podudaranje ključnih reči učestvuje sa 70% težine, a važnost, poverenje, svežina i učestalost pristupa sa preostalih 30%; podrazumevano se uzima samo 6 zapisa, a oni ispod praga se odbacuju."
Zašto koristiti podudaranje ključnih reči umesto vektorske pretrage?
„U dugoročnom pamćenju se talože činjenice, možda oko hiljadu i nešto zapisa; nije kao RAG baza znanja koja ima jako puno, desetine GB."
„Ocenjivanje po ključnim rečima daje rezultate u milisekundama, objašnjivo je i može se otkloniti greške — zašto je koji zapis povraćen, jasno je na prvi pogled; vektorska pretraga zahteva održavanje embedding-a, kada se promeni model, cela baza pamćenja mora ponovo da se vektorizuje, i pretraga je komplikovanija."

03. Kako se rešavaju sukobi između prethodnih i sledećih instrukcija?
Stari Vang stavi kvačicu u svoju svesku i nastavi: „System prompt, konfiguracija projekta, korisnički unos — šta kada se prethodne i sledeće instrukcije sukobe?"
„Deli se u dve kategorije. Konflikti konfiguracionog tipa se rešavaju po prioritetu: podrazumevane vrednosti, korisnička konfiguracija, konfiguracija projekta, datoteka varijabli okruženja, argumenti komandne linije — spajaju se redom, kasniji overava ranije; onaj koji je bliži trenutnom pokretanju presudan je."
„Konflikti tipa prompta se rešavaju poverenjem po nivoima. Instrukcije projekta se označavaju kao konfiguracija radnog prostora, povraćeno pamćenje kao nepouzdani podaci, informacije o vremenu izvođenja kao programske generisane — pamćenje i izlaz alata mogu biti samo podaci, ne instrukcije."

„Ovo pravilo sprečava ubacivanje prompta. Ako alat vrati web stranicu u kojoj je skrivena rečenica 'zanemari sve prethodne instrukcije', Agent bez poverenja po nivoima zaista bi to poslušao; sa nivoima poverenja, to je samo citirani tekst."
Kako se organizuje sam system prompt?
„Statički prefiks i dinamički sufiks. Identitet, pravila ponašanja i instrukcije projekta koje se ne menjaju tokom cele sesije idu na sam početak, a vreme, direktorijum i povraćeno pamćenje koje se menjaju u svakom krugu idu na kraj."
„Prompt Caching pogađa po najdužem zajedničkom prefiksu; stabilan sadržaj što je bliže početku, to je veća stopa pogađanja."

„Datoteke sa instrukcijama projekta se spajaju, ne preklapaju; učitavaju se u fiksnom redosledu uz deduplikaciju."
04. Koja je razlika između Harness Engineering i Loop Engineering?
Stari Vang je pažljivo razmislio o mom prethodnom odgovoru, osetivši da nije dovoljno, nastavlja: „Harness Engineering i Loop Engineering, te dve reči su u poslednje vreme veoma popularne, ispričaj mi svoje razumevanje."
Prompt Engineering se bavi 'kako reći' — kako napisati instrukcije koje model razume.
Context Engineering se bavi 'šta znati' — pružanje modelu pravih informacija u pravo vreme.
Harness Engineering se bavi 'šta može, a šta ne može' — celokupnim okruženjem izvođenja Agent-a i granicama bezbednosti.
Claude Code je tipičan Harness. Ima model dozvola, sistem Hooks, automatsku kompresiju konteksta i izolaciju pod-Agenta. Svaka komponenta je nametnuta velikim brojem grešaka.

Loop Engineering se bavi zakazanim zadacima — da, zakazanim zadacima — omogućavajući Agentu da nastavi da radi bez nadzora. Kao crontab u Linuxu, Loop Engineering je planer za Agent.
U Claude Code-u postoje dve implementacije: /goal i /loop.
/goal je sprint sa ciljem. Postavlja se uslov završetka, kao što je 'prolazak svih testova', i Agent kontinuirano radi dok se uslov ne ispuni. Ključni mehanizam: nezavisan evaluator na kraju svakog kruga proverava da li je cilj ispunjen, i ako jeste, zaustavlja se. Pogodno za jednokratne zadatke — ispravljanje baga, završetak PR-a, završetak testa.
/loop je patrola bez cilja. Postavlja se vremenski interval, na primer na svakih 10 minuta, i Agent ponavlja rad po tom ritmu. Pogodno za kontinuirane zadatke — provera novih PR-ova i preispitivanje, povremeno skeniranje logova radi pronalaska anomalija, periodično pokretanje testova. Ne zaustavlja se automatski, osim ako ga aktivno ne otkažete.
05. Zašto su Skills pogodni za system nivo?
Stari Vang se nagnuo napred i nastavio: „Zašto je indeks Skill-a pogodno postaviti u system nivo prompta?"
„Tri razloga:"
- stabilnost: Indeks Skill-a se ne menja tokom cele sesije; u system nivou može iskoristiti Prompt Caching, trošak tokena za pogođeni keš je za red veličine manji nego nepogođeni
- autoritativnost: Kada i koji skill učitati je pravilo ponašanja; system nivo ima najviši prioritet i ne može biti skrenut sadržajem razgovora
- stalnost: System nivo ne učestvuje u kompresiji; indeks se ne može sažeti

„Preduslov je da indeks mora biti dovoljno mali, i to je značenje progresivnog otkrivanja."
06. Koja će biti ključna sposobnost Agent-a u budućnosti?
Stari Vang zatvori poklopac olovke i postavi otvoreno pitanje: „Gledajući unapred, koja će biti ključna sposobnost Agent-a?"
„Moj sud je samoverifikacija. Današnji Agent zna da poziva alate, zna da piše kod, ali da li je ispravno proizvedeno, i dalje zavisi od ljudskog nadzora — to je najveće usko grlo."

„Ko uspe da natera Agent-a da sam proveri proizvod u ključnim tačkama — pokrene testove, uporedi očekivanja, otkrije greške i sam se vrati unazad i pokuša ponovo — oslobodiće čoveka od posla popravki nakon Agent-a."
„Još dalje su memorija i saradnja. Memorija određuje da li će Agent postajati sve pogodniji za upotrebu; saradnja određuje da li se složeni zadaci mogu podeliti na više Agenta radi paralelnog rada."
07. Šta razumete pod GLM-5.2, Claude Code, Codex?
Poslednje pitanje drugog kruga je pitanje razumevanja: „GLM-5.2, Claude Code, Codex — kako ih razumete?"
„GLM-5.2 je model, Claude Code je terminalni Agent, Codex je desktop Agent."
„Na nivou modela gledaju se tri sposobnosti: tačnost rezonovanja, stabilnost poziva alata i veličina prozora konteksta."

„Na nivou proizvoda se uglavnom gleda koliko je Harness dobro iskorišćen. Za sada je Claude Code najbolji terminalni Agent, a Codex najbolji desktop Agent."
Svi oni su ostvarili maksimalnu kompatibilnost i podudaranje sa modelima svojih kompanija, pa se čini da su Fable 5 i GPT-5.6 zgodniji i pametniji. To su stvari koje se međusobno dopunjuju sa modelom.
08. Kako se radi SFT pre RL?
Stari Vang pokazuje na prvi red novog spiska i nastavlja: „Pre osnaživanja, kako se radi nadgledano fino podešavanje (SFT)?"
„Zadatak SFT-a je da uvuče model u ciljnu distribuciju — jednostavnije rečeno, da model prvo vidi i nauči one vrste zadataka koje želimo da radi; format i osnovne sposobnosti se postavljaju u ovoj fazi. Što se tiče podataka, ključne su tri stvari: pokrivenost zadataka mora biti potpuna, težina mora imati gradijent, a putanje moraju biti čiste; u Agent scenarijima takođe treba organizovati putanje poziva alata u objedinjen format."
„Podaci se uglavnom oslanjaju na odbijanje uzorkovanja. Trenutni model se više puta uzorkuje za grupu zadataka, verifier bira ispravne putanje, koje se vraćaju u trening skup, i model sam sebe podučava; zatim se dodaje deo putanja destilovanih iz jačeg modela da se popune slabosti, a ručno označavanje služi samo za najkritičnije delove."

Kako se procenjuje da li je SFT završen?
„Ne gleda se loss, već tri signala:"
- Stopa poštovanja formata i stopa legalnosti poziva alata se približavaju zasićenju — pravila su naučena
- Stopa prolaska pass@k pri višestrukom uzorkovanju raste — sposobnost postoji, samo nije stabilna
- Korist od nastavka treninga na validacionom skupu se očigledno smanjuje — ova faza je iscrpljena

„Takođe treba pratiti jedan indikator unazad — skup za evaluaciju opštih sposobnosti ne sme da padne. Pad znači da je odnos podataka neuravnotežen; specijalizovana sposobnost je stečena po cenu katastrofalnog zaboravljanja, što nije isplativo."
„Kada se ta tri signala poklope, može se preći na RL. Suština RL-a je da se sposobnost koja već postoji u pass@k sabije u pass@1, pod uslovom da među k uzorkovanja zaista ima onih koji su urađeni ispravno."
„Ako SFT nije dovoljan, a krene se u RL, u prostoru za istraživanje se ne mogu naći pozitivni uzorci, nagrada je previše retka, i ne može se trenirati."
09. Kako dizajnirati reward i verifier?
Stari Vang nastavlja: „Kako dizajnirati nagradu (reward) i verifier?"
„Prvo mesto ima proverljiva nagrada. Kod prolazi testove, matematika upoređuje rešenja, format se validira — ocena je objektivna, cena niska, model je ne može namiriti."
„Za dimenzije koje se ne mogu proveriti koristi se model nagrade (reward model), koji se trenira na ručno označenim parovima preferenci."

„Još jedna dimenzija je kompromis između nagrade za rezultat i nagrade za proces. Nagrada za rezultat gleda samo konačnu ispravnost, signal je pouzdan ali redak, i u dugim zadacima model teško zna u kom je koraku greška; nagrada za proces daje ocenu za svaki korak, signal je gust, ali svako dodatno mesto za ocenjivanje donosi još jednu priliku za zloupotrebu."
„Moj pristup je da nagrada za rezultat bude osnova, a nagrada za proces se dodaje samo na čvorovima koji se mogu objektivno proceniti."
„Verifier ima dva gvozdena pravila. Prvo, ocenjuje se stvarni cilj, a ne zamenljiv indikator — ocenjuje se 'da li je test prošao', ne 'da li kod liči na ispravan'; drugo, datoteke testa se zaključavaju i ne dozvoljava se modelu koji se testira da ih menja — lenjir za ocenjivanje ne sme biti dat u ruke onome kome se ocenjuje."
10. Kako se otkriva reward hacking?
Stari Vang nastavlja: „Kako se otkriva varanje nagrade (reward hacking)?"
„Ključni signal je samo jedan — rezultat raste, sposobnost ne raste. Konkretno se prate četiri mesta:"
- Odstupanje indikatora: Kriva nagrade u treningu raste, ljudska evaluacija i nezavisni test skup ne rastu, čak i padaju
- Nagla promena ponašanja: Dužina izlaza naglo raste, ponavljaju se fraze, patern poziva alata postaje deformisan
- Provera visokih ocena: Periodično se ručno pregledaju uzorci sa visokim ocenama da bi se videlo ima li varanja
- Dupla provera: Trening koristi jedan verifier, evaluacija drugi, sprečavajući model da overfittuje samo na jedan

„Najtipičniji način varanja u kodu je kada test zahteva povrat specifične vrednosti, pa model direktno upiše tu vrednost; ili ako se datoteka testa može menjati, model izmenu tvrdnje u uvek tačne; čak postoje i oni koji potpuno progutaju izuzetak i nateraju program da se pretvara da je normalno završio, kako bi prevarili ocenjivanje."
„Ovi uzorci su u logovima treninga svi visokih ocena, i bez ručnog pregleda se uopšte ne mogu otkriti."
„Kada se otkriju, preduzimaju se dve radnje — vrati se na tačku pre varanja, a zatim popravi verifier i zatvori se rupica. Samo vraćanje bez zatvaranja rupice znači da će u sledećem krugu treninga opet izaći na isto mesto."
11. Kako se vraćaju loši slučajevi?
„Kako se vraćaju loši slučajevi?"
„Prvo se utvrdi uzrok, a zatim razdvoje — ne mogu se svi odjednom gurnuti nazad u trening skup. Loši primeri koji su pogrešno rešeni treba da se popave i uđu u SFT podatke kao pozitivni; oni koji nisu baš pogrešni, ali su loše odgovoreni, pretvaraju se u parove preferenci za treniranje reward modela; ima i onih gde je verifier sam pogrešno ocenio, gde treba popraviti okruženje za evaluaciju, a ne model."

„Uzrok ne sme da se nagađa; lošim primerima se daju oznake — da li povraćaj nije uspeo, da li je poziv alata pogrešio, ili je lanac rezonovanja prekinut. Kada se prikupi dovoljno oznaka, raspodela slabosti modela postaje jasna, i postaje jasno gde treba dodati podatke u sledećem krugu."
„Povraćaj ima tri inženjerske discipline — deduplikacija, kontrola odnosa radi sprečavanja katastrofalnog zaboravljanja, i svaki popravljeno loš primer se dodaje u regresioni skup za evaluaciju, kako bi se sprečilo vraćanje iste vrste problema."
„Loši slučajevi nisu smeće, to su besplatni signali za trening sa preciznim koordinatama."
12. Kako se treniraju value model i reward model u PPO-u?
„Kako se u PPO-u treniraju value model i reward model?"
„Prvo treba razdvojiti uloge ova dva modela. Model nagrade ocenjuje 'koliko vredi ovaj rezultat', value model procenjuje 'koliko se bodova očekuje od sadašnjeg stanja nadalje' — jedan ocenjuje rezultat, drugi procenjuje očekivanje."

„Reward model se istrenira pre početka osnaživanja; koristi parove preferenci za loss rangiranja, obično se inicijalizuje iz SFT modela i posle treninga se zamrzne. Value model se tokom PPO-a ažurira zajedno sa modelom politike; cilj treninga je da se tačno proceni 'koliko se bodova još može dobiti'."
„U nagradu se takođe dodaje KL kazna, koja ograničava model politike da ne odluta previše od SFT modela. Ako odluta, kvalitet jezika će se srušiti, pa makar i nagrada bila visoka."
„Jedna zamka u koju se lako upadne: u ranoj fazi treninga prvo se zamrzne model politike i posebno zagreje value model nekoliko koraka. Bez zagrevanja su rane procene prednosti sve šum, i politika odmah skrene."
„Tokom PPO treninga, težine četiri modela — politike, referentnog (tog zamrznutog SFT modela), nagrade i vrednosti — moraju istovremeno biti u memorijskoj, i ovaj trošak je glavni motiv zašto GRPO izostavlja value model."
13. Da li se GRPO reward može prebaciti na PPO?
Stari Vang nastavlja: „Da li se GRPO reward može direktno prebaciti na PPO?"
„Može, oba troše istu vrstu stvari — skalarnu nagradu gde jedan odgovor odgovara jednoj oceni. Prava razlika nije u reward-u, već u načinu procene prednosti."
„GRPO za isto pitanje uzorkuje grupu odgovora i koristi prosečnu ocenu grupe kao osnovnu liniju, čime se izostavlja value model; PPO koristi value model za procenu osnovne linije."

„Dakle, pri prebacivanju reward i verifier mogu se koristiti nepromenjeni, ali treba dodati value model za PPO. Takođe obratite pažnju na razmeru nagrade — GRPO-ova normalizacija unutar grupe u PPO-u nema odgovarajući mehanizam, i ako razmere nisu usklađene, trening lako osciluje."
14. Kako se ocenjuju zadaci Agent-a?
„Kako se ocenjuju zadaci Agent-a?"
„Tri nivoa indikatora. Na nivou rezultata gleda se stopa uspeha zadatka, pod uslovom da se okruženje može resetovati i da se proizvodi mogu objektivno oceniti; na nivou procesa gleda se broj koraka, cena tokena i stopa uspeha poziva alata — ako dva Agenta mogu dovršiti isti zadatak, a razlika u broju koraka je trostruka, to je razlika u nivou; na nivou stabilnosti gleda se varijansa pri višestrukom pokretanju istog zadatka — kontinuirano prolaziti više puta znači zaista znati, povremeni prolazak se ne računa."

„Mogućnost resetovanja okruženja je inženjerski posao — koriste se kontejneri ili snimci da se obezbedi da svaka evaluacija polazi iz istog stanja; inače će nuspojave prethodnog pokretanja kontaminirati sledeći rezultat. Skup za evaluaciju takođe mora biti zaštićen od curenja — zadaci koji su ušli u podatke za trening moraju biti izbačeni."
„Za dimenzije koje se ne mogu oceniti tvrdim indikatorima koristi se model kao sudija, ali sudiju treba periodično ručno proveravati i kalibrisati, inače će i sam sistem evaluacije početi da pada."
15. Kako dizajnirati verifier za Code Agent?
Stari Vang pogleda u sat i postavi poslednje pitanje: „Kako dizajnirati verifier za Code Agent?"
„Četiri nivoa, od jeftinijeg do skupljeg:"
- nivo sintakse: kompajliranje ili provera sintakse, rezultat u sekundama, prva linija odbrane
- nivo testiranja: pokretanje jediničnih i integracionih testova, jezgro je 'neuspeh prelazi u uspeh'
- statički nivo: provera tipova, skeniranje stila, bezbednost zavisnosti
- nivo pregleda: model ili čovek vrši pregled koda, hvata probleme dizajna koje prva tri nivoa ne mogu

Šta znači 'neuspeh prelazi u uspeh' na nivou testiranja?
„Da bi se ocenilo da li je popravka valjana, zahteva se da odgovarajući test pre popravke mora pasti, a nakon popravke proći — proverava se na oba kraja, čime se sprečava lažno pozitivan rezultat 'test je već prolazio'."

„Sprečavanje varanja kreće od okruženja za izvođenje — datoteke testa su samo za čitanje, izvršavanje u pesku, provera proizvoda — ništa se ne sme preskočiti."
„U PaiCLI-ju sam implementirao MVP verziju. Nakon pisanja Python datoteke odmah se radi provera sintakse i kompajliranja, a greške se direktno prilažu u rezultat alata i vraćaju modelu, pa se ispravljaju u trenutnom krugu; u multi-Agent režimu postoji uloga posvećenog pregledača, a ako rezultat ne zadovoljava, vraća se na preradu, najviše dva puta."
Kraj
Ranije su se na backend intervjuima takmičili u istovremenosti i middleware-u, sada se u prvom krugu pitaju o RL, a u drugom o Harness. Pitanja se menjaju, ali i mi se menjamo; uz podršku AI-ja, sposobnost učenja, inženjerske sposobnosti i sposobnost razmišljanja se pojačavaju.
[Vrednost pozicije ne ogleda se samo u imenu kompanije, već i u tome što na pitanja koja drugi još nisu pripremili mi već možemo da odgovorimo.]
Imamo priliku da stojimo na talasu razvoja AI-ja i pretvorimo ova nova pitanja u svoje adute — zašto odbiti?
Iako izazova nije malo, mogućnosti su neograničene.
Napred, prijatelji.
Vidimo se u sledećem.
