Надвор од возбудата околу ВИ: Практични агенти за автоматизирање на вашиот работен тек при програмирање
Алатките за кодирање со ВИ лесно е да се отфрлат како автоматско довршување со подобар маркетинг. Таквиот став го пропушта местото каде што се појавува вистинската вредност: не во барањето од модел да напише цела апликација, туку во доверувањето ограничен, повторлив дел од инженерската работа на агент што може да го испита контекстот, да преземе дејства и да извести што се случило.
Разликата е важна. Асистент за разговор одговара на прашања. Агент работи кон цел користејќи алатки, повратни информации и ограничувања. Може да прочита задача, да пребара складиште, да изврши тест, да подготви закрпа и да запре кога проверката ќе не успее. Тоа не го прави автономен во смисла на замена на инженерското расудување. Го прави корисен на ист начин како што е корисен добар процес за градење: претвора рутински процес во нешто доследно, видливо и полесно за надзор.
Почнете со работни текови, не со големи амбиции
Најсигурните проекти со агенти почнуваат со фрустрирачки, но добро дефиниран работен тек. „Подобрете ја нашата кодна база“ не е изводлива задача. „Најдете ги неуспешните единични тестови по ажурирање на зависност, класифицирајте ги неуспесите и предложете ја најмалата компатибилна поправка“ е многу подобро.
На практичен агент му треба јасен влез, ограничен сет дозволени дејства, дефиниција за завршеност и патека за ескалација. Ако нешто од тоа е нејасно, системот ќе компензира со претпоставки. Претпоставките се прифатливи во нацрт; опасни се при распоредување или промена на податоци во продукција.
Добрите почетни кандидати обично имаат три карактеристики: се случуваат често, следат препознатливи обрасци и човек може брзо да го прегледа излезот.
- Тријажа на новопријавени грешки и барање недостасувачки детали за репродукција.
- Сумирање на промени во барањата за повлекување и идентификување датотеки што заслужуваат фокусиран преглед.
- Генерирање прва верзија на белешки за изданието од споените промени.
- Ажурирање на документацијата кога ќе се открие одобрена промена на интерфејс.
- Истражување неуспеси на тестови и собирање релевантни дневници, разлики и веројатни одговорни лица.
Овие работни текови се вредни бидејќи агентот ја намалува подготвителната работа. Развивачот и понатаму одлучува дали дијагнозата е исправна, закрпата е точна и промената треба да се испорача.
Дизајнирајте го агентот околу докази
Најдобрите агенти за кодирање не звучат самоуверено; тие ја прават сигурноста проверлива. Нивниот излез треба да ги одделува набљудуваните факти од заклучоците и од предложените дејства. Ова е мала дизајнерска одлука со голема оперативна корист. На прегледувачите им дава брз начин да го потврдат расудувањето без да го третираат прозниот текст како доказ.
Корисен оперативен циклус
Робустен циклус е едноставен: соберете контекст, формирајте хипотеза, преземете повратно дејство, потврдете го резултатот и продолжете или ескалирајте. Агентот треба да ги зачува артефактите од секоја фаза: извршени команди, променети датотеки, излез од тестови и неодговорени прашања.
Цел: Решете неуспешен тест по надградба на библиотека
1. Прочитајте го излезот од неуспешниот тест.
2. Испитајте ја променетата верзија на зависноста и релевантните места на повикување.
3. Предложете минимална закрпа.
4. Извршете го насочениот тест.
5. Извршете го поврзаниот пакет тестови.
6. Ако потврдата не успее, запрете и пријавете ги доказите.
Ова е намерно помалку драматично од „поправете сè автоматски“. Исто така, многу поверојатно е да биде доверливо. Агент што запира со корисен извештај често е повреден од оној што продолжува да се обидува сè додека не создаде голема, збунувачка разлика.
Дајте им на агентите тесни дозволи
Пристапот до алатки е местото каде што агентот станува оперативно корисен и каде што ризикот брзо расте. Читањето изворни датотеки е различно од создавањето гранки. Создавањето гранки е различно од менувањето инфраструктура. Менувањето инфраструктура е различно од нејзиното распоредување.
Користете го принципот на најмали привилегии како карактеристика на производот, не само како безбедносна политика. Почнете со пристап само за читање каде што е можно. Дозволете запишување само во изолирани гранки или привремени работни простори. Барајте изречно одобрување за дејства што влијаат на споделени средини, акредитиви, податоци за клиенти, наплата или сообраќај во продукција.
Исто така помага дозволените дејства да бидат изречни во самата задача. Наместо да кажете „ажурирај ја услугата“, наведете дека агентот смее да уредува код на апликацијата, да го извршува пакетот тестови и да отвори нацрт барање за повлекување, но не смее да спојува, распоредува, ротира тајни или да менува контроли за пристап. Јасните граници го намалуваат случајното проширување на опсегот и ги олеснуваат неуспесите за ограничување.
Користете модели за расудување, алатки за вистина
Јазичен модел е добар во толкување двосмислен јазик, организирање можности и составување објаснувања. Тој не е извор на вистина за тековното складиште, околината за градење или однесувањето при извршување. Тие факти мора да доаѓаат од алатки и авторитативни системи.
Оваа поделба води до здрав образец за имплементација. Нека моделот одлучи што следно да испита, но барајте да испита. Нека предложи команда, но зачувајте го излезот од командата. Нека состави промена во кодот, но извршете ги релевантните проверки пред да прикажете успех.
На пример, агент што прегледува миграција на база на податоци не треба да тврди дека барањето е безбедно само затоа што изгледа разумно. Може да идентификува потенцијални проблеми со заклучување или компатибилност, а потоа да бара валидација во подготвителна средина и план за воведување одобрен од човек. Моделот обезбедува структурирано внимание; околината обезбедува докази.
Изградете патеки за неуспех пред среќните патеки
Многу демонстрации на агенти прикажуваат едно успешно извршување. Работните текови во продукција треба да одговорат на помалку гламурозни прашања: Што се случува кога командата за тест истекува? Што ако пребарувањето во складиштето врати премногу контекст? Што ако моделот не може да го одреди следниот безбеден чекор? Што ако повик на алатка успее, но резултатот е нецелосен?
Поставете ограничувања за повторни обиди, изминато време, променети датотеки и опсег на команди. Повторен обид треба да има причина, како што е минлив мрежен неуспех или привремено недостапна услуга. Повторувањето на истото неуспешно дејство без нови информации не е истрајност; тоа е потрошена пресметковна моќ и шум.
- Запрете по ограничен број обиди.
- Забележете го последниот успешен чекор и точниот излез од неуспехот.
- Вратете концизно предавање со препорачани следни дејства.
- Барајте човечки преглед кога ризикот или неизвесноста ќе надминат дефиниран праг.
Овие заштитни мерки ги прават агентите посмирени под притисок. Тие исто така го олеснуваат усвојувањето бидејќи инженерите можат да разберат како системот се однесува кога не го знае одговорот.
Мерете го работниот тек, не спектаклот
Успехот не е бројот на задачи што ги допира агентот. Мерете дали го скратува времето до корисни информации, ја намалува повторливата координација, го подобрува квалитетот на прегледот или спречува познати класи грешки. Следете ги стапките на прифаќање и корекција за излезите на агентот. Ако прегледувачите рутински ги преработуваат неговите резимеа или ги отфрлаат неговите закрпи, на работниот тек му треба подобар контекст, потесен опсег или различно ниво на автоматизација.
Држете канал за човечки повратни информации блиску до работата. Едноставен исход „прифатено“, „уредено“ или „одбиено“, придружен со кратка причина кога е практично, е покорисен од општи тврдења дека агентот е корисен. Со текот на времето, тие исходи откриваат каде на поттикнувањето, алатките и дизајнот на процесот им треба внимание.
Трајната предност е подобра инженерска практика
Практичните агенти ги наградуваат тимовите што веќе ги вреднуваат тестовите, малите промени, набљудливите системи и изречната одговорност. Тоа не е ограничување; тоа е поентата. ВИ ги разоткрива нејасните процеси бидејќи мора да ѝ се каже она што внимателен инженер инаку би го заклучил од споделениот контекст.
Вредното прашање не е дали агентот може да пишува код. Туку дали може одговорно да премести реален работен тек од „некој треба да го разгледа ова“ во „еве ги доказите, предложениот следен чекор и резултатот од потврдата“. Градете за тој скромен, но значаен исход. Возбудата брзо згаснува; сигурен работен тек продолжува да се исплаќа.