Од омотача прегледача до ограниченог коришћења рачунара

Способнији агенти захтевају мање апстрактне аутоматизације прегледача и пажљивије ограничена окружења за извршавање.

Сажетак за руководиоце

  • Шта је коришћење рачунара и зашто је важно? Коришћење рачунара је једноставна идеја са далекосежним последицама: уместо да од модела тражимо одговоре на питања, тражимо да управљају софтвером — да се крећу кроз веб-сајтове, попуњавају обрасце, пролазе кроз токове рада кликовима и самостално обављају задатке од почетка до краја.

  • Тиме постаје могуће обављати велики број стварних задатака који су сада расути по различитим интерфејсима, као што су резервације од почетка до краја, куповина у онлајн продавницама, планирање путовања у више корака и административни токови рада без одговарајућег, уредног API-ја. То нису нови проблеми. Нова је могућност да их решавамо моделима опште намене.

  • Новији системи компанија Anthropic и OpenAI показали су агенте који не само што делују већ и резонују о стању, опорављају се од грешака и у ходу праве решења прилагођена задатку. Тако прегледач постаје опште окружење за извршавање агената, али се одмах намеће пројектантско питање: колики део тог окружења треба изложити моделу?

  • Рани системи су на то одговорили тако што су прегледач обавили фиксним скупом безбедних, унапред дефинисаних радњи. Као што ћемо образложити у овом тексту, тај приступ достиже своје границе.

Дијаграм који илуструје сажетак за руководиоце.

При изради агената за прегледач јавља се познат нагон: не верујте моделу превише.

Зато правимо омотач око прегледача. Излажемо унапред дефинисане алате као што су click, type, scroll, select и read_text. Поједностављујемо објектни модел документа (DOM). Сужавамо простор могућих радњи. Покушавамо да понашање учинимо разумљивим и управљивим помоћу апстракција које сами пројектујемо.

То је разуман почетни приступ. Али све више се показује и као погрешна дугорочна архитектура.

Како се гранични модели побољшавају, проблем више није само у томе што модел нема довољно алата. Проблем је у томе што га приморавамо да ради кроз апстракције које уклањају превише детаља основног система. Неуредно и динамично окружење сажимамо у фиксни интерфејс за радње, а затим од модела тражимо добре резултате упркос том губитку информација.

Тај компромис постаје све мање привлачан.

Промена коју истражујемо може се једноставно описати, али има значајне последице. Уместо да агента посматрамо као бирач унапред дефинисаних радњи, посматрамо га као синтетизатор програма који ради у ограниченом окружењу за извршавање.

Модели су постали заиста добри и више им нису потребне ваше апстраховане заштитне ограде — потребан им је цео простор радњи како би осмислили, извршили и усавршавали задатак док не остваре циљ.

Овај текст говори о преласку са аутоматизације прегледача препуне апстракција на ограничено коришћење рачунара и о томе шта се мења када се системи тако пројектују.

Зашто апстракције престају да функционишу

Проблем није у томе што су фиксни интерфејси за радње концептуално погрешни. Проблем је у томе што им веб не иде наруку.

Дијаграм који илуструје зашто апстракције престају да функционишу.

Савремени интерфејси изграђени су у оквирима React, Vue и Angular, уз асинхрона ажурирања стања, системе синтетичких догађаја и уграђене виџете независних добављача који се налазе у iframe оквирима другог порекла и имају сопствене животне циклусе. Омотач који каже „унеси текст у ово поље“ исправан је само ако се страница слаже с вашом дефиницијом уноса текста. Многе се не слажу. Директно постављање вредности често у потпуности заобилази механизам оквира за откривање промена. Поље делује попуњено. Провера ваљаности се никада не покрене. Образац и даље не ради.

То можете закрпити. Можете додати посебне случајеве за React поља, послати догађаје blur након фокусирања и сачекати да се мрежни саобраћај умири пре читања стања. Свака закрпа је локално исправна. Заједно се претварају у систем који је све теже одржавати и који је све више прилагођен само сајтовима које сте већ видели.

Дубљи проблем је то што у слој апстракције уграђујете претпоставке о начину на који интеракције треба да функционишу, а затим откривате да веб има другачије претпоставке.

Шта се дешава када се апстракција сусретне са стварним током

Размотрите образац за плаћање уграђен преко система Stripe или Adyen у iframe другог порекла. Ваш омотач не може директно да му приступи јер се налази на другом пореклу. Ваш алат read_text не може да види његово унутрашње стање. Ваш алат type не може да приступи његовим пољима. Агент заснован на омотачима ту наилази на зид. Апстракција је пројектована за главни документ. Стварни задатак налази се тамо где апстракција не може да види.

Слично неслагање јавља се и у мање очигледним токовима. Падајући мени којим управља програмски оквир можда уопште неће реаговати на директне кликове јер видљиви елемент није стварна контрола. Можда ће бити потребан низ догађаја са тастатуре како би се покренула промена унутрашњег стања. Споља гледано, делује да је на елемент могуће кликнути. Апстракција каже „кликни“. Ништа се не дешава.

Или замислите модални ток у више корака у којем видљива ажурирања DOM-а касне за променама унутрашњег стања. Исправна следећа радња зависи од промене стања која се још не види у елементима доступним омотачу. Агент заснован на омотачима зато делује прерано или чита застарело стање јер ради на основу непотпуне слике система.

У сваком од тих случајева апстракција скрива сигнале који су агенту заиста потребни.

Модел који ради на нижем нивоу — испитује активни DOM, резонује о границама оквира и синтетише низ интеракција за ту конкретну површину — може да се снађе у тим ситуацијама. Није реч о томе да је модел сам по себи паметнији. Ствар је у томе што има приступ информацијама које су раније биле уклоњене.

Архитектонска промена

Промена на којој радимо може се једноставно описати: уместо да од модела тражимо да бира међу унапред дефинисаним радњама, дајемо му извршну површину нижег нивоа и ограничавамо је правилима извршавања, а не пројектовањем апстракција.

Ова пројектантска одлука произлази из шире промене у сектору, који све више даје предност примитивним алатима нижег нивоа. Они користе природну способност агента да током извршавања исправља грешке и пише квалитетан кôд, за разлику од фиксних специјализованих алата који јесу робусни, али моделу одузимају способност прилагођавања различитим окружењима.

Узмите у обзир успех алата Claude Code као једног од главних избора многих програмера и шири прелазак сектора на агенте засноване на терминалу. Највећа предност алата Claude Code није сам модел, већ окружење нижег нивоа. Ако моделу дамо мање модуларних алата нижег нивоа — то јест, терминал — добијамо боље позивање алата, углавном зато што агент може да резонује и прави прилагођене скрипте за конкретан задатак уместо да покушава да користи уопштене алате који оптерећују прозор контекста.

У пракси, код аутоматизације прегледача то значи да модел може директно да испитује тренутно стање странице, пролази кроз оквире и прави прилагођени кôд интеракције за тренутни интерфејс, уместо да све мапира на фиксни скуп унапред направљених радњи.

Модел се понаша мање као бирач, а више као аутор логике која се ствара током извршавања. Испитује тренутно стање, резонује о интерфејсу и синтетише логику интеракције за конкретну ситуацију. Може да саставља низове од више корака, прилагођава се необичним токовима и проверава исходе пре него што настави. Када радња не успе, модел види основну грешку и сам се исправља. То је моћније и ризичније — али далеко боље одговара стварној природи проблема.

Важно је да уклањање слоја апстракције не чини систем мање дисциплинованим. Оно само премешта ту дисциплину.

Послови који су раније припадали пројектовању омотача и обради рубних случајева премештају се на три места: у инструкцију (која постаје облик оперативне обуке), у окружење за извршавање (које намеће границе као што су опсег кретања, осетљиве радње и понашање при поновном покушају) и у слој за процену (који не оцењује само да ли је задатак успео већ и да ли су међукораци били исправни). Мање крхких апстракција. Снажнији системи у окружењу.

Изненађујућа последица: једноставнији кôд производа, шира генерализација

Један од исхода ове промене јесте да кôд производа често постаје једноставнији, иако цео систем постаје способнији. Уместо да обрасце интеракције уграђује у вишекратно употребљиве омотаче, агент синтетише понашање током извршавања. Одржавате мали скуп моћних примитива и ограничено окружење за извршавање, уместо све већег броја специјализованих алата и логике за рубне случајеве.

То мења и начин на који систем генерализује. Агент заснован на омотачима добро генерализује на задатке који личе на омотаче које сте већ направили. Агент са ограниченим окружењем за извршавање генерализује на задатке који деле исту извршну основу, чак и када им се видљиви интерфејси разликују.

На пример, интеракција са обрасцем за претрагу, поступком резервације или страницом са подешавањима може изгледати потпуно другачије на нивоу корисничког интерфејса. Али у основи деле исте обрасце: читање стања, покретање догађаја, проверу исхода и обраду асинхроних ажурирања. Систем који ради на том нивоу природније преноси своје способности са једног задатка на други.

Компонента за вишекратну употребу није списак радњи, већ способност модела да испита стање, безбедно делује и провери резултате.

Ограничавајте, не помажите превише

Дијаграм који илуструје начело „ограничавајте, не помажите превише“.

Најјаснија поука овог рада јесте да се поузданост не постиже додавањем помоћних функција моделу. Често се постиже тако што му се да мање примитива, али моћнијих, а затим се они ограниче на прави начин. Прекомерна помоћ уграђује претпоставке о томе како задатак треба обавити директно у кôд. Ограничења одређују безбедне границе рада и омогућавају моделу да пронађе боља локална решења.

Моћнија извршна површина захтева и прецизнији безбедносни модел. Када агент више није ограничен на мали скуп унапред дефинисаних радњи, он практично ради директно у стварном софтверу. То одмах мења профил ризика.

При пројектовању треба узети у обзир четири питања:

Излагање података. Ако агент користи стварне интерфејсе, често ће наилазити на осетљиве информације. Зато су неопходни дисциплинован приступ маскирању и контрола приступа. Податке треба откривати само када су неопходни за извршавање, а евиденцијама и траговима треба пажљиво руковати како могућност надзора не би постала најосетљивији део система.

Опсег извршавања. Моћан агент не сме да делује без ограничења. У пракси то значи ограничавање места до којих може да се креће, домена којима може да приступи и система са којима сме да комуницира. Та ограничења треба спроводити на нивоу окружења за извршавање, а не препустити их конвенцијама у инструкцијама.

Поузданост окружења. Савремени интерфејси могу да садрже обмањујућа или активно злонамерна упутства, садржај и токове. Уметање инструкције путем садржаја странице представља стварну површину за напад. Систему су потребни јасна хијерархија упутстава, провере ваљаности и услови за прекид како агент не би следио нежељена упутства.

Спектар аутономије. Не треба све радње да буду потпуно аутономне. У многим производним окружењима важно је посматрати аутономију као спектар. Систем може да делује веома самостално при истраживању и извршавању, а да и даље захтева одобрење за одређене категорије радњи.

Основно начело је једноставно: ако моделу дајете већу моћ, морате ојачати и систем који га окружује. Аутономија без правила није спремна за производну употребу.

Нови оквир размишљања који нам је променио приступ

Престали смо да се питамо: које радње прегледача треба изложити?

Почели смо да се питамо: како моделу можемо обезбедити цео простор радњи — и како око њега успоставити правила извршавања која ће га ипак учинити безбедним?

Та промена перспективе мења оно што је важно. Таксономије радњи и потпуност омотача постају мање важни. Правила извршавања, могућност надзора и процена сваког корака постају важнији. Способност модела и пројектовање система не могу заменити једно друго. Како се модели побољшавају, улога система постаје важнија, а не мање важна.

Агенти за прегледач који раде у демонстрацијама често успевају зато што је задатак узак, а окружење предвидљиво. Производни системи захтевају нешто друго: ограничено извршавање, инструментовано понашање и процену која може да разликује исправан исход од срећне случајности.

Завршна мисао

Мање пројектовања омотача. Више системског инжењерства.

Иако смо се усредсредили на агенте за прегледач, ово указује на шири приступ коришћењу рачунара као системској дисциплини.

Autor

Yuxi Huan, Yuliyan Stefanov Savchev и Sheah Wen Liaw