Практычныя нататкі: калі цыкл агента павінен спыняцца? Адказы DeepSeek Harness і pi
Практычны разбор тэмы «калі цыкл агента павінен спыняцца: падыходы DeepSeek Harness і pi»: кантракты, праверкі і гатовыя фрагменты кода для каманд, якія ўкараняюць гэты падыход.
Крыніцы: When Should an Agent Loop Stop? DeepSeek Harness and Pi Give Two Completely Different Answers
Наступныя прыміткі восстанавляюць практычны падход да тэмы «Калі агенту трэба зупніцца пасля цыклу? DeepSeek Harness і Pi даюць два абсалютна разныя адказы». Акцэнт ставіцца на контракты, пераконтроўванні і месца для коду, а не на мотывацыйныя аспекты. Калі працуеце на этапы агледжэння, спачатку запісайце контракт: неабходныя даны, сігнал успеху і тое, што выходзіць на частым нявыпанні. Такі спіс контроля дапамагае залішыцца чыстаснам у пазнейшых змянах коду. Запісвайце час выканання і кост токеноў або запытаў разам з функцыйнальнымі рэзультатамі. Відразувыя даны пра косцы запобегаюць неспакойным рахункам, калі працэс пераходзіць з дэмаверсіі ў спяльныя асяроддзя.
Пачатак: пытанне, якое ніхто не ставяць, пакуль ён чаго-небудзь не зламае
Падзея, якая ніхто не можа зупініць, працюе наяўнастай лепшая, калі яе розглядаць як вімерную паверхню. Зафіксавайце адны ідэальны прыклад, адну справу з нявуччам і прыметку пра адкатаванне, перш чым расшырваць масштабы. Зберагаюце настройкі паза кодам прыемліка. Файлы серавэра, хранільнікі секрэтных дадзеных і пазначкі функцый належаць у аднам месца, куды аператары можаць адбавляць аўдыт, не чытаючы весь граф. Адкрывайце інструменты з вузкімі схемамі і чысткімі пазначкамі побачных наследкаў. Хостам неабходна знаты, якія вызовы мутуюць стан, перш чым яны автаматычна схваляюць іх.
504 Gateway Timeout
Частка 1 — Што насправды значыць «зупінка» (гэта не адна рачоўка)
Частка 1: Калькуляцыя стадзіі зупнення работае наўпершыя, калі яе расследаваць як вімерную плошчу. Запісайце адны ідэальны прыклад, адзін прыклад неудачы і прыметку па адвярненню перад расшырэнням масштаба. Дакументавайце як шлях успеху, так і шлях вярнення ў нормальны стан. Перапрыбуткі, людзкія контралі і обработка некорэктных паведамленняў ёсць часткай продукту, а не наступным этапам дорабкі. Адкройце інструменты з вузкімі схемамі і чысткімі пазначэннямі побачных эфектаў. Хостам неабходна знаты, якія вызовы мутуюць стан, перш чым яны будуць автаматычна затверджаны.
Model Request
↓
Assistant Response
↓
Tool Calls
↓
Tool Results
↓
Model reviews results
↓
Turn End
↓
Agent Idle
↓
Follow-up / Goal / Scheduler
↓
Next Turn
Частка 2 — Чаму гэта важна зараз, а не пазней
Частка 2. Чаму гэты этап работае лепша, калі яго спрыяюць як до мерыемагучай паверхні. Зафіксавце адны ідэальны прымер, адзін кейс неудачы і прыказку па атрыбуцыю да пярэдней версіі пры расшырэнні меж.
Частка 3 — Як ім на самай працоўвае: расчленаванне машыны
Для часткі 3 «Як працюе», перш чым зменяць код, неабходна ясная ваказка пра вхідныя даны, адміністратара крока і крэтэрыя завершэння. Аператары должны магчымаць перзапуск крока з вядомай точкі контролю, не спрабоўваючы здогадвацца пра схованы стан. Конфігурацыю трэба залічыць паза кодам прыемліка. Файлы сераўнавання, храненні секрэтных даных і флагі функцыйяў должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць, не чытаючы весь ланцуг задач. Аўтэнтыфікацыя павінна выконвацца на шлюзе, а пераправенне прав на выкарыстоўвання — на рэвеі дадзеных. Толькі токен-носіцель не ёсць межай аддзела.
Assistant:
"I've created PR #1234."
model stopped ≠ turn stopped
3.2 Вторы шар: завершэнне пакетной обработкі інструментам
Для дваэтапнага працэсу з 2 слоямі, пры перадзеяванні коду неабходна прадзеява вхідных дадзеных, адначальніка крока і крэтарыяў завершэння. Аперацыйныя працавнікі должны магчыма было перзапускаць крок з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Неабходна задокументаваць як шлях успеху, так і шлях вярнення. Перапрыбуткі, людзкія контралі і обработка некорэктных паведамленняў ёсць часткай продукту, а не элементамі пазнейшага доўнерэшання. Аўтэнтыфікацыя выконвалася ў шлюзе, а паўторная автарызацыя — у роўні дадзеных. Сам токэн-носіцель не ёсць межай адпаведнага тэнантства.
# Illustrative example — conceptual pseudocode, not an official API
while has_more_tool_calls:
response = call_model()
tools = parse_tool_calls(response)
execute_tools(tools)
Model
↓
create_pr()
↓
200 OK
↓
PR #1234
Goal
└─ Goal Round
└─ Turn
├─ Step
│ ├─ Model Request
│ └─ Tool Calls
├─ Step
│ ├─ Model Request
│ └─ Tool Calls
└─ ...
3.3 Калі ж насправды заканчываецца паворот?
У стадыі 3 3 So when неабяжна дэфініцыя вхідных даных, адміністратара крока і крэтэрыяў завершэння пры зміне коду. Аперацыйныя працавнікі должны магчымае перзапускаць крок з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выйшаў, прычына неудачы павінна вказываць на адну адповядальнасц, а не на заплутаны ланцоўку. Автэнтыфікацыя трэба адбывацца на в’язку, а прабава правоў — на рэвю дадзенняў. Толькі токен-носіцель не ёсць межай арэндаванага рэсурсу. У стадыі 3 3 So when неабяжна дэфініцыя вхідных даных, адміністратара крока і крэтэрыяў завершэння пры зміне коду. Аперацыйныя працавнікі должны магчымае перзапускаць крок з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Запісвайце час выканання і кост токена або запыту разам з функцыйнаімі рэзультатамі. Відразлівасць костаў з самага пачатку запобегае неспакойным рахункам, калі працэс пераходзіць з дэмовай асяроддзя ў спакульнаныя сераўы.
3.4 Пастка булевых значэнняў: shouldContinue()
Кал працуеце над стадыяй 3.4, спачатку запісайце умовы вікорыстоўвання: неабходныя даныя, сігнал успеху і тое, што выканаецца у разе частковага нявыпання. Такі спіс контроля дапамагае заліцвачыць змяны ў кодзе пазнейша. Храніце настройкі за межамі коду прыемліка. Файлы сераўнавання сяродовысці, базы секрэтных даных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаць пераглядаць іх без неабходнасці чытання всей структуры. Зявляйце логі з назвай інструмента, хэшам аргументаў, часам затрымкі і рэзультатам кожнага вызову. Без такога следу час на дэбагаванне губіцца на гадзіны.
Plugin A → false
Plugin B → true
Plugin C → false
shouldContinue(): boolean
3.5 Косцы такога дызайну
Калі працуеце над стадзіяй 3.5 «Косц», спачатку запісайце угоду: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага неяксамоства. Такі спіс пераконтролю дапамагае заліцьварыць пазнейшыя змены коду. Документавайце як шлях успеху, так і шлях вярнення. Перапрыбуткі, людзкіе етапы пераконтролю і обработка некорэктных паведамленняў ёсць часткаю продукту, а не пазнейшага дапрацоўвання. Зявляйце логі з назвай інструмента, хэшам аргументаў, часам затрымкі і рэзультатам кожнага вызову. Без такога следу дэбагаванне агента ў цікле губіць гады.
Prompt → Search → Answer
3.6 Адказ Pi: трэба робіць цікл малым, раздзеліць «continue» на два API
Калі працуеце над стадзіяй 3 6 Pi s, спачатку запісайце умовы працы: неабяжлівыя даныя, сігнал успеху і тое, што выходзіць пад частковыя неудачы. Такі спіс дапамагае заліцварваць пазнейшыя змены ў кодзе. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, неудача должна вказваць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцюг задач. Запісвайце назву інструмента, хэш параметраў, час адпаведзі і рынак кожнага вызову. Без такога следу дэбагаванне можа зайняць гады. Калі працуеце над стадзіяй 3 6 Pi s, спачатку запісайце умовы працы: неабяжлівыя даныя, сігнал успеху і тое, што выходзіць пад частковыя неудачы. Такі спіс дапамагае заліцварваць пазнейшыя змены ў кодзе. Запісвайце часы выканання і кост токенаў або запытаў разам з функцыйнальнымі рынакамі. Відразувая візуабілізацыя костоў запобегае неспакойным рахункам, калі праця пераходзіць з дэмаверсіі ў спакульнаныя сераўысы.
// Illustrative example — conceptual pseudocode, not an official API
while (true) {
while (hasMoreToolCalls || pendingMessages.length > 0) {
callModel();
executeTools();
}
const followUps = await getFollowUpMessages();
if (followUps.length > 0) {
pendingMessages = followUps;
continue;
}
break;
}
Inner Loop
↓
More tools? More steering?
↓
No
↓
Outer Loop
↓
Any follow-up?
↓
No
↓
Agent End
Steering = you are changing my direction right now
Follow-up = you were about to let me stop, but I'm giving you one more thing
3.7 Размешчэнне DSH і Pi параду
Этап 3.7 «Размешчэнне DSH» працюе найкрашча, калі яго розглядаць як вімерную паверхню. Зберагчыце адна «золатая» транскрыпцыя, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расшырваць сферу дзеяння. Храніце конфігурацыю параду коду прыемліка. Файлы сераўнавання, хранальнікі секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куда аператары можу выконваць аўдыт без неабяжнага чытання всіх дадзеных. Адкрывайце інструменты з вузкімі схемамі і чытальнымі пазначэннямі побачных эфектаў. Хостам неабходна знаты, якія вызовы мутуюць стан, перш чым яны автаматычна схваляюць іх.
DSH Pi
Goal Outer Loop
↓ │
Goal Round Follow-up Queue
↓ │
Turn ▼
↓ Inner Loop
Step │
↓ Steering + Tool Calls
Model ↔ Tools ↔ Inbox │
↓ ▼
Turn-Stopping turn_end
↓ │
Turn End ▼
agent_end
3.8 Больш тыхі, але вельмі корыстны дадзенне Pi: shouldStopAfterTurn
Этап 3.8 Pi s працюе найкрашча, калі яго розглядаць як вімерную паверхню. Зафіксавце адна «золатая» транскрыпцыя, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць масштабы. Дакументавце як шлях успеху, так і шлях вярнэння. Перапрыбуткі, людзкія контраліны і обработка некорэктных паведамленняў ёсць часткай продукту, а не пасляднім дапрацоўкам. Абявіце пра інструменты з вузкімі схемамі і чысткімі пазначэннямі пабочных эфектаў. Хостам неабходна знаты, якія вызовы мутуюць стан, перш чым яны автаматычна схваляюць ўпраўленні.
shouldStopAfterTurn() ≠ killEverything()
Agent
↓
fix bug
↓
run tests
↓
tests pass
↓
turn_end
↓
shouldStopAfterTurn = true
↓
agent_end
3.9 Больш машынападобны падход DSH
Этап 3 9 DSH працюе найкрашча, калі яго розглядаць як вімерную паверхню. Зберагчыце адны ідэальны прыклад працы, адны прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расшырваць сферу дзеяння. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, прычына неудачы павінна вказываць на адную адпаведальнасць, а не на заплутаны ланцюг дзеяння. Аб’являйце інструменты з вузкімі схемамі і чысткімі пазначэннямі побачных наследкаў. Хостам неабходна знаты, якія вызовы мутуюць стан, перш чым яны автаматычна схваляюць дзеяння. Этап 3 9 DSH працюе найкрашча, калі яго розглядаць як вімерную паверхню. Зберагчыце адны ідэальны прыклад працы, адны прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расшырваць сферу дзеяння. Запісвайце часы выканання і вартасць токена або запіту разам з функцыональнымі рэзультатамі. Відразувая вартасці запобегае неспакоўным рахункам, калі працэс пераходзіць з дэмовай асяроддзя ў спакульную.
3.10 Чаму «прычына зупінкі» мае большое значэнне, чым можа здавацца
Для этапы 3 10 „Чаму чаму“ неабяжна ўзначыць вхідныя даны, адпаведальнага за крок і крытэрыя завершэння пры змены коду. Аперацыйныя працавнікі павінны магчымае перазапускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Конфігурацыю трэба зберагчы за межамі коду прыкладнення. Файлы сераўіса, хранальнікі секрэтных даных і флагі функцыйяў павінны знаходзіцца ў адном месцы, якое аперацыйныя працавнікі можуць пераглядаць, не чытаючы весь ланцуг задач. Автэнтыфікацыя павінна выканацца на воратах, а пераправенне прав на доступ — у роўні дадзенаў. Сам токен-носіцель не ёсць межай адпаведнага тэнантства.
Agent stopped.
Agent stopped because:
- task completed?
- user cancelled?
- token limit hit?
- tool error?
- process crashed?
- blocked by policy?
- waiting on a human?
3.11 Pi спецыяльна не перакладае весь гэты матэрыял у ядро
Для цілесвяжанага запуску процэсу 3.11 неабходна пазначыць вхідныя даны, адпаведальнага за крок і крытэрыі завершэння пры перадзеяванні коду. Аператары должны магчымаць перзапуск кроку з вядомай точкі контролю, не падозрываючы схованы стан. Неабходна адночасная документацыя як успішнага, так і патовага шляхоў. Перапрыбуткі, людзкія контралі і обработка некорэктных паведамленняў ёсць часткай продукту, а не пасляднім дапрацоўкам. Автэнтыфікацыя выканаць у шлюзе, а прабыванне прав на выкарыстоўвання — у рэжыме апрацоўкі дадзеных. Толькі токэн-носіцель не ёсць межай арэндаванага рэсурсу.
3.12 Цена гэтага выбору
Для стадыі 3 12 «Цена» неабяжна прабыць з’явіцца вводныя даны, адміністратар шагу і крэтыяры выходу пры перадзеіснавленні коду. Аператары должны магчымаць перзапуск шагу з вядомай точкі контролю, не падозруючы пра схованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі шаг не выконваецца, прычына нехарактэрнага рэзультата должна вказываць на адзін конкрэтны элемент, а не на заплутаны ланцюг задач. Автэнтыфікуйцеся на входзе і парадзеўжна автарызуйцеся на роўні дадзеных. Толькі токэн-носіцель не ёсцца межой адпаведнае часткі сістэмы. Для стадыі 3 12 «Цена» неабяжна прабыць з’явіцца вводныя даны, адміністратар шагу і крэтыяры выходу пры перадзеіснавленні коду. Аператары должны магчымаць перзапуск шагу з вядомай точкі контролю, не падозруючы пра схованы стан. Запісвайце час выканання і кост токэна або запыту разам з функцыйнымі рэзультатамі. Візуабілізацыя костаў з самага пачатку запобегае неспакойным рахункам, калі працэс пераходзіць з дэмовай асяроддзя ў спакульную.
3.13 Адзінкты, які атрыбуеюцца галасам: concludesTurn
Калі працуеце з 3.13 Адзінктамі, які выканаюць задачы, спачатку запісайце умовы ўгоды: неабходныя даны, сігнал успеху і тое, што выканаецца у разы частковага нявыполнення. Такі спіс контроля дапамагае заліцвачыць змяны ў кодзе пазнейша. Храніце настройкі за межамі коду прыемліка. Файлы сераўнавання, сховішчы секрэтных даных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куда аператары можуць адбавіць аўдыт без неабходнасці чытання всей структуры. Зявляйце логі з назвай адзінкта, хэшам параметраў, часам адпаведзі і рынку кожнага вызову. Без такога следу дэбагаванне агента займае гадзіны.
3.14 Нават выбор AND/OR адражае філасофію дызайну
Калі працуеце над этапам 3.14, спачатку запісайце умовы кантракту: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс пераконвае ў тым, што пазнейшыя змены коду будуць чыстымі. Документавайце як шлях успеху, так і шлях вяснавання. Перапрыбуткі, людзкія контралі і обработка некорэктных паведамленняў ёсць часткай продукту, а не пазнейшым дапрацоўкам. Зявляйце логі з назвай інструмента, хэшам аргументаў, часам затрымкі і рэзультатам кожнага вызову. Без такога следу дэбаггінг агента губіць гадзіны.
Tool A → concludesTurn = true
Tool B → false
Tool C → false
3.15 Канкурэнцыя дадае ўсё новы слой
Калі працуеце над стадзіяй «3 15 Concurrency adds», спачатку запісайце умовы вярбунка: неабяжлівыя даныя, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс дапамагае заліцьваты пазнейшыя змены коду. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, прычына нявыпання павінна вказываць на адзін конкрэтны элемент, а не на заплутаны ланцюг задач. Запісвайце назву інструмента, хэш параметраў, час адклікання і рынак кожнага вызову. Без такіх задапісаў дэбаггаванне можа зайняць гады. Калі працуеце над стадзіяй «3 15 Concurrency adds», спачатку запісайце умовы вярбунка: неабяжлівыя даныя, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс дапамагае заліцьваты пазнейшыя змены коду. Запісвайце час выканання і кост токенаў або запытаў разам з функцыйнальнымі рынакамі. Відразувая візуабілізацыя костоў запобегае неспакойным рахункам, калі праця пераходзіць з дэмавайнага рэжыма ў спяльныя асяроддзя.
A = create PR
B = inspect dependency graph
C = run security scan
3.16 max-tokens: класычны прыклад для падчынства сяброўскаму падходу „проста спробаваць знову“
Параметр max-tokens лепша выкарыстоўваць, калі яго спрэчываць як мерыябельную велічыну. Зафіксавайце адны ідэальны прыклад работы, адну сітуацыю неудачы і прыметкі па поверненню да пярвоначальнага стану, прычым расшыруючы сферу дзеяння. Канфігурацыю трэба заставляць праза код аплікацыі; файлы сяродавішча, хранільнікі секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаць адбавіць аўдыт без неабяжнага чытання всіх дадзеных. Назначыце ліміт токенаў на кожны раунд і на кожную сесію. Інструменты з агентным падходам агрэсіўна расшырваюць кантэкст; строгі ліміты не дазволяюць, каб дэманстрацыі ператварыліся на неспакоючыя рахункі.
Model:
"I'm about to call deploy_production with
{ ... half-finished JSON ...
3.17 Разлік межы толькі-чытаць і вызвання парадоксальных наследкіў
3 17 Этап «толькі для чытання» працюе найэфектывней, калі яго розглядаць як вімерную паверхню. Зафіксавце адна «золатая» транскрыпцыя, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расшырваць масштабы. Дакументавайце як шлях успеху, так і шлях вярнэння. Перапрыбуткі, людзкія контрольныя пункты і обработка некорэктных паведамленняў ёсць часткай продукту, а не пасляднім дапрацоўкам. Абявляйце пра інструменты з вузкімі схемамі і чытальнымі пазначкамі пра побачныя эфекты. Хостам неабходна знаты, якія вызовы мутуюць стан, перш чым яны будуць автаматычна затверджаны.
Частка 4 — Чаго большасць людзей неправа розумеюць
Частка 4: Календарны ўраджэнні працуюць наяўней, калі іх спрыяваць як мерыемую паверхню. Зберагуце адна ідэальная транскрыпцыю, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перад расшырэнням масштаба. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выходзіць, прычына неудачы павінна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцюг задач. Адкройце інструменты з вузкімі схемамі і чысткімі пазначэннямі побачных наследкаў. Адпаведальныя за эксплуатацыю павінны знаты, якія вызовы мутуюць стан, перш чым автаматычна схваліць іх. Частка 4: Календарны ўраджэнні працуюць наяўней, калі іх спрыяваць як мерыемую паверхню. Зберагуце адна ідэальная транскрыпцыя, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перад расшырэнням масштаба. Запісвайце часы выканання і косты токеноў або запытак праза функцыйнае рэзультат. Відкрытыя даныя пра косты з самага пачатку запобегаюць неспакойным рахункам, калі працэс пераходзіць з дэмовай асяроддзя ў спяльныя сераўеры.
DISCOVERED → MODIFIED → TESTING → PR_CREATED → CI_RUNNING →
WAITING_REVIEW → CHANGES_REQUESTED → MERGED → DEPLOYING → OBSERVING → VERIFIED
Частка 5 — адгук
Для пятага ўзела, які адпавядае за стадыю вынесення рашэння, перш чым зменяць код, неабходна візначыць даныя, якія будуць вводзіцца, адпаведальнага за гэты крок і крытэрыя завершэння. Аператары должны магчымаць перзапуск кроку з вядомай точкі контролю, не падозрываючы прыхованы стан. Конфігурацыю трэба залічыць пазначкай ад коду прыемліка. Файлы сяродавішняе сераўісу, хранілішчы секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаць адбавіць аўдыт, не чытаючы весь ланцуг задач. Аўтэнтыфікацыя павінна выконвацца на воратах, а пераправенне прав на выкарыстоўвання — у рэжыме апрацоўкі дадзеных. Сам токен-несучы не ёсць межай адпаведнае часткі сістэмы.
Часць 6 — Якія на практыцы змены відбуваюцца
Для часткі 6, у гэтам этапе неабяжна практычная ваказка: перад змінайом кода трэба адзначыць вхідныя даныя, адпаведальнага за крок і крытэрыі завершэння. Аперацыяму слічна перадзеўжваць крок з вядомага пункта контролю, не спрабоўваючы здагадвацца пра схованы стан. Неабяжна задокументаваць як шлях успеху, так і шлях вярнення да нормальнага стану. Перапрыбуткі, людзкія перакрыцця і апрацоўка некорэктных паведамленняў ёсць часткай продукту, а не чымсь, што дадаецца пазней.
Current side-effect state: UNKNOWN
Can it be resolved against external facts? YES
→ query the PR
→ query the branch
→ query the commit
→ query remote state
PR exists → continue the existing workflow
PR absent → retry creation
Goal:
all v1 imports removed
AND unit tests pass
AND integration tests pass
AND PR created
Вывад: фраза, якую варта застаўці
Для заключэння, перш чым зменяць код, неабходна ясная схема: трэба адзначыць вхідныя даны, адпаведальнага за крок і крытэрыі завершэння. Аператары должны магчымаць перзапуск кроку з вядомай точкі контролю, не падозрываючы прыхованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выконваецца, прычына павінна быць адзінай-едзіной, а не наследкам заплутанага ланцоўка задач. Автэнтыфікуйцеся на входзе і паўторна автарызуйцеся на роўні дадзенняў. Толькі токэн-носіцель не ёсць межай адпаведальнасці. Для заключэння, перш чым зменяць код, неабходна ясная схема: трэба адзначыць вхідныя даны, адпаведальнага за крок і крытэрыі завершэння. Аператары должны магчымаць перзапуск кроку з вядомай точкі контролю, не падозрываючы прыхованы стан. Запісвайце час выканання і кост токэна або запыту разам з функцыйнальнымі рэзультатамі. Відразлівасць костаў з самага пачатку запобегае неспакойным рахункам, калі працэс пераходзіць з дэмовай асяроддзя ў спакульную.
Калі вы хочаце падзякаваць, вы можэтэ падтрымаць мяне праз:
Калі працуеце на стадыі «Калі вы хочаце», спачатку запісайце контракт: неабяжлівыя даныя, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс пераконтроўвае чыстасць пазнейшых змян у кодзе. Зберагаюце настройкі праза код аплікацыі. Файлы сераўнавання, хранільнікі секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаць перакантроліваць іх без неабяжлівага чытання всей структуры. Запісваюце назву інструмента, хэш аргументаў, час адклікання і рэзультат кожнага вызову. Без такога лёгкага следу дэбагаванне агента займае гадзіны.
Чэк-ліст для аператывайнага карыстання
На стадыі чэк-ліста для аператывайнага карыстання перад змяной коду неабяжліва задаце даныя, адпаведальную особу за крок і крытэрыя завершання. Аператары должны магчымае перазапускаць крок з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан.
Спрытваце гэты ўрадок як кантракт межа вхіднымі дадзеннямі і пасвярджанымі выходнымі рэзультатамі. Дайце назвы артыфактам, задаце крытэрыя успеху і не прымайце часткова завершэння без паведамлення.
Автэнтыфікуйцеся на в’язку і параправерыце правы пры доступе да дадзенняў. Толькі токэн-носіцель не ёсць межай аб’екта выкарыстоўвання.
Зробіце перапытку пасля дорогіх крокаў. Сістэма вярнення праблемы не должна занова ставіць плату за той самы вызов LLM, калі аператар праказвае наступны элемент.
Фіксуйце версіі залежнасцяў і запісвуйце хэш адобраза, які выканаў дэманстрацыю. Возможнасць павторнага стварэння рэзультата лепшая за традыцыйныя методы.
Документавайце як шлях успеху, так і шлях вярнення да нормальнага стану. Праказвы, людзкія контрольныя пункты і обработка некорэктных паведамленняў ёсць часткай продукту, а не дадатковым удосконаленнем.
Перш чым запускаць даную сістэму, заморозьце версіі, зафіксавце крытычныя моменты для аналізу і паказвайце крокі з вярнення да пачатковага стану. У спільных срэдах неабяжна наявнае ліміты на частоту запуска, пераконтроўванне прав на выкорыстання рэсурсаў і чысткая адпаведальнасць за зміну секрэтных даных. Лепш выбіраць простую надзею на надзейнасць, чым крэатывныя, але еднакратныя дамы.
Прыметкі для a95f0d36f035: не кладзіце ключы прадаўцаў у рэпазітарый, задаце ліміт токена на кожную сесію і зберагачыце фіксаціі дзейнасці празоўшы ў той жа каталог, дзе знаходзяцца інструменты для тэставання, каб пазнейшыя замены мадэляў заставаліся порównанымі.
Для пункту 0 пра забезпечэнне надзейнасці, перш чым зменяць код, неабяжна адзначыце вхідныя даны, адпаведальную особу за выкананне кроку і крытэрыя завершэння. Аперацыйныя працавнікі павінны магчымае перзапускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан сістэмы. Лепш выбіраць маленькія, тэставаныя елементы коду, чым велікія, складныя скрыпты. Калі крок не выканаецца, прычына нехарактэрыстыкі павінна вказываць на адзін конкрэтны элемент, а не на заплутаны цэлы працэс.
Дзеянне паўжасткі 0/816: звярніце увагу на час выканання, клас памылкі і колькасць токенаў, якія былі выкарыстаны для гэтага зазначэння, а пасля, на аднойчыне з фіксаваным наборам пытанняў, а не на асобістых спазырах, выявіце, чы хачаце застаўіць гэтыя змены.
Калі працуеце над першым этапам зазначэння паўжасткі, спачатку запісайце контракт: неабходныя даны, сігнал успеху і тое, што выканаецца у разе частковай памылкі. Такі спіс контроля дапамагае заставаць пазнейшыя змены ў кодзе чыстымі. Запісвайце час выканання і колькасць токенаў або вартасць запытку па боку функцыйнаых рэзультаатаў. Відразлівае паказанне вартасцей з’являецца перашкоду неспакою, калі працэс пераходзіць з дэмаверсіі ў спяльныя асяроддзя.
Дзеянне паўжасткі 1/816: звярніце увагу на час выканання, клас памылкі і колькасць токенаў, якія былі выкарыстаны для гэтага зазначэння, а пасля, на аднойчыне з фіксаваным наборам пытанняў, а не на асобістых спазырах, выявіце, чы хачаце застаўіць гэтыя змены.
Этап 2 прыткага зміцнення работае наяўна, калі яго спрыяваць як меравальную паверхню. Запісаце адна «золатая» транскрыпцыя, адзін прыклад неудачы і запіс перадворачэння працы, прычым расшырваючы сферу дзеяння. Дакументаваце як шлях успеху, так і шлях вяснавання разам. Перапрыбуткі, людзкія контралі і обработка некорэктных паведамленняў ёсць часткай продукту, а не наступным этапам дапрацоўкі.
Дзеянні прыткага зміцнення 2/816: вы меравайце час выканання, класію памылак і выкарыстаны токены для гэтага запісу, а пасля выявляйце, чы хацеце застаўіць змяну, спыраючыся на фіксаваны набор пытанняў, а не на анекдоты.
Для этапа 3 прыткага зміцнення, перш чым зменяць код, задаце вхідныя даны, адпаведальнага за крок і крытэрыя завершэння. Аперацыёныя працавнікі павінны магчымае перазваляць крок з вядомай точкі контролю, не спадзяючыся на схованы стан. Спрыяваце гэты этап як кантракт між вхіднымі данымі і паўнастацэннымі выходамі. Дайце назвы артыфактам, задаце перакананні успеху і адмовіцеся ад тых падчасных завершэнняў, якія не ўсунулі проблемы.
Дзеянне паўжасткі 3/816: звярніце увагу на час выканання, клас памылак і колькасць вікорыстоўваных токенав для гэтага зьязначэння, а пасля, на аднойчынай базе фіксаванага набору пытанняў, а не на індывідуальных прыкладах, выявіце, чы хацяце застаўіць гэтыя змяны.