Kas ir datora lietošana, un kāpēc tā ir svarīga? Datora lietošana ir vienkārša ideja ar plašu ietekmi: tā vietā, lai lūgtu modeļiem atbildēt uz jautājumiem, mēs tiem lūdzam autonomi darboties programmatūrā — pārvietoties vietnēs, aizpildīt veidlapas, izpildīt darbplūsmas un paveikt uzdevumus no sākuma līdz beigām.
Tas paver iespēju veikt plašu reālu uzdevumu klāstu, kas pašlaik ir sadrumstaloti pa dažādām saskarnēm, piemēram, pilnus rezervēšanas un e-komercijas norēķinu procesus, vairākposmu ceļojumu plānošanu un administratīvās darbplūsmas, kurām nav līdzvērtīgas, ērti lietojamas API. Šīs problēmas nav jaunas. Jauna ir iespēja tās atrisināt ar vispārīga lietojuma modeļiem.
Anthropic un OpenAI jaunākās sistēmas ir demonstrējušas aģentus, kas ne tikai rīkojas, bet arī analizē stāvokli, novērš kļūdas un darba gaitā izstrādā konkrētajam uzdevumam piemērotus risinājumus. Tādējādi pārlūkprogramma kļūst par vispārīgu aģentu izpildes vidi, taču uzreiz rodas projektēšanas jautājums: cik lielu šīs vides daļu vajadzētu darīt pieejamu modelim?
Agrīnās sistēmās šo jautājumu risināja, ietverot pārlūkprogrammu fiksētā drošu, iepriekš definētu darbību kopumā. Kā pamatosim šajā rakstā, šī pieeja tuvojas savu iespēju robežām.


Veidojot pārlūkprogrammu aģentus, ierasta pieeja ir pārāk neuzticēties modelim.
Tāpēc mēs pārlūkprogrammu ietveram čaulā. Mēs piedāvājam iepriekš definētus rīkus, piemēram, click, type, scroll, select un read_text. Mēs vienkāršojam dokumenta objektu modeli (DOM). Mēs samazinām iespējamo darbību klāstu. Mēs cenšamies padarīt darbību saprotamu un kontrolējamu, izmantojot pašu izstrādātas abstrakcijas.
Tas ir saprātīgs sākumpunkts. Tomēr ilgtermiņā tā arvien biežāk izrādās nepareiza arhitektūra.
Robežšķirtnes modeļiem pilnveidojoties, problēma vairs nav tikai modeļa rīku trūkums. Problēma ir tā, ka mēs piespiežam modeli darboties ar abstrakcijām, kas atmet pārāk daudz pamatsistēmas informācijas. Mēs sarežģītu, dinamisku vidi saspiežam fiksētā darbību saskarnē un pēc tam prasām modelim sekmīgi darboties, neraugoties uz šo informācijas zudumu.
Šāds kompromiss kļūst arvien mazāk pievilcīgs.
Mūsu pētīto pāreju ir viegli aprakstīt, taču tās sekas ir būtiskas. Tā vietā, lai aģentu uzskatītu par iepriekš definētu darbību atlasītāju, mēs to uztveram kā programmu sintezētāju, kas darbojas ierobežotā izpildvidē.
Modeļi ir kļuvuši patiešām spējīgi, un tiem vairs nav vajadzīgas jūsu abstraktās aizsargbarjeras — tiem nepieciešams pilns darbību klāsts, lai izstrādātu, izpildītu un pilnveidotu uzdevumu, līdz mērķis ir sasniegts.
Šis raksts ir par pāreju no abstrakcijām bagātas pārlūkprogrammas automatizācijas uz ierobežotu datora lietošanu un par to, kas mainās, šādi projektējot sistēmas.
Problēma nav tā, ka fiksētu darbību saskarnes būtu konceptuāli nepareizas. Problēma ir tā, ka tīmeklis tām nepakļaujas.


Mūsdienu saskarnes ir veidotas ar React, Vue un Angular, izmantojot asinhronus stāvokļa atjauninājumus, sintētisku notikumu sistēmas un iegultus trešo pušu logrīkus, kas darbojas citas izcelsmes iframe elementos ar savu dzīves ciklu. Čaula ar norādi „ievadīt tekstu šajā laukā” darbojas pareizi tikai tad, ja lapas izpratne par teksta ievadi atbilst jūsējai. Daudzām lapām tā neatbilst. Vērtības tieša iestatīšana bieži pilnībā apiet ietvara izmaiņu noteikšanas mehānismu. Ievades lauks šķiet aizpildīts. Validācija netiek aktivizēta. Veidlapa joprojām nedarbojas.
To var labot. Var pievienot īpašus gadījumus React ievades laukiem, pēc fokusa piešķiršanas izraisīt blur notikumus un pirms stāvokļa nolasīšanas gaidīt tīkla aktivitātes beigas. Katrs labojums konkrētajā situācijā darbojas pareizi. Taču kopā tie veido sistēmu, kuru uzturēt kļūst arvien grūtāk un kura arvien vairāk pielāgota tikai jau sastaptajām vietnēm.
Dziļākā problēma ir tā, ka abstrakcijas slānī tiek iekodēti pieņēmumi par mijiedarbību darbību, bet pēc tam izrādās, ka tīmekļa pieņēmumi atšķiras.
Aplūkosim maksājumu veidlapu, kas ar Stripe vai Adyen starpniecību iegulta citas izcelsmes iframe elementā. Čaula nevar tai tieši piekļūt, jo tā atrodas citā izcelsmes domēnā. Rīks read_text nevar novērot tās iekšējo stāvokli. Rīks type nevar piekļūt tās ievades laukiem. Uz čaulu balstīts aģents šeit nonāk strupceļā. Abstrakcija tika izstrādāta galvenajam dokumentam. Faktiskais uzdevums atrodas vietā, kuru abstrakcija nespēj saskatīt.
Līdzīga neatbilstība parādās arī mazāk acīmredzamos procesos. Ietvara pārvaldīta nolaižamā izvēlne var vispār nereaģēt uz tiešiem klikšķiem, jo redzamais elements nav faktiskā vadīkla. Lai izraisītu pamatā esošā stāvokļa pāreju, var būt nepieciešama tastatūras notikumu virkne. No ārpuses lietotāja saskarne izskatās klikšķināma. Abstrakcija norāda: „Noklikšķināt.” Nekas nenotiek.
Vai arī aplūkosim vairākposmu modālo procesu, kurā redzamā DOM atjauninājumi atpaliek no iekšējā stāvokļa izmaiņām. Pareizā nākamā darbība ir atkarīga no stāvokļa pārejas, kas vēl nav atspoguļota elementos, kurus čaula spēj saskatīt. Uz čaulu balstīts aģents rīkojas pārāk agri vai nolasa novecojušu stāvokli, jo darbojas, redzot nepilnīgu sistēmas ainu.
Katrā no šiem gadījumiem abstrakcija slēpj aģentam faktiski nepieciešamos signālus.
Modelis, kas darbojas zemākā līmenī — pārbauda aktuālo DOM, analizē kadru robežas un sintezē konkrētajai saskarnei vajadzīgo mijiedarbības secību — spēj šīs situācijas atrisināt. Tas nenozīmē, ka modelis pēc būtības būtu gudrāks. Tam vienkārši ir pieejama iepriekš atmestā informācija.
Mūsu iecerētās pārmaiņas ir viegli aprakstīt: tā vietā, lai prasītu modelim atlasīt iepriekš definētas darbības, mēs tam piedāvājam zemāka līmeņa izpildes vidi un ierobežojam to ar izpildlaika politikām, nevis abstrakciju uzbūvi.
Šo izvēli nosaka plašāka nozares pāreja uz zemāka līmeņa pamatfunkcijām — rīkiem, kas izmanto aģenta dabisko spēju izpildlaikā labot kļūdas un rakstīt kvalitatīvu kodu, nevis uz stabiliem, konkrētiem un iepriekš ieprogrammētiem rīkiem, kas ierobežo modeļa spēju pielāgoties dažādām vidēm.
Par piemēru var minēt Claude Code panākumus, kļūstot par vienu no daudzu izstrādātāju galvenajiem rīkiem, un plašāku nozares pāreju uz terminālī darbināmiem aģentiem. Claude Code lielākā priekšrocība ir nevis pats modelis, bet gan zemāka līmeņa izpildes ietvars. Piešķirot modelim mazāk, bet modulārākus zemāka līmeņa rīkus, proti, termināli, tiek uzlabota rīku izsaukšanas efektivitāte, galvenokārt tāpēc, ka aģents var analizēt uzdevumu un veidot tam pielāgotus skriptus, nevis censties izmantot vispārīgus rīkus, kas piesārņo konteksta logu.
Pārlūkprogrammas automatizācijas gadījumā tas nozīmē, ka modelis var tieši pārbaudīt lapas aktuālo stāvokli, pārvietoties starp kadriem un izveidot konkrētajai saskarnei pielāgotu mijiedarbības kodu, nevis visu kartēt uz fiksētu iepriekš izveidotu darbību kopu.
Modelis darbojas mazāk kā atlasītājs un vairāk kā izpildlaika programmas autors. Tas pārbauda pašreizējo stāvokli, analizē saskarni un sintezē konkrētajai situācijai piemērotu mijiedarbības loģiku. Tas var izveidot vairākposmu secības, pielāgoties neparastiem procesiem un pirms turpināšanas validēt rezultātus. Ja darbība neizdodas, modelis redz pamatā esošo kļūdu un pats to izlabo. Tas ir jaudīgāk un riskantāk, taču daudz precīzāk atbilst problēmas patiesajai būtībai.
Svarīgi, ka abstrakcijas slāņa noņemšana nepadara sistēmu mazāk disciplinētu. Tā tikai pārvieto šo disciplīnu citur.
Darbs, kas iepriekš tika veikts čaulu projektēšanā un izņēmumgadījumu apstrādē, pārceļas uz trim vietām: uzvedni, kas kļūst par darbības apmācības veidu; izpildvidi, kas īsteno tādus ierobežojumus kā navigācijas tvērums, sensitīvas darbības un atkārtotu mēģinājumu kārtība; un novērtēšanas slāni, kas vērtē ne vien uzdevuma iznākumu, bet arī starpposmu pareizību. Mazāk trauslu abstrakciju. Spēcīgākas apkārtējās sistēmas.
Šo pārmaiņu rezultātā produkta kods bieži kļūst vienkāršāks, lai gan sistēma kopumā kļūst spējīgāka. Tā vietā, lai mijiedarbības modeļus iekodētu atkārtoti izmantojamās čaulās, aģents darbības sintezē izpildlaikā. Jūs uzturat nelielu jaudīgu pamatfunkciju kopu un ierobežotu izpildes vidi, nevis arvien plašāku specializētu rīku un izņēmumgadījumu loģikas klāstu.
Tas maina arī sistēmas vispārināšanas spējas. Uz čaulām balstīts aģents labi vispārina uzdevumus, kas līdzinās jau izveidotajām čaulām. Ierobežotā izpildvidē strādājošs aģents spēj vispārināt uzdevumus ar kopīgu izpildes pamatu, pat ja redzamā saskarne atšķiras.
Piemēram, mijiedarbība ar meklēšanas veidlapu, rezervēšanas procesu vai iestatījumu lapu lietotāja saskarnes līmenī var izskatīties pilnīgi atšķirīgi. Taču pamatā tiem ir kopīgi modeļi: stāvokļa nolasīšana, notikumu aktivizēšana, rezultātu validēšana un asinhronu atjauninājumu apstrāde. Sistēma, kas darbojas šajā līmenī, daudz dabiskāk pielāgojas dažādiem uzdevumiem.
Atkārtoti izmantojamais komponents nav darbību saraksts. Tā ir modeļa spēja pārbaudīt stāvokli, droši rīkoties un verificēt rezultātus.


Šī darba skaidrākā atziņa ir tāda, ka uzticamību nenodrošina papildu palīgfunkciju piešķiršana modelim. To bieži panāk, piešķirot modelim mazāk, bet jaudīgākas pamatfunkcijas un pareizi tās ierobežojot. Pārmērīga palīdzība sistēmā iestrādā pieņēmumus par to, kā uzdevums būtu jāveic. Ierobežojumi nosaka drošas darbības robežas un ļauj modelim atrast piemērotākus risinājumus konkrētajai situācijai.
Jaudīgākai izpildes videi nepieciešams arī precīzāks drošības modelis. Tiklīdz aģentu vairs neierobežo neliels iepriekš definētu darbību kopums, tas faktiski tieši darbojas reālā programmatūrā. Tas uzreiz maina riska profilu.
Projektējot jāņem vērā četri aspekti:
Datu atklāšana. Ja aģents mijiedarbojas ar reālām saskarnēm, tas bieži sastaps sensitīvu informāciju. Tādēļ maskēšanai un piekļuves kontrolei jāpieiet disciplinēti. Datus drīkst atklāt tikai tad, kad tas nepieciešams izpildei, savukārt žurnāli un izsekošanas dati jāapstrādā rūpīgi, lai novērojamības dati nekļūtu par sensitīvāko sistēmas daļu.
Izpildes tvērums. Jaudīgs aģents nedrīkst darboties patvaļīgi. Praksē tas nozīmē ierobežot vietas, uz kurām tas var pārvietoties, domēnus, kuriem tas var piekļūt, un sistēmas, ar kurām tam atļauts mijiedarboties. Šie ierobežojumi jāievieš izpildvides līmenī, nevis jāatstāj kā uzvedņu veidošanas paražas.
Uzticēšanās videi. Mūsdienu saskarnēs var būt maldinošas vai pat aktīvi kaitnieciskas instrukcijas, saturs un procesi. Uzvedņu injekcija ar lapas satura starpniecību ir reāls uzbrukuma vektors. Sistēmai nepieciešama skaidra instrukciju hierarhija, validācijas pārbaudes un izpildes pārtraukšanas nosacījumi, lai aģents nesekotu neparedzētiem norādījumiem.
Autonomijas spektrs. Ne visām darbībām jābūt pilnībā autonomām. Daudzās ražošanas vidēs ir svarīgi autonomiju uztvert kā spektru. Sistēma var darboties ļoti aģentiski izpētes un izpildes laikā, vienlaikus pieprasot apstiprinājumu noteiktām darbību kategorijām.
Pamatprincips ir vienkāršs: piešķirot modelim lielākas iespējas, jāstiprina arī to aptverošā sistēma. Autonomija bez politikas nav gatava lietošanai ražošanas vidē.
Mēs pārstājām jautāt: kuras pārlūkprogrammas darbības būtu jāpiedāvā?
Mēs sākām jautāt: kā nodrošināt modelim pilnu darbību klāstu un vienlaikus izveidot izpildlaika politikas, kas joprojām garantē drošību?
Šāds skatījums maina prioritātes. Darbību taksonomija un čaulu pilnīgums kļūst mazāk svarīgi. Svarīgākas kļūst izpildlaika politikas, novērojamība un katra soļa izvērtēšana. Modeļa spējas un sistēmas uzbūve viena otru neaizstāj. Modeļiem pilnveidojoties, sistēmas darbs kļūst nevis mazāk, bet gan vēl svarīgāks.
Pārlūkprogrammu aģenti demonstrācijās bieži darbojas veiksmīgi, jo uzdevums ir šaurs un vide — labvēlīga. Ražošanas sistēmām nepieciešams kas cits: ierobežota izpilde, instrumentēta darbība un novērtēšana, kas spēj atšķirt pareizu rezultātu no veiksmīgas sagadīšanās.
Mazāk čaulu projektēšanas. Vairāk sistēmu inženierijas.
Lai gan pievērsāmies pārlūkprogrammu aģentiem, tas iezīmē plašāku skatījumu uz datora lietošanu kā sistēmu disciplīnu.