Практычныя прытамулі: Частка III | ‘tooluse’, ад пачатку да канца: Агентны цыкл у трох частаках
Практычныя прытамулкі: Частка III | ‘tooluse’, ад пачатку да канца: Агентны цыкл у трох элементаў – кантракты, перакрыццяі і слоты для коду для команд, якія выкарыстоўваюць гэты шаблон.
Існавайце гэта як перапрацоўаны варыянт ідэй з роздзела “Частка III | ‘tool_use’, ад пачатку да канца: Агентны цыкл у трох ітераціях” для працаваючых з апаратам: чыстыя этапы, арганізаваныя блакіты коду і прыметкі з вярнення, якія застаюцца пасля перадачы. Этап Аналізу працюе найкраща, калі яго розглядаць як вимерную плошчу. Запісаўце адна ідеальная транскрыпцыю, адзін прыклад неудачы і прыметкі з вярнення да пачатковага стану прычаму расшырэння масштаба. Дакументавайце як успішны, так і няуспешны шляхы ведення задачі. Перапрыбуткі, людзкі контроль і обработка некоректных паведамленняў є частью продукту, а не наступным етапам дорабкі.
1. Форма цыклу
Для першага – формы стэджу – пярэд тым, як зменіць код, неабходна ўзначэнне вхідных дадзеных, адпаведальнага за крок і крэтарыяў выходу. Аператары должны магчымае перзапускать крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выйшаў, прычына нехасабності павінна вказываць на адну адпаведальнасць, а не на заплутаны ланцужок задач. Автентыфікуйцеся на входзе і паўторна автарызуйцеся на роўні дадзеных. Толькі токэн-носіцель не є межай аб’екта выкарыстоўвання.
2. Акцэнаванне інструментаў
Для стадіі 2 «Акцэнтаванне на інструментах» неабяжна ўзначыць вхідныя даны, адпаведальнага за этап і крэтырыя завершэння пры перадзеіснавленні коду. Аператары должны магчымаць перзапуск этапа з вядомай точкі контролю, не падозрываючы прыхованы стан. Спрыяйце цій стадіі як даговору межы вхідных і перакананых выходных дадзенняў. Даць назвы артыфактам, узначыць перакананні на успех і адмовіцца ад беззвучнага частковага завершэння. Аутентыфікуйцеся на воратах і парадзэрывайце правыя на роботу на роўні дадзенняў. Толькі токэн-носіцель не ёстся межай аренды.
"tools": [
{
"name": "get_calendar_event",
"description": "Look up a calendar event by a natural-language query. Returns the event's start time and location.",
"strict": true,
"input_schema": {
"type": "object",
"properties": {
"query": { "type": "string", "description": "What to search for, e.g. 'meeting in London tomorrow'" }
},
"required": ["query"],
"additionalProperties": false
}
},
{
"name": "get_weather",
"description": "Get the forecast for a city on a given date. Returns condition and temperature in Celsius.",
"strict": true,
"input_schema": {
"type": "object",
"properties": {
"city": { "type": "string", "description": "City name, e.g. 'London'" },
"date": { "type": "string", "description": "ISO date, e.g. '2026-07-14'" }
},
"required": ["city", "date"],
"additionalProperties": false
}
},
{
"name": "get_travel_time",
"description": "Estimate door-to-door travel time between two places. Returns minutes.",
"strict": true,
"input_schema": {
"type": "object",
"properties": {
"origin": { "type": "string", "description": "Starting location" },
"destination": { "type": "string", "description": "Ending location" }
},
"required": ["origin", "destination"],
"additionalProperties": false
}
}
]
2.1. Толькі вхідныя даны — няма шэмы выходных дадзенняў або памилак
Для стадії «Толькі ввод» 2 1 неабяжна ўзначыць вводныя даны, адпаведальнага за крок і крэтыры завершэння пры перадзеі коду. Аперацыйныя працавнікі должны магчымае запускаць крок з вядомай точкі контролю без неабяжнага вычыслення захаванога стану. Запісваць час выконання і кост токена або запыту праза функцыйнальнымі рэзултатамі. Відразы коста з самага пачатку запобегае неспакоўным рахункам, калі траекторыя пераходзіць з дэмавай версіі ў спяльныя сераўы. Автентыфікацыя адбываецца на воратах, а прабачэнне праваў — у плане дадзеных. Толькі токен-носіцель не ўтварае межы арендаванага прастору. Для стадії «Толькі ввод» 2 1 неабяжна ўзначыць вводныя даны, адпаведальнага за крок і крэтыры завершэння пры перадзеі коду. Аперацыйныя працавнікі должны магчымае запускаць крок з вядомай точкі контролю без неабяжнага вычыслення захаванога стану. Адначасова задокументаваць шлях успеху і шлях вярнення. Перапрыбуткі, людзкія контрольныя пункты і обработка некоректных паведамленняў є часткай продукту, а не чымсь, што дадаецца пазней.
2.2. Контроль часу, калі Claude выклікае інструмент
Калі працюяеце над этапам 2.2 «Контроль часу», спачатку запісайце умовы викорыстання інструменту: неабяжлівыя даны, сигнал успеху і тое, што выходзіць у разе частковага няўспэху. Такі список дапамагае заліцьваты змяны ў кодзе. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, няўспэх павінен вказваць на адну конкретную прычыну, а не на заплутаную схему виконання. Запісвайце назву інструмента, хэш аргументаў, час адпаведзі і рынак кожнага выкліку. Без такых задапісаў дэбаггін ціклам агента губіць гадзіны.
{
"type": "auto" | "any" | "tool" | "none",
"name": "get_weather", // required ONLY when type is "tool"
"disable_parallel_tool_use": false // optional; default false
}
response = client.messages.create(
model="claude-opus-4-8",
max_tokens=1024,
tools=tools,
tool_choice={"type": "any", "disable_parallel_tool_use": True}, # must call exactly one tool
messages=messages,
)
3. Ітерацыя 1 — Claude запрашоўвае інструменты
Калі працуеце над 3-й стадзіяю Claude, парадульна спачатку напісаць кантракт: неабяжлівыя даннэ, сігнал успеху і тое, што выходзіць у случае частковага нявыпання. Такі список пераконвае ў тым, што пазнейшыя змены коду будуць чыстымі. Спрыймайце гэтую стадзію як кантракт межа даннэмі і перакананымі выходамі. Дайце назву рэзультатам, задаць критэрыя успеху і не падзеўляйцеся частковым завершэнням без паведамлення. Зявляйце лог з назвай інструмента, хэшам аргументаў, часу затрымкі і рэзультатаце кожнага вызову. Без такога следу дэбагаванне агента губіць гады.
messages = [{"role": "user",
"content": "I have a meeting in London tomorrow
— should I bring an umbrella, and
when should I leave home to be on time?"}]
response = client.messages.create(
model="claude-opus-4-8",
max_tokens=1024,
tools=tools, # the three strict definitions from Section 2
tool_choice={"type": "auto"}, # let Claude decide whether, and what, to call
messages=messages,
)
{
"id": "msg_01...",
"role": "assistant",
"stop_reason": "tool_use",
"content": [
{ "type": "text", "text": "Let me check your meeting details and the London forecast." },
{ "type": "tool_use", "id": "toolu_01Cal", "name": "get_calendar_event",
"input": { "query": "meeting in London tomorrow" } },
{ "type": "tool_use", "id": "toolu_01Wx", "name": "get_weather",
"input": { "city": "London", "date": "2026-07-14" } }
]
}
tool_calls = [block for block in response.content if block.type == "tool_use"]
4. Выкананне інструментаў
Калі працуеце над 4-м этапам «Выкананне інструментаў», спачатку запісайце умовы викорыстання: неабходныя даны, сігнал успеху і тое, што выходзіць на частыя неудачы. Такі список дапамагае заліцварваць пазнейшыя змены ў кодзе. Запісвайце час выканання і вартасьць токена або запытку празаўсёды разам з рэзультатамі функцыяналу. Відразка вартасцей з самага пачатку запобегае неспакою, калі процес пераходзіць з дэмовай среды ў спяльныя сераўры. Запісвайце назву інструмента, хэш аргументаў, час затрымкі і рэзультат кожнага вызову. Без такога лёгкага адступніка дэбагаванне можа зайняць гады. Калі працуеце над 4-м этапам «Выкананне інструментаў», спачатку запісайце умовы викорыстання: неабходныя даны, сігнал успеху і тое, што выходзіць на частыя неудачы. Такі список дапамагае заліцварваць пазнейшыя змены ў кодзе. Дакументавайце як шлях успеху, так і шлях вярнення да нормы. Перапрыбуткі, людзкія контралі і обработка некоректных паведамленняў є часткай продукту, а не чымсь, што дадаецца пазней.
5. Крокі перед і пасля викорыстання інструментаў
5. Працы пад прыем і на стадіўцы работаюць найэфектывней, калі іх расследжваць як вимерную паверхню. Запісаўце адна «золатая» транскрыпцыя, адзін прыклад неудачы і прыметку па адвярненню роботы, прычаму расшырваеце сферу дзейнасці. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшаў, прычына неудачы павінна вказваць на адную адпаведальнасць, а не на заплутаны ланцужок задач. Адкройце інструменты з вузкімі схемамі та чыткімі пазначкамі па побачных эфектах. Хостам неабходна знаты, якія вызовы мутуюць стан, прычаму вони можаць автаматычна санкціонаваць.
for block in tool_calls:
if not pre_tool_use(block): # validate / guard
results.append(error_result(block.id, "Blocked by policy."))
continue
output = execute(block.name, block.input) # run the tool
output = post_tool_use(block, output) # redact / log / reshape
results.append(tool_result(block.id, output))
6. Вернуць рэзультаты
Этап 6 «Вернуць рэзультаты» працюе найкраща, калі яго розглядаць як меркавыя паракетры. Запісайце адны ідеальны прыклад, адну справу з бягам і прыметку пра атрыбуты, якія трэба вярнуць, прычаму расшырэння масштаба. Разглядзіце гэты этап як кантракт межа вхіднымі даннымі і пераканаленымі выходнымі рэзультатамі. Дайце назвы артыфактам, задаце критэрыі успеху і не падзельвайцеся на частковыя завершэння без паведамлення. Адкройце інструменты з вузкімі схемамі та чысткімі пазначэннямі побачных наследкав. Адпрацоўвальнікам неабходна знаты, якія вызовы мутуюць стан, перш чым вони автаматычна схваляюць ўсё.
{
"role": "user",
"content": [
{
"type": "tool_result",
"tool_use_id": "toolu_01Cal",
"content": "{\"start\": \"2026-07-14T15:00\", \"location\": \"Canary Wharf, London\"}"
},
{
"type": "tool_result",
"tool_use_id": "toolu_01Wx",
"content": "{\"condition\": \"rain\", \"temp_c\": 12}"
}
]
}
Кантракт пра продажчыцю
Этап дагавання контракту працюе найэфектывней, калі яго спрыяваць як меравальную плошчу. Зберагачыце адны ідеальны прыклад роботы, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перад расшырэнням меж.
Спрыяваць кожны рэзультат як ненадзеяны вхідны даны
Кабы кожны рэзультат спрыгляў як стадія, перш чым зменіць код, неабходна задаць вхідныя даны, адпаведальнага за шаг і крэтыяры завершэння. Аператары должны магчымаць перзапуск шага з вядомай точкі контролю, не падозрываючы схованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі шаг не выйшоў, прычына неудачы павінна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцужок задач. Автентыфікуйцеся на входзе і паўторна автарызуйцеся на роўні дадзенняў. Толькі токэн-носільцы не є межай аб’екта власнасці.
7. Ітерацыя 2 — залежны вызов
Для 7-й ітерацыі 2-го етапу неабяжна прадзефінавацыя вхідных дадзеных, адпраўніка крока і крэтарыяў завершэння працы перад зменым коду. Аперацыйныя працавнікі должны магчыма было перзапускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Спрыяйце цэму етапу як кантракту межа вхіднымі дадзенымі і паверанымі выходнымі рэзультатамі. Даўце назвы артыфактам, прадзефінавацыя крэтарыяў успеху і адмовіцеся ад беззвучнага частковага завершэння. Аутентыфікуйцеся на в’язку і паўтарна автарызавайцеся на роўні дадзеных. Толькі токэн-носіцель не ёстся межай аренды.
{
"role": "assistant",
"stop_reason": "tool_use",
"content": [
{
"type": "tool_use",
"id": "toolu_02Tt",
"name": "get_travel_time",
"input": {
"origin": "home",
"destination": "Canary Wharf, London"
}
}
]
}
{
"role": "user",
"content": [
{ "type": "tool_result", "tool_use_id": "toolu_02Tt", "content": "{\"minutes\": 45}" }
]
}
8. Ітерацыя 3 — сінтэз і end_turn
Для стадіі сынтэзу 8-й ітерацыі №3 неабходна прадзеяванне вхідных дадзеных, апрацоўкі ўсіму відпаведальным аддзелам і крэатарыяў выходу з процеса пры перадзеяванні коду. Аперацыйныя працавнікі должны магчымае перапрацоўваць даныя з вядомага пункту контролю, не спрабоўваючы здагадвацца пра схованы стан. Запісвайце час апрацоўкі і кост токенаў чы супылакоў праза функцыйнае рэзультат. Відкрытыя данні пра косцы запобегаюць неспакойным рашчыткам, калі процес пераходзіць з дэмавайнага режыма ў спяльныя среды. Автентыфікуйцеся ў шлюзе і паўтарна автарызавайцеся на роўні дадзеных. Толькі токен-носіцель не є межай адпаведнага тэнанту. Для стадіі сынтэзу 8-й ітерацыі №3 неабходна прадзеяванне вхідных дадзеных, апрацоўкі ўсіму відпаведальным аддзелам і крэатарыяў выходу з процеса пры перадзеяванні коду. Аперацыйныя працавнікі должны магчымае перапрацоўваць даныя з вядомага пункту контролю, не спрабоўваючы здагадвацца пра схованы стан. Дакументавайце як шлях успеху, так і шлях вярнення да нормальнага стану. Практыкі павтарных спроб, людзкія контрольныя пункты і адарожванне некоректных дадзеных є часткай продукту, а не пасляднім дапрацоўкам.
{
"role": "assistant",
"stop_reason": "end_turn",
"content": [
{
"type": "text",
"text": "Yes, bring an umbrella — rain is forecast in London tomorrow, around 12°C. Your meeting is at 3:00 PM in Canary Wharf, roughly 45 minutes away, so leave home by about 2:00 PM to arrive with a buffer."
}
]
}
9. Весь цыкл у коде
Калі працуеце над этапам 9 «Весь цыкл», спачатку запісайце умовы: неабяжлівыя данні, сигнал працэйскага успеху і тое, што выканаецца у разе частковага нявыполнення. Такі список контроля дапамагае заліцварыць пазнейшыя змены ў коде. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, прычына нявыполнення павінна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцюг задач. Запісвайце назву інструмента, хэш параметраў, час адклікання і рынак кожнага вызову. Без такога следу дэбагаванне цыклов займае гадзіны.
import anthropic
client = anthropic.Anthropic()
messages = [{"role": "user", "content": user_request}]
MAX_ITERATIONS = 10
for _ in range(MAX_ITERATIONS):
response = client.messages.create(
model="claude-opus-4-8", max_tokens=1024, tools=tools, messages=messages,
)
messages.append({"role": "assistant", "content": response.content})
if response.stop_reason != "tool_use":
break # end_turn (or another reason): done
results = []
for block in (b for b in response.content if b.type == "tool_use"):
if not pre_tool_use(block): # your guard - may block the call
results.append({"type": "tool_result", "tool_use_id": block.id,
"content": "Blocked by policy.", "is_error": True})
continue
try:
output = execute(block.name, block.input) # run it (concurrently if independent)
output = post_tool_use(block, output) # redact / log / reshape
results.append({"type": "tool_result", "tool_use_id": block.id, "content": output})
except Exception as e:
results.append({"type": "tool_result", "tool_use_id": block.id,
"content": f"Error: {e}", "is_error": True})
messages.append({"role": "user", "content": results}) # one result per tool_use
print(response.content[-1].text)
10. Для экзамена
Калі працюеце над стадзіяй «10 для экзамена», спачатку запісайце контракт: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі список перакладзець пазнейшыя змены коду ў правільны направленні. Спрэцьвуйце да гэтай стадзіяй як да контракту межа данымі і перакананымі выходамі. Дайце назву рэзультатам, задацье критэрыяў успеху і не прымайце часткова завершаныя рэзультаты без паведамлення. Запісвайце назву інструмента, хэш аргументаў, час адклікання і рэзультат кожнага вызову. Без такога лёгкага следу дэбагаванне можа зайняць гады.
Наступны пункт у серіі
Калі працюеце над наступным этапам серыі, спачатку запісайце «контракт»: неабяжлівыя даны, сигнал успеху і тое, што выканаецца у разы частковага нявыполнення. Такі список пераканаець у тым, што пазнейшыя змены коду будуць чыстымі. Запісвайце час выканання і кост токена або запыту праз адны ряд з функцыйнальнымі рэзултатамі. Відразы коста з самага пачатку запобегае неспакоўным рахункам, калі працэс пераходзіць з дэмаверсіі ў спяльныя среды. Запішыце назву інструмента, хэш аргументаў, час затрымкі і рэзултат кожнага вызову. Без такога лёгкага адступніка дэбагаванне можа зайняць гады. Калі працюеце над наступным этапам серыі, спачатку запісайце «контракт»: неабяжлівыя даны, сигнал успеху і тое, што выканаецца у разы частковага нявыполнення. Такі список пераканаець у тым, што пазнейшыя змены коду будуць чыстымі. Дакументавайце як «шчаслівы» шлях, так і шлях вяснавання. Перапрыбуткі, людзкія контралі і обработка некоректных паведамленняў є часткай продукту, а не чыставаннем пазнейша.
Чэк-ліст для эксплуатацыі
Калі працуеце над стадзіяй аператывнага чэк-лісту, спачатку запісайце контракт: неабяжлівыя данні, сігнал успеху і тое, што выходзіць у разе частковага абякання. Такі чэк-ліст дапамагае заставаць змяны коду чыстымі.
Зберагаюце канфігурацыю пазначынай ад коду прыемлі. Файлы сераўнавання, хранальнікі секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаюць адбавіць аудыт без неабяжлівага чытання всей структуры.
Для кожнага вызову фіксуйце назву інструмента, хэш аргументаў, час затрымкі і рынак. Без такога лёгку карэспантаванне агента-дыбаггера займае гадзіны.
Зберагаюце стан графа ў простам і типаваным формате. Вярнутыя блокі маскуюць, який вузел запісаў кожны поле, і спакоююць працэс пасля перарываў.
Калі бюджэт дазволяе, дадаце тест на працэсаванне критычнага шляху ў CI з фікстурамі, а не з рэальнымі платнымі API.
Спрытваце гэты ўражак як кантракт між вхіднымі дадзеннямі і паўнастацэннымі выходнымі рэзультатамі. Дайце назвы артыфактам, задаце критэрыя успеху і не прымайце часткова завершаныя рэзультаты без паведамлення.
Перш чым пераходзіць да наступнага этапу, заморозьце версіі, зафіксуйце «золаты» транскрыпты для критычных частак і падтвердзіце крокі для абвярнення. У спакульнаваных средах неабходны ліміты частоты запытоў, перакананні ў прыналежнасці і чысткі власнік для змены секрэтных даных. Валіце надзейнасць працы над крэатывнымі, адзінразовымі дамах.
Прымечанне для пакета 87cde7765dfc: не кладзіце ключы прадаўцоў у репазітарый, задаце максімальную кантитатыву токеноў на сесію і зберагачыце транскрыпты разам з фіксатрамі для ацэнкі, каб пазнейшыя замены моделяў заставаліся пораўнанымі.
Этап 0 практыкы зміцнення працюе найэфективней, калі яго розглядаць як вимерную паверхню. Зафіксавце адны ідеальны прыклад роботы, адну справу з бягамі та прыметкі па варыянты адвярнення пры розширэнні масштаба. Разглядзайце гэты этап як кантракт межа вхіднымі даннымі та пераканаленымі выходнымі рэзультатамі. Даўце назвы артыфактам, задаце критэрыя успеху та не праграмавайце мовчанкавага частковага завершэння.
Дзеянне зміцнення 0/929: вимеравайце час выканання, класы каштоўкаў та витрату токенав для гэтай прыметкі, а пасля, на аднойчынку з фіксаваным наборам пытанняў, а не на аднойчынку з пераказамі, выберайце, чы рашыцца застаўіць змяну.
Для першага стадыі змецелення неабяжна прадзерабатваць параметры вхідных дадзеных, адпаведальнага за этап і крэтыяры завершэння пры змены коду. Аперацыйныя працавнікі павінны магчымае цяпер перадзеўсці этап з вядомага пункта контролю, не прымуячы рашэнняў на аднойчынку ў зв’язку з невідомым станам. Конфігурацыю трэба захаваць праз аддзел ад коду прыкладнення. Файлы сераўіса, хранільнікі секрэтных дадзеных і флагі функцыйяў павінны знаходзіцца ў адном месцы, якое аперацыйныя працавнікі могу пераглядаць, не чытаючы весь код.
Дзялейны пункт змецелення 1/929: неабяжна змерыць час выканання, класію адказоў і колькасць выкорыстоўваных токеноў для гэтага пункту, а потым, на аднойчынку з фіксаваным наборам пытанняў, а не на аднойчынку з індывідуальнымі спостарожэннямі, вырашыць, чы робіцца змена.
Калі працуеце над 2-й стадзіяю практыкы заспекцыі, спачатку запісайце умовы кантракту: неабяжлівыя данні, сігнал успеху і тое, што выходзіць на частыя неудачы. Такі список контроля дапамагае заліцварваць пазнейшыя змены ў кодзе. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, неудача должна вказваць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцюг задач.
Дзеянне заспекцыі 2/929: вымерайце час выканання, класію каштоўкаў і колькасць токенаў, якія былі выкарыстаны для гэтай практыкі, а потым вынікніце рашэнне пра тое, чы робіць змены на адной фіксаванай базе пытанняў, а не на адной лічбе прыкладаў.
2-я стадзія практыкы заспекцыі працуе лепей, калі яе спрыямаць як меравальную плошчу. Запісайце адны ідеальны прыклад роботы, адзін кейс неудачы і прыказку пра вярнэнне да пачатковага стану, перш чым расширваць сферу дзеяння. Запісвайце часы выканання і каштоўка токенаў або запытак праза функцыйнае рэзультат. Відкрытая інформацыя пра каштоўкі з самага пачатку запобегае неспакойным рашэнням, калі процес пераходзіць з дамовай среды ў спакульнаныя сераўеры.
Дзеянне паўжчання 3/929: звярніце увагу на час выканання, класыя ошибак і колькасць токенаў, якія былі выкарыстаны для гэтага запісу, а пасля, на аднойчынай базе фіксаванага набору пытанняў, а не на асобістых спазырэннях, выявіце, чы хацяце застаўіць змены.
Для 4-го этапу паўжчання неабходна перад змянай коду чытко апісаць вхідныя даны, адпаведальнага за выкананне крока і критэрыяы завершэння. Аперацыйныя працавнікі должны магчымае перадзвануць гэты крок з вядомага пункта контролю, не прымуджаючыся здагадвацца пра схованы стан. Неабходна адночасна задокументаваць шлях успеху і шлях вярнення да нормальнага стану. Практыка павторных спроб, людзкія перакрыцця і обработка некоректных паведамленняў є часткай продукту, а не чымсь, што дадаецца пазней.
Дзеянне паўжчання 4/929: звярніце увагу на час выканання, класыя ошибак і колькасць токенаў, якія былі выкарыстаны для гэтага запісу, а пасля, на аднойчынай базе фіксаванага набору пытанняў, а не на асобістых спазырэннях, выявіце, чы хацяце застаўіць змены.
Калі працуеце над 5-м падземам забезпечэння безпекі, спачатку запісайце контракт: неабяжлівыя данні, сігнал успеху і тое, што выходзіць па частым неудачам. Такі список контроля дапамагае залічыць пазнейшыя змены ў кодзе чыстымі. Спрэцьвуйце да гэтага падзема як да контракта межу даннімі і перакананымі выходамі. Дайце назвы артыфактам, задацьте критэрыя успеху і адмовіцеся ад мовчанкавага частага завершэння.
Дзеянні забезпечэння безпекі 5/929: вымерыце час выканання, класію каштоўкаў і витраты токенав для гэтага падзема, а потым выявіце, чы хацеце застаўці змену на адной пазначанай сэткі пытанняў, а не на адной лячбе.
5-й падзем забезпечэння безпекі працуе лепей, калі яго спрэцьвоўваюце як вымерлія параметры. Запісайце адну ідеальную транскрыпцыю, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расширваць сферу дзеяння. Зберагаюце настройкі праза код аплікацыі. Файлы сяродавішча, хранільнікі секрэтных дадзенняў і флагі функций должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць без неабяжлівага чытання всей структуры.
Дзеянне паўжчання 6/929: звярніце увагу на час выканання, клас памылакі і колькасць выкорыстоўваных токенаў для гэтага запісу, а пасля, на аднойчынай базе фіксаванага набору пытанняў, а не на асобістых спазыраннях, выявіце, чы хацяце застаўіць змены.
Для 7-й стадзіі паўжчання неабходна перад змянай коду чытка апісаць вхідныя даны, адпаведальнага за крок і критэрыя завершэння. Аперацыяныя працавнікі должны магчымае перадзвануць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выйшоў, прычына нехарактернага рэзультата должна быць адносна конкретнай адпаведальнасці, а не сложнай сэткі крокаў.
Дзеянне паўжчання 7/929: звярніце увагу на час выканання, клас памылакі і колькасць выкорыстоўваных токенаў для гэтага запісу, а пасля, на аднойчынай базе фіксаванага набору пытанняў, а не на асобістых спазыраннях, выявіце, чы хацяце застаўіць змены.
Калі працуеце над 8-м стадзіям прыемкі з павышэння безпекі, спачатку запісайце умовы кантракту: неабяжлівыя данні, сігнал успеху і тое, што выходзіць пад частковыя неудачы. Такі список контроля дапамагае заліцварыць пасляэйшныя змены ў кодзе.
Запісвайце часы выконання, а таксама кост токенаў чы роезыкараядзей разам з функцыйнальнымі рэзултатамі. Відразы костаў з самага пачатку запобегае неспакойным рахункам, калі процес пераходзіць з дэмаверсіі ў спяльныя среды.
Дакладнасць прыемкі з павышэння безпекі 8/929: вымерайце час выконання, класію памылак і кост токенаў для гэтай прыемкі, а пасля, на аднойчынных крэтарыях, адлучайце, чы застаўляць змены, а не на аднойчынных спогадах.
8-я стадзія прыемкі з павышэння безпекі работае лепей, калі яе спрыямаць як меравальную плошчу. Запісвайце адну ідеальную транскрыпцыю, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расширваць сферу дзеяння.
Документавайце як «шчаслівы» шлях, так і шлях вярнэння. Перапрыбуткі, людзкія контралі і обработка неканальных паведамленняў є часткай продукту, а не чымсь, што дадаецца пазней.
Дзеянне паўжасткі 9/929: звярніце увагу на час выканання, клас памылак і колькасць токенаў, выкорыстаных для гэтай змяны, а пасля, на аднойчынку з фіксаваным наборам пытанняў, а не на асобістых спазыраннях, выявіце, чы рашаце застаўіць гэту змяну.
Для 10-го этапа паўжасткі неабходна перад змянай коду адзначыць вхідныя даны, адпаведальнага за этап і крэтырыя завершэння. Аперацыёныя працавнікі должны магчымае перадзвануць гэты этап з вядомага пункта контролю, не прымусваныя здагадвацца пра схованы стан. Штодзе гэты этап трэба спрацавваць як кантракт межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Назвіце всі неабходныя элементы, адзначыце крэтырыі успеху і не падтрымайце тыхню частковую рэалізацыю без паведамлення.
Дзеянне паўжасткі 10/929: звярніце увагу на час выканання, клас памылак і колькасць токенаў, выкорыстаных для гэтай змяны, а пасля, на аднойчынку з фіксаваным наборам пытанняў, а не на асобістых спазыраннях, выявіце, чы рашаце застаўіць гэту змяну.