Галоўная / Артыкулы / Практычныя прытамулкі: інжынерныя падпрыемства та агенты AI

Практычныя прытамулкі: інжынерныя падпрыемства та агенты AI

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

6175 слоў

Наступныя прыміткі паказваюць практычны падход да выкарыстоўвання «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 спісака перапрацоўкі пад час адлагоджэння прадукту работае наякша, калі яго розглядаюць як меркаваны аспект. Зберагуйте адна ідеальная транскрыпцыя, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расширваць сферу дзеяння.

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

Вывык

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

Справы

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