Čo je ovládanie počítača a prečo je dôležité? Ovládanie počítača je jednoduchá myšlienka s ďalekosiahlymi dôsledkami: namiesto toho, aby sme od modelov žiadali odpovede na otázky, ich nechávame autonómne ovládať softvér – prechádzať webové lokality, vypĺňať formuláre, postupovať pracovnými procesmi pomocou kliknutí a dokončovať úlohy od začiatku do konca.
Sprístupňuje to veľkú skupinu reálnych úloh, ktoré sú dnes roztrieštené medzi rôzne rozhrania, napríklad kompletné rezervácie, dokončovanie nákupov v e-shopoch, viacfázové plánovanie ciest či interné administratívne procesy bez vhodného ekvivalentu v rozhraní API. Nejde o nové problémy. Nová je možnosť riešiť ich pomocou univerzálnych modelov.
Nedávne systémy od spoločností Anthropic a OpenAI predstavili agentov, ktorí nielen konajú, ale aj uvažujú o stave, zotavujú sa z chýb a priebežne vytvárajú riešenia prispôsobené konkrétnej úlohe. Prehliadač sa tak stáva univerzálnym spúšťacím prostredím pre agentov, no zároveň vzniká bezprostredná otázka návrhu: akú časť tohto prostredia máme modelu sprístupniť?
Prvé systémy na ňu odpovedali zabalením prehliadača do pevnej množiny bezpečných, vopred definovaných akcií. Ako ukážeme v tomto článku, tento prístup naráža na svoje hranice.


Pri tvorbe agentov pre prehliadače sa často objavuje známy inštinkt: modelu príliš nedôverovať.
Prehliadač preto zabalíme do obalu. Sprístupníme vopred definované nástroje ako click, type, scroll, select a read_text. Zjednodušíme objektový model dokumentu (DOM). Zmenšíme priestor možných akcií. Pomocou navrhnutých abstrakcií sa snažíme dosiahnuť, aby bolo správanie zrozumiteľné a ovládateľné.
Je to rozumný východiskový bod. Čoraz viac sa však ukazuje, že ide aj o nesprávnu dlhodobú architektúru.
S napredovaním prelomových modelov už problémom nie je len to, že model nemá dostatok nástrojov. Problémom je, že ho nútime pracovať prostredníctvom abstrakcií, ktoré odstraňujú príliš veľa informácií o základnom systéme. Neusporiadané a dynamické prostredie stlačíme do pevného rozhrania akcií a potom od modelu očakávame dobrý výkon napriek tejto strate informácií.
Tento kompromis je čoraz menej výhodný.
Zmenu, ktorú skúmame, možno opísať jednoducho, no jej dôsledky sú významné. Namiesto toho, aby sme agenta vnímali ako mechanizmus na výber vopred definovaných akcií, pristupujeme k nemu ako k syntetizátoru programov pracujúcemu v obmedzenom spúšťacom prostredí.
Modely sa výrazne zlepšili a už nepotrebujú abstraktné ochranné mantinely. Potrebujú úplný priestor akcií, aby mohli úlohu navrhnúť, vykonať a opakovane upravovať, kým nedosiahnu cieľ.
Tento článok sa venuje prechodu od automatizácie prehliadača zaťaženej abstrakciami k obmedzenému ovládaniu počítača a tomu, čo sa pri takomto návrhu systémov mení.
Problémom nie je, že by pevné rozhrania akcií boli principiálne nesprávne. Problémom je, že web sa im neprispôsobuje.


Moderné rozhrania sú vytvorené pomocou technológií React, Vue a Angular. Využívajú asynchrónne aktualizácie stavu, systémy syntetických udalostí a vložené miniaplikácie tretích strán, ktoré fungujú v prvkoch iframe z iných zdrojov a majú vlastné životné cykly. Obal s pokynom „type into this input“ funguje správne iba vtedy, ak sa stránka stotožňuje s vašou definíciou zadávania textu. Mnohé stránky sa s ňou nestotožňujú. Priame nastavenie hodnoty často úplne obíde mechanizmus platformy na zisťovanie zmien. Vstupné pole vyzerá ako vyplnené. Validácia sa nikdy nespustí. Formulár zostane nefunkčný.
Môžete to opraviť záplatou. Môžete pridať osobitné prípady pre vstupy React, po získaní zamerania vyvolávať udalosti blur a pred načítaním stavu čakať na ukončenie sieťovej aktivity. Každá záplata je v konkrétnom prípade správna. Spoločne sa však hromadia do systému, ktorého údržba je čoraz náročnejšia a ktorý sa čoraz viac viaže na lokality, s ktorými ste sa už stretli.
Hlbší problém spočíva v tom, že do abstrakčnej vrstvy zakódujete predpoklady o fungovaní interakcií a následne zistíte, že web vychádza z iných predpokladov.
Predstavte si platobný formulár vložený cez Stripe alebo Adyen do prvku iframe z iného zdroja. Váš obal k nemu nemá priamy prístup, pretože sa nachádza v samostatnom zdroji. Nástroj read_text nedokáže sledovať jeho vnútorný stav. Nástroj type nedokáže pracovať s jeho vstupnými poľami. Agent založený na obaloch tu narazí na neprekonateľnú prekážku. Abstrakcia bola navrhnutá pre hlavný dokument. Skutočná úloha sa nachádza tam, kam abstrakcia nevidí.
Podobný nesúlad sa objavuje aj v menej očividných procesoch. Rozbaľovacia ponuka riadená platformou nemusí vôbec reagovať na priame kliknutia, pretože viditeľný prvok nie je skutočným ovládacím prvkom. Na vyvolanie zmeny základného stavu môže vyžadovať postupnosť klávesnicových udalostí. Zvonka používateľské rozhranie vyzerá, že sa naň dá kliknúť. Abstrakcia povie „click“. Nič sa nestane.
Alebo si predstavte viacfázový proces v modálnom okne, pri ktorom aktualizácie viditeľného DOM zaostávajú za zmenami vnútorného stavu. Správna nasledujúca akcia závisí od zmeny stavu, ktorá sa ešte neprejavila v prvkoch viditeľných pre obal. Agent založený na obaloch nakoniec koná priskoro alebo číta neaktuálny stav, pretože pracuje s neúplným pohľadom na systém.
V každom z týchto prípadov abstrakcia skrýva signály, ktoré agent skutočne potrebuje.
Model pracujúci na nižšej úrovni dokáže tieto situácie zvládnuť: skúma aktuálny DOM, uvažuje o hraniciach rámcov a syntetizuje postupnosť interakcií pre dané rozhranie. Nejde o to, že by bol model vo svojej podstate inteligentnejší. Ide o to, že má prístup k informáciám, ktoré abstrakcia odstránila.
Zmenu, ku ktorej smerujeme, možno opísať jednoducho: namiesto toho, aby sme od modelu žiadali výber z vopred definovaných akcií, poskytujeme mu rozhranie na vykonávanie na nižšej úrovni a obmedzujeme ho pravidlami spúšťacieho prostredia, nie návrhom abstrakcií.
Toto rozhodnutie vychádza zo širšej zmeny v odvetví, ktoré začína uprednostňovať primitívne nástroje nižšej úrovne. Tie využívajú prirodzenú schopnosť agenta opravovať sa počas behu a vytvárať kvalitný kód, na rozdiel od odolných, napevno zakódovaných špecializovaných nástrojov, ktoré model pripravujú o schopnosť prispôsobiť sa rôznym prostrediam.
Dôkazom je úspech nástroja Claude Code, ktorý sa stal jednou z hlavných súčastí výbavy mnohých vývojárov, aj širší príklon odvetvia k agentom založeným na termináli. Najväčšou výhodou nástroja Claude Code nie je samotný model, ale harness nižšej úrovne. Ak model dostane menej modulárnych nástrojov nižšej úrovne – teda terminál –, dosahuje lepší výkon pri volaní nástrojov. Agent totiž môže o úlohe uvažovať a vytvárať pre ňu vlastné skripty namiesto toho, aby sa pokúšal používať všeobecné nástroje, ktoré zahlcujú kontextové okno.
Pri automatizácii prehliadača to v praxi znamená, že model môže priamo skúmať aktuálny stav stránky, prechádzať medzi rámcami a vytvárať interakčný kód na mieru danému rozhraniu namiesto mapovania všetkého na pevnú množinu vopred pripravených akcií.
Model sa správa menej ako nástroj na výber a viac ako autor logiky vykonávanej počas behu. Skúma aktuálny stav, uvažuje o rozhraní a syntetizuje logiku interakcie pre konkrétnu situáciu. Dokáže zostavovať viacfázové postupnosti, prispôsobovať sa nezvyčajným procesom a pred pokračovaním overovať výsledky. Keď akcia zlyhá, model vidí príslušnú chybu a sám sa opraví. Je to výkonnejšie aj rizikovejšie, no oveľa viac to zodpovedá skutočnej povahe problému.
Odstránenie abstrakčnej vrstvy pritom neznamená, že systém bude menej disciplinovaný. Disciplína sa iba presunie inam.
Práca, ktorá sa kedysi vykonávala pri návrhu obalov a riešení okrajových prípadov, sa presúva na tri miesta: do príkazu, ktorý sa stáva formou prevádzkového školenia; do spúšťacieho prostredia, ktoré presadzuje hranice, ako sú rozsah navigácie, citlivé akcie a správanie pri opakovaných pokusoch; a do hodnotiacej vrstvy, ktorá neposudzuje len úspešnosť úlohy, ale aj správnosť priebežných krokov. Menej krehkých abstrakcií. Silnejšie okolité systémy.
Jedným z dôsledkov tejto zmeny je, že kód produktu sa často zjednoduší, hoci celý systém dokáže viac. Namiesto zakódovania vzorcov interakcie do opakovane použiteľných obalov agent syntetizuje správanie počas behu. Namiesto neustále sa rozširujúcej množiny špecializovaných nástrojov a logiky pre okrajové prípady udržiavate malú množinu výkonných primitív a obmedzené spúšťacie prostredie.
Mení sa tým aj spôsob, akým systém zovšeobecňuje. Agent založený na obaloch dobre zovšeobecňuje na úlohy, ktoré sa podobajú tým, pre ktoré ste už obaly vytvorili. Agent s obmedzeným spúšťacím prostredím zovšeobecňuje na úlohy so spoločným základom vykonávania, aj keď sa ich viditeľné rozhranie líši.
Napríklad práca s vyhľadávacím formulárom, rezervačným procesom alebo stránkou nastavení môže na úrovni používateľského rozhrania vyzerať úplne odlišne. V pozadí však využívajú rovnaké vzorce: čítanie stavu, spúšťanie udalostí, overovanie výsledkov a spracovanie asynchrónnych aktualizácií. Systém pracujúci na tejto úrovni dokáže prirodzenejšie prenášať svoje schopnosti medzi úlohami.
Opakovane použiteľným komponentom nie je zoznam akcií. Je ním schopnosť modelu preskúmať stav, bezpečne konať a overiť výsledky.


Najjasnejším poznatkom z tejto práce je, že spoľahlivosť sa nedosahuje poskytovaním ďalších pomocných funkcií modelu. Často sa dosahuje tým, že model dostane menej, no výkonnejších primitív, ktoré sú vhodným spôsobom obmedzené. Prílišná pomoc napevno zakóduje predpoklady o tom, ako sa má úloha vykonať. Obmedzenia vymedzujú bezpečné hranice fungovania a umožňujú modelu nachádzať lepšie riešenia pre konkrétnu situáciu.
Výkonnejšie rozhranie na vykonávanie si vyžaduje aj presnejší bezpečnostný model. Keď agent už nie je obmedzený na malú množinu vopred definovaných akcií, v podstate pracuje priamo so skutočným softvérom. Tým sa okamžite mení rizikový profil.
Pri návrhu treba zohľadniť štyri oblasti:
Odhalenie údajov. Ak agent pracuje so skutočnými rozhraniami, často narazí na citlivé informácie. Vyžaduje si to dôsledný prístup k maskovaniu a riadeniu prístupu. Údaje sa majú sprístupniť iba vtedy, keď sú nevyhnutné na vykonanie úlohy. Denníky a záznamy priebehu treba spracúvať opatrne, aby sa pozorovateľnosť nestala najcitlivejšou časťou systému.
Rozsah vykonávania. Výkonný agent nesmie mať možnosť konať ľubovoľne. V praxi to znamená obmedziť, kam môže prechádzať, ku ktorým doménam má prístup a s ktorými systémami môže pracovať. Tieto obmedzenia sa musia presadzovať na úrovni spúšťacieho prostredia, nie ponechať ako zvyklosti v príkazoch.
Dôveryhodnosť prostredia. Moderné rozhrania môžu obsahovať pokyny, obsah alebo postupy, ktoré sú zavádzajúce či priamo nepriateľské. Vkladanie falošných príkazov prostredníctvom obsahu stránky predstavuje reálny priestor na útok. Systém potrebuje jasnú hierarchiu pokynov, validačné kontroly a podmienky ukončenia, aby agent nepostupoval podľa neželaných pokynov.
Spektrum autonómie. Nie všetky akcie majú byť úplne autonómne. V mnohých produkčných prostrediach je dôležité vnímať autonómiu ako spektrum. Systém môže pri skúmaní a vykonávaní postupovať veľmi samostatne, no pri určitých kategóriách akcií stále vyžadovať schválenie.
Základný princíp je jednoduchý: ak modelu poskytneme väčšie možnosti, musíme posilniť aj okolitý systém. Autonómia bez pravidiel nie je pripravená na produkčné nasadenie.
Prestali sme sa pýtať: ktoré akcie prehliadača máme sprístupniť?
Začali sme sa pýtať: ako môžeme modelu poskytnúť úplný priestor akcií a zároveň preň vytvoriť také pravidlá spúšťacieho prostredia, aby zostal bezpečný?
Tento nový pohľad mení priority. Taxonómie akcií a úplnosť obalov sú menej dôležité. Dôležitejšie sú pravidlá spúšťacieho prostredia, pozorovateľnosť a vyhodnocovanie jednotlivých krokov. Schopnosti modelu a návrh systému sa navzájom nenahrádzajú. S napredovaním modelov je práca systému čoraz dôležitejšia, nie menej dôležitá.
Agenti pre prehliadače, ktorí fungujú v ukážkach, často uspejú preto, že úloha je úzko vymedzená a prostredie im vychádza v ústrety. Produkčné systémy potrebujú niečo iné: obmedzené vykonávanie, merateľné správanie a hodnotenie, ktoré rozlíši správny výsledok od šťastnej náhody.
Menej navrhovania obalov. Viac systémového inžinierstva.
Hoci sme sa zamerali na agentov pre prehliadače, tento prístup poukazuje na širší spôsob vnímania ovládania počítača ako systémovej disciplíny.