Главна навигација

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

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

Извршно резиме

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

  • Ова овозможува голема класа практични задачи што сега се расцепкани низ различни интерфејси, како целосни резервации, наплата во е-трговија, повеќечекорно планирање патувања и административни процеси без соодветен чист 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 не е самиот модел, туку рамката од пониско ниво. Ако на моделот му дадете помалку, но помодуларни алатки од пониско ниво — односно терминалот — добивате подобри резултати при повикувањето алатки, главно затоа што агентот може да расудува и да создава приспособени скрипти за конкретната задача, наместо да се обидува да користи генерализирани алатки што го загадуваат прозорецот за контекст.

Во практиката на автоматизација на прелистувачи, тоа значи дека моделот може директно да ја испитува активната состојба на страницата, да преминува низ рамки и да создава наменски код за интеракција со тековниот интерфејс, наместо сè да пресликува врз фиксен сет однапред изградени дејства.

Моделот се однесува помалку како избирач, а повеќе како автор за време на извршувањето. Ја испитува тековната состојба, расудува за интерфејсот и ја синтетизира логиката за интеракција за конкретната ситуација. Може да создава повеќечекорни низи, да се приспособува на невообичаени процеси и да ги проверува резултатите пред да продолжи. Кога некое дејство ќе откаже, моделот ја гледа основната грешка и сам се коригира. Ова е помоќно и поризично — но многу повеќе одговара на вистинската природа на проблемот.

Важно е дека отстранувањето на слојот за апстракција не го прави системот помалку дисциплиниран. Само ја преместува дисциплината.

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

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

Еден резултат од оваа промена е што кодот на производот често станува поедноставен, иако системот во целина станува поспособен. Наместо да ги кодира шемите на интеракција како повеќекратно употребливи омотачи, агентот го синтетизира однесувањето за време на извршувањето. Одржувате мал сет моќни примитиви и ограничена извршна околина, наместо сè поголем број специјализирани алатки и логика за гранични случаи.

Ова го менува и начинот на кој системот генерализира. Агент заснован на омотачи добро генерализира на задачи што личат на омотачите што веќе сте ги создале. Агент со ограничена извршна околина генерализира на задачи што делат иста извршна основа, дури и кога видливиот интерфејс е различен.

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

Компонентата за повеќекратна употреба не е списокот со дејства. Тоа е способноста на моделот да ја испита состојбата, да дејствува безбедно и да ги провери резултатите.

Ограничувајте, не помагајте прекумерно

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

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

Помоќната извршна површина бара и построг безбедносен модел. Штом агентот веќе не е ограничен на мал сет однапред дефинирани дејства, тој практично работи директно со реален софтвер. Тоа веднаш го менува профилот на ризик.

При дизајнирањето треба да се земат предвид четири прашања:

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

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

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

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

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

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

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

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

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

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

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

Помалку дизајнирање омотачи. Повеќе системско инженерство.

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

Автор

Yuxi Huan, Yuliyan Stefanov Savchev и Sheah Wen Liaw