Галоўная / Артыкулы

Інжынерыя абвязак для карпаратыўных AI-агентаў

Інжынерыя абвязкі для карпаратыўных агентаў: мадэль, агент і абвязка — у чым розніца, навошта яна карпаратыўным сістэмам і як яе ацэньваць.

Выдавец: REACTAPP.TOP27 хв чытання6175 слоў

Крыніцы: Engineering Enterprise AI Agent Harnesses

Наступныя прыміткі паказваюць практычны падход да выкарыстоўвання «Engineering Enterprise AI Agent Harnesses». Акцэнт ставіцца на контракты, перакананняя і месцы для коду, а не на мотывацыйныя аспекты. Калі працуеце на этапы аглявання, спачатку запісайце контракт: неабяжныя даны, сігнал успеху і тое, што выканаецца у разе частковага невыпалення. Такі спіс контроля дапамагае заліцвачыць пазнейшыя змены ў кодзе. Храніце настройкі парадульна ад коду прыемліка. Файлы сераўіса, хранальнікі секрэтных дадзеных і флагі функцый павінны знаходзіцца ў адном месцы, куда аператары можуць адбавляць без неабяжнага чытання всіх элементаў.

1. Мадэль, агент і інструмент — гэта разныя рычы

Агент модэлю 1 і ўсе этапы працуюць наякша, калі іх розглядаць як вімерную паверхню. Зафіксавайце адны ідэальны прыклад, адну справу з бягам і прыметку па вярнэнню да пачатковага стану пры расшырэнні масштаба. Дакументавайце як шлях успеху, так і шлях вярнэння. Перапрыбуткі, людзкі контроль і обработка некорэктных паведамленняў ёсць часткай продукту, а не чымсь, што дадзецца дагэўна пазніяй.

Observe → Reason → Validate → Act → Observe

2. Чаму корпаратывныя сістэмы патрабуюць спецыяльных інструментаў

Сістэмы падчоргана «2 Why» працуюць наякша, калі іх спрыяваць як меркаваемую структуру. Зберагчыце адну «золатую» транскрыпцію, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расшырваць сферу ўпрыема. Валіце маленькія, тэставаныя элементы замест большых скрыптов. Калі якісь крок не выйшае, прычына неудачы павінна вказваць на адну конкрэтную адпаведнасць, а не на заплутаны ланцужок дзеянняў. Адкройце інструменты з вузкімі схемамі і чысткімі пазначэннямі побачных эфектаў. Адпаведальныя особы павінны ведаць, якія вызовы моцнаўляюць стан, перш чым автаматычна схваліць іх.

3. Архітэктура сістэмы агента падпрыема

Этап 3 – агент падчырнёўкі прэдпрыемства – працюе наякша, калі яго спрыяваць як мерыемую паверхню. Зафіксавайце адна ідэальная транскрыпцыю, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расшырваць сферу дзеяння. Спрыявайце гэты этап як кантракт межа вхіднымі дадзеннямі і паверыжанымі выхіднымі рэзультатамі. Даўце назвы артыфактам, задаць крытэрыя успеху і не падтрымайце тыхія частковыя завершэння. Адкройце інструменты з вузкімі схемамі і чысткімі пазначэннямі побачных эфектаў. Адпаведальныя за хоставанне должны ведаць, якія вызовы мутуюць стан, перш чым автаматычна ўзгодзіць іх.

Граніцы карыстальніка і прыкладнага програму

Рубіж межы карыстальніка і прыкладнення работае наяўней, калі яго спрыяваць як вімерную паверхню. Запісаўце адна ідэальная транскрыпцыя, адзін прыклад неудачы і прыметку па аброшчэнні працы пры расшырэнні масштаба. Запісвайце часы выканання і косты токенаў або запытак па боку функцыйнальных рэзультатаў. Відразлівасць костаў з самага пачатку запобегае неспакойным рахункам, калі працэс пераходзіць з дэмовай асяроддзя ў спяльнаныя сераўы. Адкрывайце інструменты з вузкімі схемамі і чысткімі пазначэннямі пабочных эфектаў. Хостам неабходна знаты, якія вызовы мутуюць стан, перш чым яны будуць автаматычна затверджаны.

Планавальнік і менеджэр стану

Этапы планавання і керування станам працуюць найэфектывней, калі іх розглядаць як мерыябельную паверхню. Запісаце адзін ідэальны прыклад працы, адзін прыклад неудачы і прыметку паўрануці, перш чым расшырваць сферу дзеяння. Зберагаюце настройкі паза кодам прыемліка. Файлы сераўнавання, хранільнікі секрэтных даных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаць адбавляць контроль без неабходнасці чытання всей структуры. Адкрывайце інструменты з вузкімі схемамі і чысткімі пазначэннямі побачных эфектаў. Хостам неабходна ведаць, якія вызовы мутуюць стан, перш чым яны автаматычна схваляюць іх.

Час выканання модэлю

Этап выканання модэлю працюе наявнасць лепшая, калі яго розглядаюць як параметрызаваную плошчу. Запісаце адна ідэальная транскрыпцыя, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць масштабы. Дакументавайце як успішны, так і патовы шляхі рашэння проблем. Перапрыбуткі, людзкія контрольны пункты і обработка некорэктных паведамленняў ёсць часткай продукту, а не элементамі пазнейшага дапрацоўкі. Задазвайце ліміт токенав на кожны раунд і на кожную сесію. Інструменты-агенты агрэсывна расшырваюць кантэкст; строгі ліміты запобегаюць таму, каб дэманстрацыі ператварыліся на неспакоўныя рахункі.

Рэжыстр інструментаў

Этап рэйстрырування інструмента працюе найэфектыўней, калі яго спрыяваць як мерыемую паверхню. Зафіксавайце адна ідэальная транскрыпцыя, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць сферу дзеяння. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, прычына неудачы павінна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцюг дзеяння. Актуалізавайце інструменты з вузкімі схемамі і чысткімі пазначэннямі побачных наследкаў. Хостам неабходна знаты, якія вызовы мутуюць стан, перш чым яны автаматычна схваляюць іх.

Механізм правіл

Этап дваржэбніка правіл працюе наяўна, калі яго спрыяваць як мерыемую паверхню. Зберагчыце адна ідэальная транскрыпція, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць сферу дзеяння. Спрыявайце гэты этап як кантракт межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Даўце назвы артыфактам, задаць крытэрыя успеху і не падзеўляйцеся частым, непূরным выкананнем задач. Адкройце інструменты з вузкімі схемамі і чысткімі пазначэннямі побачных эфектаў. Адпаведальныя за эксплуатацыю должны ведаць, якія вызовы мутуюць стан, перш чым автаматычна схваліць іх. Этап дваржэбніка правіл працюе наяўна, калі яго спрыяваць як мерыемую паверхню. Зберагчыце адна ідэальная транскрыпція, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць сферу дзеяння. Зберагчыце настройкі параду ад коду прыемлівача. Файлы сераўіса, хранільнікі секрэтных даных і флагі функцый должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць без неабходнасці чытання всей структуры.

Норматывы

Для этапы Guardrails неабяжна ўзначыць вхідныя даны, адпаведальнага за крок і крэтыры завершэння пры змяне коду. Аперацыйныя працавнікі должны магчымае запускаць крок з вядомай точкі контролю, не падозрываючы схованы стан. Неабяжна задокументаваць як шлях успеху, так і шлях вярнення. Перапрыбуткі, людзкіе пераказы і апрацоўка некорэктных паведамленняў ёсць часткай продукту, а не пасляднім дапрацоўкам. Автэнтыфікуйцеся на воратах і паўторна автарызуйцеся на роўні дадзенняў. Толькі токэн-носіцель не ёсць межай арэндаванага рэсурсу.

Людзкія пераказы

Для этапы апраўлення чалавекам неабходна пазначыць вхідныя даны, адпаведальнага за крок і крэтыры завершэння пры змяне коду. Аперацыйныя працавнікі должны магчымае перадзеяць крок з вядомай точкі контролю, не прабуючы спадарожваць схованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выйшоў, прычына неудачы должна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны працэс. Автэнтыфікуйцеся на входзе і паўторна надайце правыя на працу з данымі. Толькі токен-носіцель не ёсць межай адпаведальнасці.

Екзэкутар адзінакоў і сандбокс

Для екзэкутара адзінства і стадыі сандбокса неабходна ўзначыць вхідныя даны, адпаведальнага за крок і крэтыяры завершэння пры змены коду. Аператары должны магчымаць перзапуск крока з вядомай точкі контролю, не падозрываючы прыхованы стан. Спрыяйце цій стадыі як даговору межаў між вхіднымі данымі і перакананымі выходнымі рэзультатамі. Даўце назвы артыфактам, узначыць крэтыяры успеху і адмовіцеся ад беззвучнага частковага завершэння. Аўтэнтыфікуйцеся на воратах і паўтарна автарызавайцеся на роўні дадзенняў. Толькі токэн-носіцель не ёсць межай арэнды. Для екзэкутара адзінства і стадыі сандбокса неабходна ўзначыць вхідныя даны, адпаведальнага за крок і крэтыяры завершэння пры змены коду. Аператары должны магчымаць перзапуск крока з вядомай точкі контролю, не падозрываючы прыхованы стан. Зберагачыце настройкі за межамі коду аплікацыі. Файлы сераўнавальнага сяродовішча, хранілішчы секрэтных дадзенняў і флагі функцый должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць, не чытаяўшы весь граф.

Памяць і даны

Калі працюеце над этапам памяці і даных, спачатку запісайце умовы працы: неабяжлівыя вхідныя даны, сігнал успеху і тое, што выканаецца у разе частковага невыпалення. Такі спіс контроля дапамагае заліцварыць пазнейшыя змены коду. Документавайце як шлях успеху, так і шлях вярнення да нормальнага стану. Перапрыбуткі, людзкі контроль і обработка некорэктных паведамленняў ёсць часткай продукту, а не елементамі пазнейшай дорабачэння. Фіксуйце назву інструмента, хэш параметраў, час адклікання і рынак кожнага вызову. Без такога лёгкага следу дэбагаванне можа зайняць гады.

Візуабельнасць і трэсы

Калі працуеце над стадзіяй абсарбейабілітэту і трэсаў, спачатку запішыце кантракт: неабходныя вхідныя даны, сігнал успеху і тое, што выходзіць у разе частковага абякання. Такі спіс пераканальвае ў тым, каб пазнейшыя змены коду былі чыстымі. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок абякае, прычына абякання павінна вказваць на адну адпаведальнасць, а не на заплутаны ланцюг задач. Запішыце назву інструмента, хэш аргументаў, час затрымкі і рынак кожнага вызову. Дэбаггін без такога следу марнуюць гадзіны.

Адгукі і практычныя рэкамендацыі

Калі працюеце на стадыі адзынакоўвання і паветраных адказаў, спачатку запісайце кантракт: неабходныя даны, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс пераканальвае залічваць пазнейшыя змены коду адпаведна. Спрэцьвуйце да гэтай стадыі як да кантракта межу данымі і перакананымі выходамі. Дайце назву артыфактам, задацьце перакананні на успех і адмовіцеся ад тыхоўкага частковага завершэння. Запісвайце назву інструмента, хэш аргументаў, час затрымкі і рынак кожнага вызову. Дэбаггаванне без такога следу марнуе гадзіны. Калі працюеце на стадыі адзынакоўвання і паветраных адказаў, спачатку запісайце кантракт: неабходныя даны, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс пераканальвае залічваць пазнейшыя змены коду адпаведна. Зберагаюце канфігурацыю за межамі коду прыемлі. Файлы сяродавішча, хранілішча секрэтных дадзеных і флагі функцыяў должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць без неабяжнага чытання всіх элементаў.

4. Паспортны выконанне запуску агента

Паспортны выконанне на 4 стадзіях лепша працуе, калі яго розглядаюць як меравальную плошчу. Зберагачыце адна ідэальная транскрыпція, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць масштабы. Дакументавайце як успішны, так і вярнучыся шляхы развіцця. Перапрыбуткі, людзкія контраліны і обработка некорэктных паведамленняў ёсць часткай продукту, а не пасляэтапным дорабкам. Адкройце інструменты з вузкімі схемамі і чысткімі пазначэннямі побачных эфектаў. Хостам неабходна ведаць, якія вызовы мутуюць стан, перш чым яны автаматычна схваляюць іх.

Шаг 1 — Прыем і класыфікацыя целі

Шаг 1 «Прыем і падготавка» найэфектывней працюе, калі яго розглядаць як вімерную паверхню. Запісаце адна «золатая» транскрыпцыя, адын случай неудачы і прыметку па вярнэнні да пачатковага стану пры расшырэнні масштаба. Валіце варот на маленькія, тэставаныя элементы замест большых скрыптов. Калі шаг не выйшаў, прычына неудачы павінна вказываць на адную адпаведальнасць, а не на заплутаны ланцужок задач. Адкройце інструменты з вузкімі схемамі і чысткімі пазначэннямі побачных эфектаў. Хостам неабходна знаты, якія вызовы мутуюць стан, прытаму яны можаць автаматычна санкціонаваць.

Шаг 2 — Стварэнне обмежанага кантэксту

Этап «Стварэнне, 2: абмежаныя параметры» працюе наўзяй калі яго спрацоўваюць як мерыемую паверхню. Зберагачыце адна ідэальная версія выходных дадзеных, адны прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць масштабы. Спрацоўвайце гэты этап як кантракт межа вхіднымі дадзеннямі і перакананымі выходнымі рэзультатамі. Даўце назвы артыфактам, задаць крытэрыя успеху і не падтрымайце тыхню частковую завершэннасць. Адкройце інструменты з вузкімі схемамі і чысткімі пазначэннямі побачных эфектаў. Адпаведальныя за эксплуатацыю должны ведаць, якія вызовы мутуюць стан, перш чым автаматычна ўзяць іх на спрыт. Этап «Стварэнне, 2: абмежаныя параметры» працюе наўзяй калі яго спрацоўваюць як мерыемую паверхню. Зберагачыце адна ідэальная версія выходных дадзеных, адны прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць масштабы. Зберагачыце настройкі параду ўнутры коду прыемлівай программы. Файлы сяродавішча, хранільнікі секрэтных дадзеных і флагі функцый должны знаходзіцца ў аднам месцы, куда аператары можу аўдытаваць іх без неабходнасці чытаць увесь граф.

Этап 3 — Запытаць модэль пра наступны крок

Для этапа 3 «Задаць запіт» неабяжна пазначыць даны, адпаведальнага за этап і крэтыры завершэння пры перадзеі коду. Аперацыйныя працавнікі должны магчымаць перзапуск этапа з вядомай точкі контролю, не прабуючы спадарацца прыватны стан. Неабяжна задокументаваць як шлях успеху, так і шлях вярнення. Перапрыбуткі, людзкіе перакрыцця і апрацоўка некорэктных паведамленняў ёсць часткай продукту, а не яго пазнейшай дапрацоўкі. Калі наступны этап — гэта код або вызов інструмента, лепш выкарыстоўваць структураваныя выходны даны з перакананнем схэмы, чым вольныя тэкстовыя апісанні.

Этап 4 — Перакананне паza модэлем

Для этапы «Параболіка 4: Пераканалаванне звэршэння» неабходна пазначэнне вхідных дадзеных, адпаведнага адпаведнага адпаведнага і крэтарыяў завершэння пры перадзеіснаванні коду. Аператары должны магчымае перадзеіснаваць этап з вядомага пункта контролю, не спрабоўваючы з’ясаваць схованы статус. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі этап не выйшаў, прычына неудачы должна вказываць на адзін конкрэтны элемент, а не на заплутаны ланцоўкі задач. Калі наступны этап — гэта код або вызов інструмента, лепш выкарыстоўваць структураваныя выходныя даныя з параболікаюванням, а не вольнае фарматаванне тэксту.

Этап 5 — Атрыманне згоды, калі гэта неабходна

Для этапы 5 «Атрымана затверджэння» неабяцкова практычна вказаць інпуты, адміністратара шагу і крэтэрыявання для завершэння пры зміне коду. Аперацыйныя працавнікі павінны магчымаць перзапуск шагу з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Спрыяйце цій этапы як даговору межы інпутамі і пасвярджанымі выходнымі данымі. Дайце назву артыфактам, практычна вказаць перагляд успеху і адмовіцеся ад беззвучнага частковага завершэння. Аўтэнтыфікуйцеся на воратах і практычна вказаць правыя на працу з дадзенням. Толькі токэн-носіцель не ёсцца межайю арэнды. Для этапы 5 «Атрымана затверджэння» неабяцкова практычна вказаць інпуты, адміністратара шагу і крэтэрыявання для завершэння пры зміне коду. Аперацыйныя працавнікі павінны магчымаць перзапуск шагу з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Зберагачыце канфігурацыю за межамі коду прыемленае. Файлы сяродавішча, хранільнікі секрэтных дадзеных і флагі функцый павінны знаходзіцца ў адном месцы, якое працавнікі можуць аўдытуваты, не чытаючы весь граф.

Шаг 6 — Выконанне ў кантролюемай асяроддзі

Калі працуеце над шагам 6 «Выконанне», спачатку запісайце умовы: неабяжныя даны, сігнал успеху і тое, што выканаецца у разы частковага невясковасці. Такі спіс пераканае ў тым, што пазнейшыя змены коду будуць чыстымі. Запісуйце адночасна шлях успеху і шлях вясковання. Перапрыбуткі, людзкі контроль і обработка некорэктных паведамленняў ёсць часткай продукту, а не пазнейшым дапрацоўкам. Фіксуйце назву інструмента, хэш параметраў, час адклікання і рынак кожнага вызову. Без такога лёгкага следу дэбагаванне можа зайняць гады.

Шаг 7 — Нормалізацыя спазірвання

Калі вы працуеце над стадзіяй 7 «Нормалізацыя», спачатку запісайце умовы кантракту: неабяжлівыя даны, сігнал успеху і тое, што выканаецца у разе частковага нявыполнення. Такі спіс пераканальвае ў тым, каб пазнейшыя змены коду былі чыстымі. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якаясь стадзія не выканаецца, прычына нявыполнення павінна вказываць на адну адповядальнасць, а не на заплутаны ланцюг задач. Запісвайце назву інструмента, хэш аргументаў, час затрымкі і рынак кожнага вызову. Без такога следу дэбагаванне агента займае гадзіны.

Стадзія 8 — Продаваць чы ўстаць

Калі працуеце над этапам «Продаваць далей» з 8-го крока, спачатку запісайце контракт: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс перакладоў заходзіць пазнейшыя змены коду ў правільным направленні. Спрэцьвуйце да гэтага этапу як да контракту межа данымі і перакананымі выходамі. Дайце назву артыфактам, задаць правіла пераканання успеху і не падтрымайце тыхія частковыя завершэння. Запісвайце назву інструмента, хеш аргументаў, час адклікання і рэзультат кожнага вызову. Дыбаггін без такога следу марнуюць гадзіны. Калі працуеце над этапам «Продаваць далей» з 8-го крока, спачатку запісайце контракт: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс перакладоў заходзіць пазнейшыя змены коду ў правільным направленні. Зберагачыце настройкі параду ўнутры коду прыемленае. Файлы сераў, сховішчы секрэтных даных і флагі функцый павінны знаходзіцца ў адном месцы, якое аператары можаць пераглядаць без неабяжлівага чытання всей структуры.

9-й крок — Стварыць заканчальны адказ і трэйс

Шаг 9 «Стварэнне этапы» працюе наяўней, калі яго расследжваць як вімерную паверхню. Зафіксавайце адна «золатая» транскрыпцыю, адын случай неудачы і прыметку па вярнэнню да поперадньага стану пры расшырэнні масштаба. Дакументавайце як шлях успеху, так і шлях вярнэння. Перапрыбуткі, людзкія контралі і обработка некорэктных паведамленняў ёсць часткай продукту, а не наступным этапам дорабатка. Адкройце інструменты з вузкімі схемамі і чысткімі пазначэннямі побачных эфектаў. Хостам неабходна знаты, якія вызовы мутуюць стан, прычым яны автаматычна не даюць згоды.

5. Прыклад: агент для вырахоўвання дагэнаючых сум

5 прыклада: этап выкарыстоўвання дагэнаючых сум работае наякша, калі яго спрыяваць як мерыемую структуру. Зберагачыце адна ідэальная версія, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расшырваць сферу дзеяння. Валідзіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, прычына неудачы павінна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцужок дзеяння. Ўжывайце інструменты з вузкімі схемамі і чысткімі пазначэннямі побачных наследкаў. Адпаведальныя за эксплуатацыю людзі павінны ведаць, якія вызовы моцна зменіць стан сістэмы, перш чым автаматычна ўзяць рашэнне.

6. Формы неудач, якія прыстрой павінен запобегчыць

Шэсць спосабоў неудачы: этап працюе найэфектывней, калі яго розглядаць як вімерную паверхню. Зафіксавайце адны ідэальны прыклад, адзін кейс неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць масштабы. Разглядзайце гэты этап як кантракт межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Дайце назвы артыфактам, задаць крытэрыя успеху і не падзеўляйцеся частым, непূরным выкананнем задач. Адкройце інструменты з вузькімі схемамі і чысткімі пазначэннямі побачных эфектаў. Адпаведальныя за эксплуатацыю должны ведаць, якія вызовы мутуюць стан, перш чым автаматычна схваліць іх.

Безпека толькі на адзеўленні

Этап абяцкай безпекі, які выключае толькі запыт, работае наяўней, калі яго спрыяваць як мерыемую плошчу. Запісаўце адны ідэальны прыклад працы, адну справу з бягам і прыметкі па поверненню да пачатковага стану прычым перад расшырэнням масштаба. Запісвайце часы выканання і кост токенаў або запытаў разам з функцыйнальнымі рэзультатамі. Відразлівае відображэння костаў з самага пачатку запобегае неспакойным рахункам, калі праця пераходзіць з дэмавай версіі ў спяльныя сераўы. Задаце бюджэт токенаў на кожны раунд і на кожную сесію. Інструменты з агентнымі функцыямі агрэсывна расшырваюць кантэкст; строгі ліміты не дазволяюць дэмавай версіям ператварыцца на неспакойныя рахункі.

Прымытая з’ёднанасць модэлю і інструмента

Этап прымкання модэлю да інструменту без посрэдніка працюе наяўна, калі яго розглядаць як вімерную паверхню. Запісаўце адна ідэальная версія, адзін прыклад неудачы і запіс пра вярненне да пачатковага стану перш чым расшырваць масштабы. Зберагаўце настройкі праза код аплікацыі. Файлы сераўнавання, хранільнікі секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаць адбавляць без неабходнасці чытання всей структуры. Задаўце ліміт токенав на кожны раунд і на кожную сесію. Інструменты з агентным рэжымам агрэсіўна расшырваюць кантэкст; жорсткія ліміты не дазволяюць дэманстрацыям ператварыцца на неспакоючыя рахункі.

Занадта моцныя спакульнаваныя кранты

Этап адміністрування з вялодарнымі правамі працюе найэфектывней, калі яго спрыяваць як мерыемую плошчу. Зафіксавайце адна ідэальная транскрыпцыя, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць сферу дзеяння. Документавайце як шлях успеху, так і шлях вярнэння. Перапрыбуткі, людзкія контраліны і обработка некорэктных паведамленняў ёсць часткай продукту, а не наступным этапам дорабкі. Адкройце інструменты з вузкімі схемамі і чысткімі пазначэннямі побачных эфектаў. Хостам неабходна знаты, якія вызовы мутуюць стан, перш чым яны автаматычна схваляюць ўпраўленні.

Ненадзеяны контэнт, які стае інструкцыямі

Контэнт, які не падае пад зялёным святлам, калі выкорыстоўваецца як інструкцыя, працюе найэфектывнейша, калі яго розглядаюць як мерыемую паверхню. Запісаўце адна ідэальная версія, адзін прыклад неудачы і прыметку па абратанні пакуль не расшыруеце дыячоўку. Валіце вароты малым, тэставаным елементам замест большых скрыптаў. Калі якісьце крок не выйшла, неудача должна вказваць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцужок задач. Адкройце інструменты з вузкімі схемамі і чыткімі пазначкамі пра побачныя эфекты. Хостам неабходна знаты, якія вызовы мутуюць стан, перш чым яны автаматычна схваляюць іх.

Безліміты лупы

Этап «Бесканальныя петлі» працюе найэфектывней, калі яго спрыяваць як меравальную паверхню. Зафіксавайце адны ідэальны прыклад, адну сітуацыю неудачы і прыметку па анулюванні змян перш чым расшырваць масштаб. Спрыяйце цему этапу як кантракту межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Дайце назвы артыфактам, задаце крытэрыі успеху і не падзейцеся частым, непূরным выкананнем задач. Адкройце інструменты з вузкімі схемамі і чысткімі пазначэннямі побачных наследкаў. Адпаведальныя за эксплуатацыю должны ведаць, якія вызовы мутуюць стан, перш чым автаматычна схваліць іх. Этап «Бесканальныя петлі» працюе найэфектывней, калі яго спрыяваць як меравальную паверхню. Зафіксавайце адны ідэальны прыклад, адну сітуацыю неудачы і прыметку па анулюванні змян перш чым расшырваць масштаб. Зберагаюце настройкі праза код аплікацыі. Файлы сяродавішняе сераўісу, хранілішчы секрэтных даных і флагі функцый должны знаходзіцца ў аднам месцы, куда аператары можуць аўдытаваць іх без неабяжнага чытання всіх элементаў.

Логаванне усяго

Для ўсіх стадзій логавання неабходна пазначыць вхідныя даны, адпаведальнага за кожную ступеню і крэтыяяры выходу пры перадзеі коду. Аператары должны магчымаць перзапуск ступені з вядомай точкі контролю, не прабуючы спадарожваць схованы стан. Неабходна адночасная документацыя як успішнага, так і варыянтага падходу. Перапрыбуткі, людзкія перакрыцця і апрацоўка некорэктных паведамленняў ёсць часткай продукту, а не элементамі пазнейшага доўрабкі. Автэнтыфікацыя выканаўцая на воратах, а прабачэнне праваў — на роўні дадзенняў. Толькі токэн-носіцель не ёсць межай адпаведнае часткі продукту.

Зважанне толькі на правільныя адказы

Для этапы «Толькі вімеры» неабяцкова ўсунуць некарэктныя адпаведзі, таму перад зменым коду трэба чыткая апісацыя вхідных дадзеных, адпаведальнага за шаг і крэтарыяў завершэння. Аперацыйныя працавнікі должны магчымае запускаць шаг з вядомай точкі контролю, не падозрываючы прыхованы стан сістэмы. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі шаг не выканаецца, прычына павінна быць адносна конкрэтнай адпаведальнасці, а не сложнай сэткі задач. Автэнтыфікацыя трэба адбывацца на входзе, а прабава правоў — на рэверсным канале. Толькі токен-носіцель не ўтварае чыстай межы адпаведальнасці.

7. Наладжыце локальную срэду для AI

Для пункту 7: перад змінайом код неабяжна стварыць этап, апрацаваць параметры вхідных дадзеных, выявіць адпаведальнага за выпаленне шагу і задаць крытэрыя завершэння. Аператары должны магчымаць перапрыявленне выпалення шагу з вядомай точкі контролю, не падозрываючы схованы стан. Спрыягайце гэты этап як даговор межа вхіднымі дадзенымі і перакананымі выходнымі рэзультатамі. Даўце назвы артыфактам, апрацаваць перакананні на успех і не прымайце часткова завершанне без паведамлення. Автэнтыфікуйцеся ў шлюзе і паўтарна автарызуйцеся на роўні дадзеных. Толькі токэн-носіцель не ёсць межай арэнды. Для пункту 7: перад змінайом код неабяжна стварыць этап, апрацаваць параметры вхідных дадзеных, выявіць адпаведальнага за выпаленне шагу і задаць крытэрыя завершэння. Аператары должны магчымаць перапрыявленне выпалення шагу з вядомай точкі контролю, не падозрываючы схованы стан. Зберагайце настройкі параду коду прыемлівання. Файлы сераўнавальнага сяродовішча, хранілішчы секрэтных дадзеных і флагі функцый должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць, не чытаяўшы весь ляс.

Прыямельныя умовы

Калі працюеце над стадзіяй прабэральных умов, спачатку запісайце контракт: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс перакладзець пазнейшыя змены коду ў правільным напрамку. Дакументавайце як шлях успеху, так і шлях вярнення. Перапрыбуткі, людзкіе контралі і обработка некорэктных паведамленняў ёсць часткаю продукту, а не пазнейшыя допаленні. Запісвайце назву інструмента, хэш аргументаў, час затрымкі і рынак кожнага вызову. Без такога лёгкага следу дэбагаванне агента губіць гадзіны.

mkdir enterprise-agent-harness
cd enterprise-agent-harness
python -m venv .venv
source .venv/bin/activate
.venv\Scripts\Activate.ps1
python -m pip install openai pydantic fastapi uvicorn python-dotenv

Раздзеляйце настройкі ад секрэтных даных

Калі працуеце з налаштаванням Keep адзельна ад стэйджам, спачатку запісайце умовы працы: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс контроля дапамагае заліцьварыць пазнейшыя змены ў кодзе. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, прычына нявыпання павінна вказываць на адзін конкрэтны элемент, а не на заплутаны ланцюг задач. Зявляйце логі з назвай кантролю, хэшам параметраў, часам адклікання і рэзультатам кожнага вызову. Без такога следу дэбаггін агента губіць гадзіны.

AI_PROVIDER=openai
AI_MODEL=<approved-model-id>
OPENAI_API_KEY=<set-locally-never-commit>
HARNESS_ENV=development
HARNESS_MAX_STEPS=8
HARNESS_RUN_TIMEOUT_SECONDS=120
HARNESS_MAX_TOOL_RETRIES=2
HARNESS_REQUIRE_APPROVAL_FOR_WRITES=true

Іспользуйце шаравую структуру праекта

Калі працуеце над стадзіяй «Іспользаваць каштоўны праект», спачатку запісайце угоду: неабходныя вхідныя даны, сігнал успеху і тое, што выходзіць у разе частковага невыпання. Такі спіс перакладоў заходзіць пазнейшыя змены коду ў правільным напрамку. Спрэцьвачыце гэтую стадзію як угоду межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Дайце назвы артыфактам, задаце крытэрыя успеху і не падзволяйце частковаму завершэнню без паведамлення. Запісвайце назву інструмента, хэш аргументаў, час адклікання і рэзультат кожнага вызову. Без такога лёгкага следу дэбагаванне губіць гадзіны.

enterprise-agent-harness/
├── app/
│   ├── api.py                 # authenticated HTTP entry point
│   ├── harness.py             # observe/reason/validate/act loop
│   ├── model_adapter.py       # provider-specific model calls
│   ├── schemas.py             # typed proposals and observations
│   ├── tools/
│   │   ├── registry.py        # available capabilities
│   │   ├── invoices.py        # example read-only tool
│   │   └── email.py           # example external-write tool
│   ├── policy/
│   │   ├── engine.py          # allow/deny/require-approval
│   │   └── rules.yaml         # reviewed declarative policy
│   ├── approvals.py           # exact-action approval records
│   ├── sandbox.py             # isolated execution adapter
│   ├── state.py               # run and conversation state
│   ├── telemetry.py           # sanitized events and traces
│   └── redaction.py           # secret and sensitive-data filtering
├── evals/
│   ├── cases.jsonl            # representative tasks and attacks
│   └── run_evals.py
├── tests/
│   ├── test_policy.py
│   ├── test_tools.py
│   └── test_harness.py
├── Dockerfile
├── compose.yaml
├── .env
.example
└── pyproject.toml

Калі працуеце над стадзіяй «Іспользаваць каштоўны праект», спачатку запісайце угоду: неабходныя вхідныя даны, сігнал успеху і тое, што выходзіць у разе частковага невыпання. Такі спіс перакладоў заходзіць пазнейшыя змены коду ў правільным напрамку. Зберагачыце настройкі параду ўнутры коду аплікацыі. Файлы сераў, сховішчы секрэтных даных і флагі функцыйяў должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць без неабходнасці чытання всей структуры.

Спачатку задаце граніцы автаноміі

Этап задавання граніцы автаноміі працуе наяўней, калі яго розглядаюць як вімерную паверхню. Запісаце адна ідэальная транскрыпцыя, адзін прыклад неудачы і прыметку па адвярненню перад расшырэнням масштаба. Дакументавайце як успішны, так і варыянт вярнення да нормальнага стану. Перапрыбуткі, людзкія контрольныя пункты і обработка некорэктных паведамленняў ёсць часткай продукту, а не чымсь, што дадаецца пазней. Адкройце інструменты з вузкімі схемамі і чысткімі пазначэннямі побачных эфектаў. Хостам неабходна знаты, якія вызовы мутуюць стан, перш чым яны будуць автаматычна затверджаны.

8. Створыце рабочы рэферэнсны комплект

8. Працэўнае стадыя, якая можа выконвацца, найэфектывнейша, калі яе спрыяваць як мерыемую плошчу. Зафіксавайце адны ідэальны прыклад працы, адзін прыклад неудачы і прыметку па адвярненню працы перш чым расшырваць сферу дзеяння. Валідзіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшоў, прычына неудачы павінна вказываць на адную адпаведальнасць, а не на заплутаны ланцужок задач. Адкройце інструменты з вузкімі схемамі і чысткімі пазначэннямі побачных эфектаў. Адпаведальныя за хоставанне павінны знаты, якія вызовы мутуюць стан, перш чым автаматычна схваліць іх.

Задаць тыпаваныя контракты

Этап адаптавання тыпаваных кантрактаў працюе наякша, калі яго спрыяваць як мерыемую паверхню. Зберагучы адна ідэальная транскрыпція, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расшырваць сферу дзеяння. Спрыяйце гэтам этапу як кантракту межа вхідных дадзеных і перакананых выходных рэзультатаў. Даць назвы артыфактам, задаць крытэрыя успеху і не падзеўляйцеся частым, непূরным выкананнем задач. Адкройце інструменты з вузкімі схемамі і чысткімі пазначэннямі побачных эфектаў. Адпаведальныя за эксплуатацыю должны ведаць, якія вызовы мутуюць стан, перш чым автаматычна схваліць іх.

from enum import Enum
from typing import Any, Literal
from pydantic import BaseModel, Field
class Risk(str, Enum):
READ_ONLY = "read_only"
SENSITIVE_READ = "sensitive_read"
EXTERNAL_WRITE = "external_write"
DESTRUCTIVE = "destructive"
class ToolProposal(BaseModel):
tool: str
arguments: dict[str, Any]
reason: str
class PolicyDecision(BaseModel):
outcome: Literal["allow", "deny", "require_approval"]
reason_code: str
explanation: str
class Observation(BaseModel):
tool: str
ok: bool
data: dict[str, Any] = Field(default_factory=dict)
error_code: str | None = None
class RunState(BaseModel):
run_id: str
user_id: str
tenant_id: str
goal: str
step: int = 0
observations: list[Observation] = Field(default_factory=list)
finished: bool = False

Этап адаптавання тыпаваных кантрактаў працюе наякша, калі яго спрыяваць як мерыемую паверхню. Зберагучы адна ідэальная транскрыпція, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расшырваць сферу дзеяння. Зберагачы настройкі за межамі коду прыемлівання. Файлы сераўнавальных сэрваў, хранілішча секрэтных дадзеных і флагі функцый должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць без неабходнасці чытання всей структуры.

Рэўіструйце інструменты з метададзенням безпекі

Для інструментаў Register з рэжымам безпекі неабходна пазначыць параметры вхідных дадзеных, адпаведальнага за выкананне кроку і крэтарыяі завершэння працы перад зменым коду. Аператары должны магчымае перзапускаты крок з вядомай точкі контролю, не прабуючы спадарожваць схованы статус. Неабходна задокументаваць як шлях успеху, так і шлях вярнення да нормальнага стану. Перапрыбуткі, людзкі контроль і обработка некорэктных паведамленняў ёсць часткай продукту, а не елементамі пазнейшага доўнерэшання. Аўтэнтыфікацыя павінна выконвацца на воратах доступу, а прабыванне прав на выканання задач — на роўні дадзеных. Толькі токэн-носіцель не ёсць межай адпаведнае часткі продукту.

from dataclasses import dataclass
from typing import Callable
@dataclass(frozen=True)
class ToolDefinition:
name: str
risk: Risk
handler: Callable[..., dict]
timeout_seconds: int
idempotent: bool
TOOLS = {
"list_overdue_invoices": ToolDefinition(
name="list_overdue_invoices",
risk=Risk.SENSITIVE_READ,
handler=list_overdue_invoices,
timeout_seconds=10,
idempotent=True,
),
"send_email": ToolDefinition(
name="send_email",
risk=Risk.EXTERNAL_WRITE,
handler=send_email,
timeout_seconds=15,
idempotent=False,
),
}

Адкліканне дэтэрміністычнай політыкі

Для этапы рэалізацыі дэтэрміністычнай політыкі неабходна ўзначыць вхідныя даны, адпаведальнага за крок і крытэрыя завершэння пры перадзеіснавленні коду. Аператары должны магчымаць перзапуск кроку з вядомай точкі контролю, не падозрываючы прыхованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выйшаў, прычына неудачы должна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцужок задач. Автэнтыфікуйцеся на входзе і паўторна автарызуйцеся на роўні дадзеных. Толькі токэн-носіцель не ёсць межой адпаведальнасці.

def authorize(state: RunState, proposal: ToolProposal) -> PolicyDecision:
definition = TOOLS.get(proposal.tool)
if definition is None:
return PolicyDecision(
outcome="deny",
reason_code="UNKNOWN_TOOL",
explanation="The requested capability is not registered.",
)
if not identity_can_use_tool(
user_id=state.user_id,
tenant_id=state.tenant_id,
tool=definition.name,
arguments=proposal.arguments,
):
return PolicyDecision(
outcome="deny",
reason_code="NOT_AUTHORIZED",
explanation="The caller lacks permission for this resource.",
)if definition.risk in {Risk.EXTERNAL_WRITE, Risk.DESTRUCTIVE}:
return PolicyDecision(
outcome="require_approval",
reason_code="CONSEQUENTIAL_ACTION",
explanation="The exact action must be approved before execution.",
)return PolicyDecision(
outcome="allow",
reason_code="POLICY_ALLOWED",
explanation="The action is permitted within the caller's scope.",
)

Прыяўнаць затверджэнне да конкрэтной дзеяння

Ёнколі трэба затвердзіць працэс Bind на даны ўражак, пярэд тым як зменіць код, неабходна апрацаваць параметры вхідных дадзеных, абяронніка шагу і крэтырыя завершэння. Аперацыйныя працавнікі павінны магчымаецца перазапускаць шаг з вядомай точкі контролю, не падозрываючы прыхованы стан сістэмы. Гэты ўражак трэба спрыяглядаць як кантракт межы вхідных дадзеных і перакананых выходных рэзультатаў. Неабходна даць назвы всім элементам, апрацаваць крэтырыя успеху і не прабываць прыймаць часткова завершаны рэзультаты без падтверджэння. Неабходна аўтэнтыфікацыя на в’язку і парадзельна автарызацыя на роўні дадзеных. Толькі токэн-носіцель не ёсць межай адпаведнага тэнантства. Ёнколі трэба затвердзіць працэс Bind на даны ўражак, пярэд тым як зменіць код, неабходна апрацаваць параметры вхідных дадзеных, абяронніка шагу і крэтырыя завершэння. Аперацыйныя працавнікі павінны магчымаецца перазапускаць шаг з вядомай точкі контролю, не падозрываючы прыхованы стан сістэмы. Конфігурацыю трэба зберагаць праза код аплікацыі. Файлы сяродавішняе суперактуальнасці, хранілішча секрэтных дадзеных і флагі функцыйяў павінны знаходзіцца ў адном месцы, якое працавнікі можуць аўдытаваць, не чытаючы весь код аплікацыі.

import hashlib
import json
def action_digest(state: RunState, proposal: ToolProposal) -> str:
value = {
"user_id": state.user_id,
"tenant_id": state.tenant_id,
"tool": proposal.tool,
"arguments": proposal.arguments,
}
canonical = json.dumps(value, sort_keys=True, separators=(",", ":"))
return hashlib.sha256(canonical.encode("utf-8")).hexdigest()

Адаптавацыя кантролюванага ціклу

Калі працюеце над этапам адаптавання кантролюванага ціклу, спачатку запісайце умовы ўгоды: неабяжныя вхідныя даны, сігнал успеху і тое, што выходзіць у разе частковага невыпання. Такі спіс пераконвае ў тым, што пазнейшыя змены коду будуць чыстымі. Запісуйце адночасна шлях успеху і шлях вярнення. Перапрыбуткі, людзкі контроль і обработка некорэктных паведамленняў ёсць часткай продукту, а не пазнейшым дапрацоўкам. Фіксуйце назву інструмента, хэш параметраў, час адклікання і рынак кожнага вызову. Без такога лёгкага следу дэбагаванне ціклоў займае гадзіны.

async def run_harness(state: RunState, model, approvals, executor):
max_steps = 8
while not state.finished and state.step < max_steps:
state.step += 1context = build_bounded_context(state, TOOLS)
response = await model.next_action(context)if response.final_answer is not None:
state.finished = True
return complete_run(state, response.final_answer)proposal = ToolProposal.model_validate(response.tool_proposal)
decision = authorize(state, proposal)
trace_policy_decision(state, proposal, decision)if decision.outcome == "deny":
state.observations.append(Observation(
tool=proposal.tool,
ok=False,
error_code=decision.reason_code,
))
continueif decision.outcome == "require_approval":
digest = action_digest(state, proposal)
if not approvals.has_valid_approval(digest):
return pause_for_approval(state, proposal, digest)observation = await executor.execute(
definition=TOOLS[proposal.tool],
arguments=proposal.arguments,
identity={
"user_id": state.user_id,
"tenant_id": state.tenant_id,
},
)
state.observations.append(redact_observation(observation))return stop_run(state, reason="STEP_LIMIT_REACHED")

Паўязка модэлю праз адаптар

Калі працуеце над практыкай «З’яўліце звязак межа модэлю і стадзіямі», спачатку запісайце умовы вікорыстання: неабяжныя даны, сігнал успеху і тое, што выканаецца у разе частковага нявыпання. Такі спіс контролю дапамагае заліцьваты змяны ў кодзе. Валічыце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, прычына нявыпання павінна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцюг задач. Зберагаеце у кэшы стабільныя інструкцыі сістэмы і схемы інструментаў. Перадзявленне ідэнтычных даных — частая прычына зайвага навантажэння.

class ModelAdapter:
async def next_action(self, context) -> "ModelTurn":
raise NotImplementedError

Адкройце аўтэнтыфікованы API

Калі працюеце над этапам «Адкрыць аутэнтыфікованы API», спачатку запісайце контракт: неабяжлівыя даныя, сігнал успеху і тое, што выходзіць у разе частковага нэуспеху. Такі спіс контроля дапамагае залічыць змяны ў кодзе пасля таго. Спрэцьвуйце да гэтага этапу як да контракту межа данымі і перакананымі выходнымі рэзультатамі. Дайце назвы элементам, задаце правіла пераканання успеху і не прымайце часткова завершэння без паведамлення. Зявляйце логі з назвай кантролю, хэшам аргументаў, часу затрымкі і рэзультатацыі кожнага вызову. Без такога следу дэбаггінг агента губіць гады на безрэзультатныя спробы.

from fastapi import Depends, FastAPI
app = FastAPI()
@app.post("/runs")
async def create_run(request: RunRequest, identity=Depends(require_identity)):
state = RunState(
run_id=new_run_id(),
user_id=identity.user_id,
tenant_id=identity.tenant_id,
goal=request.goal,
)
return await run_harness(state, model, approvals, executor)
@app.post("/runs/{run_id}/approvals")
async def approve_run_action(
run_id: str,
request: ApprovalRequest,
identity=Depends(require_identity),
):
return approve_exact_action(run_id, request.action_digest, identity)

Калі працюеце над этапам «Адкрыванне аутэнтызаванага API», спачатку запісайце умовы вярбунка: неабяжлівыя даныя, сігнал успеху і тое, што выходзіць пад частыя неудачы. Такі спіс контроля дапамагае заліцвачыць змяны ў кодзе пазнейша. Зберагайце настройкі за межамі коду прыемліка. Файлы сераўнавання, хранілішчы секрэтных дадзеных і флагі функцый крануцца на аднай пазе, куды аператары можаць адбавіць аўдыт без неабяжлівага чытання всей структуры.

Запуск локальна

Этап «Запуск локальна» працюе найэфектывней, калі яго спрыяваць як меравальную пазу. Запісайце адны ідэалны прыклад працы, адзін прыклад неудачы і прыметкі па адвярненню перад расшырэнням масштаба. Дакументавайце як шлях успеху, так і шлях вяселення разам. Перапрыбуткі, людзкія контролы і обработка некорэктных паведамленняў ёсць часткай продукту, а не чымсь, што дадаецца пазнейша.

Адкрывайце інструменты з вузкімі схемамі і чырвастымі пазначкамі пра явныя побачныя эфекты. Хостам неабяжліва знаты, якія вызовы мутуюць стан, перш чым яны автаматычна схваляюць іх.

uvicorn app.api:app --host 127.0.0.1 --port 8000 --reload

9. Тэставанне і ацэнка прыстрою

Этап 9 «Тэставанне і ацэнка» работае наяўней, калі яго спрыяваць як мерыемую паверхню. Запісаце адна ідэальная версія працы, адзін прыклад неудачы і прыметкі па поверненню да пярвоначальнага стану пры расшырэнні масштаба. Валіце маленькія, тэставанныя елементы замест большых скрыптов. Калі якісь крок не выйшае, прычына неудачы павінна вказываць на адную адпаведальнасць, а не на заплутаны ланцоўкі дзеянняў. Адкрывайце інструменты з вузкімі схемамі і чысткімі пазначэннямі побачных эфектаў. Адпаведальныя за эксплуатацыю должны ведаць, якія вызовы мутуюць стан, перш чым автаматычна схваліць іх.

Дэтэрміністычныя тэсты елементаў і інтэграцыі

Этап дэтэрміністычных тэстаў едыніц і інтэграцыі працуе наякша, калі яго спрыяваць як мерымая паверхню. Зберагучы адны ідэальны прыклад працы, адны прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расшырваць сферу тэставання. Спрыяйце гэтам этапу як кантракту межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Даўце назвы всім элементам, задаць крытэрыя успеху і не падтрымайце частковае завершэння без адпаведных пазначэнняў. Іспользуйце інструменты з вузкімі схемамі і чыткімі пазначэннямі па бокавых эфектах. Адпраўнікам неабходна ведаць, якія вызовы моцу зменіць стан сістэмы, перш чым яны автаматычна схваляць іх. Этап дэтэрміністычных тэстаў едыніц і інтэграцыі працуе наякша, калі яго спрыяваць як мерымую паверхню. Зберагучы адны ідэальны прыклад працы, адны прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расшырваць сферу тэставання. Зберагачы настройкі параду ўнутры коду прыемлівай программы. Файлы сяродавішча, хранільнікі секрэтных даных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куда адпраўнікі можу аўдытаваць іх, не чытаючы весь код.

def test_external_write_requires_approval():
proposal = ToolProposal(
tool="send_email",
arguments={"to": "customer@example.test", "body": "Reminder"},
reason="Send the approved reminder",
)
decision = authorize(make_finance_run(), proposal)assert decision.outcome == "require_approval"
assert decision.reason_code == "CONSEQUENTIAL_ACTION"

Ацэнка мадэлі і працэсу работы

У стадзіі ацэнкі мадэлі і працэсу работы неабяжна пазначыць вхідныя даны, адпаведальнага за кожны крок і крэтары завершэння працы перад змянайом коду. Аператары должны магчымаць перзапуск кроку з вядомай точкі контролю, не падозрываючы прыхованы стан. Неабяжна задокументаваць як шлях успеху, так і шлях вярнення да нормальнага стану. Перапрыбуткі, людзкія перакрыцця і апрацоўка некорэктных паведамленняў ёсць часткай продукту, а не элементамі пазнейшай дапрацоўкі. Калі наступны крок — гэта код або вызов інструмента, лепш выкарыстоўваць структураваныя выходныя даны з перакрычэнням схемы, чым вольныя тэкстовыя апісанні.

10. Развёртыванне сістэмы у масштабах падпрыемства

Для этапы 10 «Развяжчанне» неабяцкова падзець вказаць на інпуты, адміністратара крока і крэтырыя выходу пры змены коду. Аператары должны магчымаць перзапуск крока з вядомай точкі контролю, не падозрываючы схованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выйшае, прычына нехаспеку должна вказываць на адзінную адпаведальнасць, а не на заплутаны ланцужок задач. Автэнтыфікуйцеся на воратах і парадзельнай автарызуйцеся на роўні дадзеных. Толькі токэн-носіцель не ўтварае межы тэнанты.

Топалогія працы

Для этапы топалогіі вырабаткі неабяжна пазначыць вхідныя даныя, адпаведальнага за крок і крытэрыі завершэння пры перадзеяванні коду. Аператары должны магчымаць перзапуск кроку з вядомай точкі контролю, не прабуючы спадарожваць схованы стан. Спрыяйце гэтай этапы як даговору межа вхіднымі данымаў і перакананымі выходнымі рэзультатамі. Даўце назвы артыфактам, пазначыце крытэрыі успеху і адмовіцеся ад тыхняга частковага завершэння без паведамлення. Автэнтыфікуйцеся на воратах і паўторна автарызавайцеся на роўні дадзенняў. Толькі токэн-носіцель не ёсцца межай арэндаванага рэсурсу.

Client
│
▼
API Gateway / WAF
│  authentication, rate limits, request ID
▼
Harness API
├── Policy Service
├── Approval Service
├── Model Gateway ─────► Model Provider
├── State Store
├── Trace / Audit Pipeline
└── Tool Executor Queue
│
▼
Isolated Workers
├── MCP / SaaS APIs
├── Browser Sandbox
├── Code Sandbox
└── Enterprise Data

Для этапы топалогіі вырабатчыка неабяжна пазначыць вхідныя даны, адпаведальнага за крок і крытэрыі завершэння пры перадзеяванні коду. Аператары должны магчымаць перзапуск крока з вядомай точкі контролю, не падозрываючы схованы стан. Конфігурацыю трэба захаваць паза кодам прыемленае. Файлы сераўнавальнага сяродовішча, хранілішчы секрэтных даных і флагі функцыйяў должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць, не чытаяўшы весь граф.

Кантэйнеравацыя плану кіравання

Калі працюеце над стадзіяй «Containerize the control plane», спачатку запісайце умовы працы: неабяжлівыя даны, сігнал працэйскага успеху і тое, што выканаецца у разе частковага нявыполнення. Такі спіс контроля дапамагае заліцварыць будучыя змены коду.

FROM python:3.12-slim
WORKDIR /app
COPY pyproject.toml ./
RUN pip install --no-cache-dir .COPY app ./appRUN useradd --create-home --uid 10001 harness
USER harnessENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1CMD ["uvicorn", "app.api:app", "--host", "0.0.0.0", "--port", "8000"]

Контралі працы продукту

Калі працуеце над стадзіяй кантролю працы, спачатку запісайце угоду: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага абярэння. Такі спіс пераканальвае ў тым, каб пазнейшыя змены коду былі чыстымі. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок абярэння, гэтае абярэнне павінна вказваць на адзіну адпаведальнасць, а не на заплутаны ланцюг задач. Запісвайце назву інструмента, хэш аргументаў, час затрымкі і рынак кожнага вызову. Без такога следу дэбаггінг агента губіць гадзіны.

Шлях ад разработкі да працы

Калі працуеце на стадзіі пераходу з розрабоцкі гэтавыя ў працоўны рэжым, спачатку запісайце кантракт: неабходныя вхідныя даны, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс контроля дапамагае заставіць пазнейшыя змены коду быць чыстымі. Спрэчвайце гэтую стадзію як кантракт межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Дайце назвы артыфактам, задаце правілы пераканання успеху і адмовіцеся ад тыхоўскага частковага завершэння. Запісвайце назву інструмента, хэш аргументаў, час затрымкі і рэзультат кожнага вызову. Дыбаггін без такога следу марнуюць гадзіны. Калі працуеце на стадзіі пераходу з розрабоцкі гэтавыя ў працоўны рэжым, спачатку запісайце кантракт: неабходныя вхідныя даны, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс контроля дапамагае заставіць пазнейшыя змены коду быць чыстымі. Зберагаўце настройкі праза код аплікацыі. Файлы сераў, сховішчы секрэтных даных і флагі функцыйяў должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць без неабходнасці чытання всей структуры.

11. Спісак перапрацоўкі пад час адлагоджэння прадукту

Этап 11 спісака перапрацоўкі пад час адлагоджэння прадукту работае наякша, калі яго розглядаюць як меркаваны аспект. Зберагуйце адна ідэальная транскрыпцыя, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць сферу дзеяння.

Документавайце як шлях успеху, так і шлях вярнэння да нормальнага стану разам. Перапрыбуткі, людзкія контрольныя пункты і обработка некорэктных поведэнняў ёсць часткай самага прадукту, а не чымсь, што дадаецца пазней.

Вывык

Этап выводу работае наякша, калі яго розглядаюць як меркаваны аспект. Зберагуйце адна ідэальная транскрыпцыя, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць сферу дзеяння.

Справы

Дапаможная літэратура