Галоўная / Артыкулы / Практычныя прытамулкі: Як функцыонавае Google ADK: стварэнне систем з калькольнікаяе агентамі

Практычныя прытамулкі: Як функцыонавае Google ADK: стварэнне систем з калькольнікаяе агентамі

Практычныя прыказкі: Як функцыонуе Google ADK: стварэнне мнага-агентных систем з выкарыстоўванням кантрактаў, перакальбавань і слотаў для коду для команд, якія викорыстоўваюць гэты патэрн.

3346 слоў

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