Практычныя нататкі: Google ADK — шматагентныя сістэмы
Практычны разбор тэмы «шматагентныя сістэмы на Google ADK»: кантракты, праверкі і гатовыя фрагменты кода для каманд, якія ўкараняюць гэты падыход.
Крыніцы: Google ADK Explained: Building Multi-Agent Systems With Google’s Agent Development Kit
Наступныя прытамкі паказваюць практычны шлях для вывучэння матэрыялу «Google ADK Explained: Building Multi-Agent Systems With Google’s Agent Development Kit». Акцэнт ставіцца на контракты, пераканальванняя тэсты і месцы для коду, а не на мотывацыйныя аспекты. Калі працюеце над этапам разгляду, спачатку запісайце контракт: неабяжлівыя даныя, сігнал успеху і тое, што выканаецца у разы ўзельнага нявыпалення. Такі чэрнік дапамагае заліцьварыць пазнейшыя змены ў кодзе. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшоў, прычына нявыпалення павінна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцужок задач.
Мета
Этап «Цель» працюе найкрашча, калі яго розглядаць як вімерную паверхню. Зафіксавце адна «золатая» транскрыпцыя, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расшырваць масштабы. Разглядзіце этап як кантракт межа вхіднымі данымі і пераканаленымі выходнымі рэзультатамі. Дайце назвы артыфактам, задаце крытэрыі успеху і не падзейвайце частковае завершэння без адказу. Храніце стан графа ў простам і тыпаваным фармаце. Вкладзеныя блокі маскуюць інфармацыю пра тое, які вузел запісаў які поле, і спакоююць працэс пасля перэрываў.
1. Што такое Google ADK? Розумеўце фрэймворк і экасістэму
Этап «Што такое Google» працюе найкрашча, калі яго розглядаць як параметр, які можна змерыць. Запісаце адну ідэальную версію, адзін прыклад неудачы і прыметкі па поверненню да пачатковага стану пры розшырэнні масштаба. Запісвайце часы выканання і косты токеноў або запытаў разам з функцыйнальнымі рэзультатамі. Відразлівае паказанне костаў з самага пачатку запобегае неспакойным рахункам, калі праця пераходзіць з дэмаверсіі ў спакульнаныя сераўысы.
1.1 Фрэймворк, які спачатку фокусуецца на кодзе для агентаў
Этап «Код пры галоўным» працуе наякша, калі яго спрыяваць як мерыемую структуру. Зберагучы адну ідэальную копію дадзеных, адны прыклад неудачы і запіс паўранення, перш чым расшырваць масштабы. Хавайце настройкі за межамі коду прыемленасці. Файлы сяродавішча, хранільнікі секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаць адбавляць контроль без неабяжнага чытання всей структуры. Хавайце стан структуры простым і з адзінаковым тыпам дадзеных. Вялікія блокі дадзеных маскуюць інфармацыю пра тое, канфігурацыйны вузол запісаў канкрэтнае поле, і спакоююць працу пасля перарываў. Этап «Код пры галоўным» працуе наякша, калі яго спрыяваць як мерыемую структуру. Зберагучы адну ідэальную копію дадзеных, адны прыклад неудачы і запіс паўранення, перш чым расшырваць масштабы. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшаў, прычына неудачы должна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцужок задач.
1.2 Сілы і компромісы
Для пунктам 1.2 «Сілы» і «Этап» неабяжна пазначыць вхідныя даны, адпаведальнага за кожны крок і крэтырыя для завершэння пры зміне коду. Аперацыйныя працавнікі должны магчымасць перзапуск кроку з вядомай точкі контролю, не падозрываючы схованы стан. Спрыяйце гэтаму этапу як дагавору межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Даўце назвы артыфактам, пазначыце крэтырыя успеху і адмовіцеся ад тыхняй частковай працы без паведамлення. Заставіце людзкую апраўду на тых кроках, дзе выкорыстоўваюцца грошы або зміняюцыся даны для працы. Компіляцыйныя налашчэння не ўзроўнаўцяюцься з павнотай бізнес-процэсаў.
1.3 Распакоўка ADK у экалагіі фрэймворку Agent
Для этапы пазырання ADK у 1/3 пазырання неабяжна ўзначыць вхідныя даны, адпаведальнага за крок і крытэрыя завершэння пры змены коду. Аперацыйныя працавнікі должны магчымае запускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Запісваць час выканання і кост токена або запыту праза функцыйнальнымі рэзултатамі. Відразы коста з самага пачатку запобегае неспакоўным рахункам, калі траекторыя пераходзіць з дэмавай версіі ў спяльныя асяроддзя. Пры кроках, якія вітрачаюць грошы або зменяюць даны прадукцыі, неабяжна ўключыць людзкую апраўду. Прыўязка на час компілявання не ўзначае повнайшага адпрацоўвання бізнес-процэсаў.
2. Унутраня ADK: Блокі будавання і шаблоны калькуляцый колькасці агентаў
Для стадыі 2 Inside ADK Building неабяжна ўзначыць вхідныя даны, адпаведальнага за крок і крэтырыя завершэння пры зміне коду. Аператары должны магчымаць перзапуск кроку з вядомай точкі контролю без адгадвання захаванага стану. Конфігурацыю трэба залічыць пазначкай ад коду прыемліка. Файлы сераўнавання, храненні секрэтных даных і флагі функцый должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць без чытання всіх элементаў сістэмы. Неабяжна прызначыць людскія апраўдкі для тых рэштаў, якія вітрачаюць грошы або зменяюць даны прыемліка. Прыўязкі, створаныя пад час компіляцыі, не ўзначаюць повнайсткі рэалізацыі бізнес-функцый. Для стадыі 2 Inside ADK Building неабяжна ўзначыць вхідныя даны, адпаведальнага за крок і крэтырыя завершэння пры зміне коду. Аператары должны магчымаць перзапуск кроку з вядомай точкі контролю без адгадвання захаванага стану. Валіць крашчэ маленькія, тэставаныя елементы над велікімі скрыптамі. Калі крок не выйшоў, прычына неабяжна адносіцца да адной конкрэтнай функцыі, а не да заплутанага ланцуга задач.
e.2.1 Агенты і засобы: асалевыя элементы
Калі працуеце над раздзелам 2.1 «Агенты і засобы», спачатку запісайце умовы кантракту: неабяжлівыя даныя, сігнал успеху і тое, што выканаецца у разы ў частковай нявыполненасці. Такі спіс контроля дапамагае залічыць пазнейшыя змены ў кодзе. Спрэцьвачайце этап як кантракт межу вхіднымі данымі і перакананымі выходнымі рэзультатамі. Дайце назвы артыфактам, задаць тэсты на успех і не падзеўляйцеся частковай, непрыкметной выполненасцю. Запісвайце назву засобу, хэш параметраў, час адклікання і рэзультат кожнага вызову. Без такога лёгкага следу часы губяцца на адлучэнні бягоў агента.
from google.adk.agents import LlmAgent
writer_agent = LlmAgent(
name="writer_agent",
model="gemini-2.5-flash",
instruction="You write short popular-science articles. Write about 200 words.",
output_key="draft",
)
from google.adk.tools import ToolContext
def exit_loop(tool_context: ToolContext) -> dict:
"""Call this when the draft is good enough to publish."""
tool_context.actions.escalate = True
tool_context.actions.skip_summarization = True
return {}
critic_agent = LlmAgent(
name="critic_agent",
model="gemini-2.5-flash",
instruction=(
"You are a sharp science editor. Review the draft.\n"
"If it is clear, accurate, and engaging, call exit_loop.\n"
"Otherwise, list specific, actionable fixes."
),
tools=[exit_loop],
output_key="critique",
)
2.2 Оркестрацыя агентаў
Калі працюеце над стадзіяй «2 2 Orchestrating Agents», спачатку запісайце умовы кантракту: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у случае частковага нявыпання. Такі спіс контроля дапамагае заліцвачыць змяны ў кодзе.
from google.adk.agents import LoopAgent, SequentialAgent
refinement_loop = LoopAgent(
name="refinement_loop",
sub_agents=[writer_agent, critic_agent],
max_iterations=3,
)
root_agent = SequentialAgent(
name="writing_pipeline",
sub_agents=[theme_agent, refinement_loop],
)
root_agent (SequentialAgent)
├── theme_agent
└── refinement_loop (LoopAgent, ≤ 3 rounds)
├── writer_agent
└── critic_agent → exit_loop
2.3 Стан, сесіі і памяць
Калі працуеце над стадзіям 2 3 State Sessions, спачатку запісайце контракт: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс пераконвае ў тым, што пазнейшыя змены коду будуць чыстымі. Зберагаеце настройкі паза кодам прыемлі. Файлы сераўнавання, храненні секрэтных даных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаць адбавіць аўдыт без неабяжлівага чытання всей структуры. Ставяйце контрольныя пункты пасля дорогіх крокаў. Функцыя вярнення до працы не должна занова ставіць плату за той самы вызыв LLM, калі аператар перапрыямляе працу да наступнага вузла. Калі працуеце над стадзіям 2 3 State Sessions, спачатку запісайце контракт: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс пераконвае ў тым, што пазнейшыя змены коду будуць чыстымі. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выйшоў, прычына нявыпання должна вказываць на адну адпаведальнасць, а не на заплутаную лінію апрацоўкі.
# after theme_agent runs
{"topic": "Why the sky is blue"}
# after writer_agent runs
{
"topic": "Why the sky is blue",
"draft": "The sky is blue because..."
}
# after critic_agent runs
{
"topic": "...",
"draft": "...",
"critique": "Define scattering for a lay reader."
}
# after the next writer iteration
{
"topic": "...",
"draft": "The sky is blue because of a process called...",
"critique": "..."
}
Write a short article about {topic}.
If a critique of your previous draft exists below,
treat it as a checklist and address every point
in your rewrite.\n"
{critique?}
from google.adk.sessions import InMemorySessionService
from google.adk.runners import Runner
session_service = InMemorySessionService()
runner = Runner(
agent=root_agent,
app_name="writing_assistant",
session_service=session_service,
)
await session_service.create_session(
app_name="writing_assistant",
user_id=USER_ID,
session_id=session_id,
)
async for event in runner.run_async(
user_id=USER_ID,
session_id=session_id,
new_message=start,
):
...
session = await session_service.get_session(
app_name="writing_assistant",
user_id="lina",
session_id="run_1",
)
print(session.state["draft"])
async def archive_run(callback_context):
await callback_context.add_session_to_memory()
return None
from google.adk.tools import load_memory
theme_agent = LlmAgent(
name="theme_agent",
model=MODEL,
instruction=(
"Pick a topic for a short popular-science article. "
"Use the 'load_memory' tool to check which topics were already "
"covered, and choose a new one."
),
tools=[load_memory],
output_key="topic",
)
3. Адаптаванне ADK Studio: Аблікаванне і адміністраванне працы агентаў
Этап 3 «Адаптаванне ADK Studio» работае наяўней, калі яго спрыяваць як мерыемую паверхню. Запісаце адна ідэальная транскрыпцыя, адзін прыклад неудачы і прыметкі па поверненню да пярвоначальнага стану прычым расшырэнню масштаба. Спрыявайце гэты этап як кантракт межа вхіднымі дадзеннямі і паверыжанымі выходнымі рэзультатамі. Даўце назвы артыфактам, задаце крытэрыя успеху і не прымайце частковае завершэнне без паведамлення. Зберагачыце стан графа ў простам і тыпаванам фармаце. Вярнутыя структуры дадзення маскуюць інфармацыю пра тое, які вузел запісаў кожны поле, і спакоююць працу пасля перарываў.
3.1 Падзеі: Што адбылася пад час запуску
3.1 Пады: Какі этап найкрашча працюе, калі яго расследваць як вімерную плошчу. Запісаўце адна «золатая» транскрыпцыя, адын прыклад неудачы і запіс пра відкатанне працы, перш чым расшырваць масштабы. Запісвайце часы выканання і косты токеноў або запітаў праза функцыональныя рэзултаты. Відразлівасць костаў з самага пачатку запобегае неспакою, калі працэс пераходзіць з дэмовай асяроддзя ў спяльнаныя сераўы. Храніце стан графа ў простам і тыпаваным фармаце. Вкладзеныя блокі маскуюць інфармацыю пра тое, які вузел запісаў канкрэтны поле, і спакшваюць продажчыку працу пасля перарываў.
3.2 Следы: Як працаваў запуск
«3 2 Traces How» паказвае, як стадыя працюе наяўнейша, калі яе спрыяваць як вімерную паверхню. Зберагуйце адна ідэальная транскрыпцыя, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць масштаб. Зберагуйце настройкі парадульна ад коду прыемліка. Файлы сераўіснага сэрвісу, хранілішчы секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куда аператары можуць адбавляць контроль без неабяжнага чытання всіх дадзеных. Дазвольце стану графа застацца простым і з адзінаковым тыпам. Вкладаныя блокі маскуюць інфармацыю пра тое, які вузел запісаў канкрэтны поле, і спакоююць продаж чыненняў пасля перарываў. «3 2 Traces How» паказвае, як стадыя працюе наяўнейша, калі яе спрыяваць як вімерную паверхню. Зберагуйце адна ідэальная транскрыпцыя, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць масштаб. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшаў, прычына неудачы должна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцоўкі працы.
3.3 Панель адбавлення: граф, стан, артыфакты і ацэнкі
У стадыі адміністрацыі 3.3 неабяжна прадзеўліць вхідныя даны, абавесцелювальніка крока і крэтыяры завершэння пры перадзмене коду. Аперацыйныя працавнікі должны магчымае запускаць крок з вядомай точкі контролю, не падозрываючы схованы стан. Спрыяйце гэтай этапы як даговору межа вхіднымі данымі і падтвердзенымі выходнымі рэзультатамі. Даўце назвы артыфактам, прадзеўліць перакананні ў успеху і адмовіцеся ад тыхнай частковай рэалізацыі без паведамлення. Заставьце людзкую апраўду ў тых віпадках, калі выконваюцца вітраты чы зменяюцыся даны праработкі. Компіляцыйныя налашчэнні не ўзроўнаўцяюцься з павнотай бізнес-процэсаў.
3.4 ADK Studio проты LangGraph Studio
Для 3 4 этапы ADK Studio неабяжна ўзначыць вхідныя даны, адпаведальнага за крок і крэтырыя завершэння пры змены коду. Аперацыйныя працавнікі должны магчымае запускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Запісваць час выканання і кост токенаў або запытаў праза функцыйнае рэзультат. Відкрытыя даны пра косцы запобегаюць неспакоўным рахункам, калі працэс пераходзіць з дэмавай версіі ў спяльныя асяроддзя. Пры кроках, якія вітрачаюць грошы або зменяюць даны для працы, неабяжна ўключыць людзкія апраўданні. Прыўязка на час компіляцыі не ўзначае повнайсткі адпаведнасці з бізнес-трыбуналам.
Ключовыя выводы
У стадыі «Ключовыя выводы» неабяжна практычна візначыць інпуты, адпавядаюшчага за крок адпаведальнага і крэтыяры выходу пры зміне коду. Аператары должны магчымаць перзапуск кроку з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Конфігурацыю трэба залічваць праза код аплікацыі. Файлы сераўнавання, хранальнікі секрэтных дадзеных і флагі функцый належыць у аднам месца, якое аператары можаць пераглядаць, не чытаяўшы весь ланцуг. Прызначаць людскія празгляды для рэлей, якія вітрачаюць грошы або зменяюць даны ў працэсе. Прыўязка на час компілявання не ёсць падтверджэннем полнайасці бізнес-процэса. У стадыі «Ключовыя выводы» неабяжна практычна візначыць інпуты, адпавядаюшчага за крок адпаведальнага і крэтыяры выходу пры зміне коду. Аператары должны магчымаць перзапуск кроку з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Валічыць маленькія, тэставальныя елементы пра вялікія скрыпты. Калі крок не выйшаў, прычына нехтарактару должна вказываць на адну адпаведальнасць, а не на заплутаны ланцуг працэсаў.
Справакі
Калі працюеце на стадыі Справак, спачатку запісайце угоду: неабяжлівыя даныя, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс пераконтроўкаў дапамагае заліцвачваць пазнейшыя змены ў кодзе. Спрыймайце гэтую стадыю як угоду межа данымі і перакананымі выходамі. Дайце назву рэзультатам, задаць крытэрыя успеху і адмовіцеся ад тыхоўскага частковага завершэння. Зробіце пераконтроўку пасля дорогіх крокаў. Сістэма адновлення не павінна зноў ставіць плату за той самы вызов LLM, калі аператар прабуе зноў запрацаваць пазнейшы вузел.
Чэк-ліст для эксплуатацыі
Для стадыі Чэк-ліст для эксплуатацыі, перш чым зменяць код, задаць даныя, адпаведальную за крок особу і крытэрыя завершэння. Аператары павінны магчымаць перзапуск кроку з вядомай точкі пераконтроўкаў без адгадванняя схованага стану.
Документавайце як шлях успеху, так і шлях вярнення да нормы. Прабулі, людзкія контралі і обработка неканальных паведамленняў ёсць часткай продукту, а не пазнейшым дапрацоўкам.
Неабяжна людская згода на тыя элементы, які вітрачаюць грошы або зменяюць даны працэйнага працэсу. Праця ў час складання коду не абавязкова значыць повнайшую рэалізацыю бізнес-функцыйнасці.
Напісце кароткі практычны паведамленні: як зменяць кантрольныя клучы, як спрачысці чэргу заданняў, як анулюваць пярэдніе змены.
Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, прычына нехарактэрызуецца адной відпаведальнасцю, а не заплутаным ланцоўкам заданняў.
Неабяжна людская згода на тыя элементы, які вітрачаюць грошы або зменяюць даны працэйнага працэсу. Праця ў час складання коду не абавязкова значыць повнайшую рэалізацыю бізнес-функцыйнасці.
Перад апранаваннем вэрсый, заморозьце іх, зафіксуйце ідэальны варыянт даных для крытычных траекторый і паказваце способы анулявання змэн. У спадзяльных срэдах неабходны ліміты частоты запуска, перакананні ў належнасці рэсурсаў і чысткі власнік для змены секрэтных клучоў. Валіце простую надзяйнасць замест крэатыўных, але разовых дэманстрацый.
Запіска параграфу 6e09fe01b77f: не трэба кантрацеўваць ключы прадаўцаў у рэпазітарыі, задаць максімальную кантроль на токены на адну сесію, а таксама зберагчы транскрыпціі праза фіксатуры адлічэння, каб пазнейшыя замены мадэляў заставалі пораўнанневымі.
Для запіскі параграфу 0 пра зміцнэнне: перад зменай коду неабходна адзначыць вхідныя даны, адпаведальнага за крок і крытэрыя завершэння. Аперацыёныя працавнікі должны магчымае перзапускаць крок з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Канфігурацыю трэба кантрацеўваць праза код аплікацыі; файлы сераўнавання, сховішчы секрэтных дадзеных і флагі функцый должны знаходзіцца ў аднам месцы, якое працавнікі можуць аўдытаваць, не чытаючы весь граф.
Дзялейны пункт зміцнэння 0/870: для гэтай запіскі неабходна змерыць час выканання, класію адзінакоў і выкарыстоўванне токеноў, а пасля — вырашыць, чы робіць змяну на адной падставе фіксаванага набора пытанняў, а не на адной лячэнні.
Калі працуеце над першым этапам зміцнення, спачатку запісайце умовы кантракта: неабяцковыя даны, сігнал успеху і тое, што выходзіць на частым неудачам. Такі спіс дапамагае залічваць пазнейшыя змены коду чыста і прозрачна. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выходзіць, неудача должна паказваць на адну конкрэтную відпаведальнасць, а не на заплутаны ланцюг задач.
Дзеянне зміцнення 1/870: вымерыце час выканання, класію памылак і колькасць токенаў, якія былі выкарыстоўваны для гэтага пункту, а потым выявіце, чы рашыцца застаўляць змену на адной фіксаванай сэтке пытанняў, а не на адзінаковых прыкладах.
Этап зміцнення 2 працюе лепей, калі яго спрыяжваць з мерыемымі показнікамі. Запісайце адны ідэальны прыклад працы, адзін кейс неудачы і прыказку па абратанні змян перад расшырэнням масштаба. Запісвайце часы выканання і кост токенаў або запытаў разам з функцыйнальнымі рэзултатамі. Відразы гляднасці костаў з самага пачатку запобегае неспакойным рашчыткам, калі працэс пераходзіць з дэмаверсіі ў спяльныя асяроддзя.
Дзеянне паўжчання 2/870: звярніце увагу на час выканання, клас памылакі і колькасць выкорыстоўваных токенаў для гэтага зьязначэння, а пасля, на аднойчыне з фіксаваным наборам пытанняў, а не на асобістых спазырэннях, выявіце, чы хацяце застаўіць змены.
Для 3-й стадзіі паўжчання неабходна перад змянай коду чытко візначыць вхідныя даны, адпаведальнага за крок і крытэрыя завершэння. Аперацыйныя працавнікі должны магчымае перадзьвяжаць крок з вядомага пункта контролю, не спрабоўваючы здагадвацца пра схованы стан. Неабходна адначасова задокументаваць шлях успеху і шлях вяснавання. Перапрыбуткі, людзкія контралі і обработка некорэктных паведамленняў ёсць часткай продукту, а не чымсь, што дадаецца пазней.
Дзеянне паўжчання 3/870: звярніце увагу на час выканання, клас памылакі і колькасць выкорыстоўваных токенаў для гэтага зьязначэння, а пасля, на аднойчыне з фіксаваным наборам пытанняў, а не на асобістых спазырэннях, выявіце, чы хацяце застаўіць змены.
Калі працуеце над 4-й стадзіяю практыкы забезпечэння безпекі, спачатку запісайце контракт: неабяжлівыя вхідныя даны, сігнал успеху і тое, што выходзіць на частым неудачам. Такі спіс пераканаець у тым, што пазнейшыя змены коду будуць чыстымі. Спрэчвайце гэтую стадзію як контракт межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Дайце назвы артыфактам, задаце крытэрыя успеху і адмовіцеся ад тых частых завершэнняў, якія не залічваюцца успехам.
Дзеянне 4/870 практыкы забезпечэння безпекі: вымерайце час выканання, класы каштоўкаў і вітрату токенав для гэтай практыкі, а потым выберыце, чы робіць змены на адной пазначанай базе пытанняў, а не на адной толькі прыватнай інформацыі.
4-я стадзія практыкы забезпечэння безпекі працуе лепей, калі яе спрэчваюце як меравальную плошчу. Запісайце адну ідэальную транскрыпцыю, адзін прыклад неудачы і змест карэтквоту перад расшырэнням масштаба. Зберагайце настройкі праз адна месца, не ў кодзе прыемлівача. Файлы сяродавішча, хранільнікі секрэтных дадзеных і флагі функцый должны знаходзіцца ў аднам месцы, куды аператары можаць аўдытаваць без неабяжлівага чытанняў усіх дадзеных.
Дзеянне паўжчання 5/870: звярніце увагу на час выканання, клас памылакі і колькасць выкорыстоўваных токенаў для гэтага запісу, а пасля, на аднойчынай базе фіксаванага набору пытанняў, а не на асобістых спазыраннях, выявіце, чы рэшацца застаўляць змяну.
Для 6-й стадзіі паўжчання неабходна перад змянай коду чытка апісаць вхідныя даны, адпаведальнага за крок і крытэрыя завершэння. Аперацыяныя працавнікі павінны магчымае перадзванаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выйшоў, прычына нехарактэрнага рэзультата павінна вказваць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцужок задач.
Дзеянне паўжчання 6/870: звярніце увагу на час выканання, клас памылакі і колькасць выкорыстоўваных токенаў для гэтага запісу, а пасля, на аднойчынай базе фіксаванага набору пытанняў, а не на асобістых спазыраннях, выявіце, чы рэшацца застаўляць змяну.
Калі працуеце над 7-ю стадзіяй забезпечэння безпекі, спачатку запісайце умовы кантракту: неабяжлівыя даныя, сігнал успеху і тое, што выходзіць пад частковыя неудачы. Такі спіс контроля дапамагае заліцвачыць пазнейшыя змены коду адкрыта і чыста. Запісвайце час выканання задачы, а таксама вартасць токена чыў запіту пад функцыйнальнымі рэзультатамі. Відразувыя даныя пра вартасць запобегаюць неспакоўным рахункам, калі працэс пераходзіць з дэмаверсіі ў спяльныя асяроддзя.
Дзеянне 7/870 забезпечэння безпекі: вымерыце час выканання, класію памылак і вартасць вікорыстоўвання токена для гэтай стадзіі, а пасля выберыце, чы хацеце застаўіць змену на адной фіксаванай сэтке пытанняў, а не на адной лічбе прыкладаў.
7-я стадзія забезпечэння безпекі працуе лепей, калі яе спрыямаць як меравальную плошчу. Запісвайце адну ідэальную транскрыпцыю, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расшырваць масштабы. Дакументавайце як «вялікі» шлях выканання, так і шлях вярнэння. Перапрыбуткі, людзкія контролы і обработка некорэктных паведамленняў ёсць часткай продукту, а не чымсь, што дадаецца пазней.
Дзеянне паўжасткі 8/870: звярніце увагу на час выканання, клас памылак і колькасць токенаў, выкорыстаных для гэтай змяны, а пасля, на аднойчынку з фіксаваным наборам пытанняў, а не на асобістых спазырах, выявіце, чы хачаце застаўіць гэту змяну.
Для 9-го этапа паўжасткі неабходна перад змянай коду адзначыць вхідныя даны, адпаведальнага за этап і крэтырыя завершэння. Аперацыяныя працавнікі должны магчымае перадзвануць гэты этап з вядомага пункта контролю, не прымусваныя здагадвацца пра схованы стан. Штодзе гэты этап трэба спрацавваць як кантракт межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Назвіце артыфакты, адзначыце крэтырыі успеху і не падтрымвайце беззвучнае частковае завершэння.
Дзеянне паўжасткі 9/870: звярніце увагу на час выканання, клас памылак і колькасць токенаў, выкорыстаных для гэтай змяны, а пасля, на аднойчынку з фіксаваным наборам пытанняў, а не на асобістых спазырах, выявіце, чы хачаце застаўіць гэту змяну.