Галоўная / Артыкулы

Teams Built Judikt: плоскас керування безпекай і надзеямою для агентаў AI, якія выкарыстоўваюць MCP.

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

Выдавец: REACTAPP.TOP10 хв чытання2239 слоў

Крыніцы: I Built Judikt: A Security and Reliability Control Plane for AI Agents Using MCP

У гэтым керавану практычна адбудоваць шлях ад сыр'ёў да рабочай сістэмы для праекта «I Built Judikt: A Security and Reliability Control Plane for AI Agents Using MCP». Акцэнт ставіцца на крокі, якія можна выконваць, чыстае перакананне ў правільнасці дзействаў, а таксама на код, які можна проста дадаць у рэпозытарый без неабязковасці з'ясоўвання меты. Для загальнага адгледзення, перш чым зменяць код, неабходна візначыць вхідныя даны, адпаведальнага за крок і крытэрыя завершэння. Аператары должны магчымае перадзваніць крок з вядомай точкі контролю, не падозруючы пра схованы стан. Неабходна аддокументаваць як шлях успеху, так і шлях вяснавання проблем. Перапрыбуткі, людзкія перакананні і апрацоўка некорэктных паведамленняў ёсць часткай продукту, а не чымсь, што дадаецца пазней.

Шта такое Judikt?

Калі працуеце над кнігай «Што такое Judikt?», спачатку запісаце кантракт: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс пераконвае ў тым, што пазнейшыя змены коду будуць чыстымі. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, прычына нявыпання должна вказываць на адну адпаведальнасць, а не на заплутаны ланцюг задач. Запісвайце назву інструмента, хэш аргументаў, час адклікання і рэзультат кожнага вызову. Без такога следу дэбагаванне агента займае гадзіны.

Проблема, якую вы хацелі рашыць

Калі працуеце над задачай, яю хацелі быць рашытой, спачатку запісайце контракт: неабяжлівыя даныя, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс пераконвае ў тым, што пазнейшыя змены коду буду чыстымі. Спрыятліва ставіцеся да гэтага этапу як да контракту межа данымі і перакананымі выходамі. Дайце назву рэзультатам, задаце крытэрыя успеху і не прымайце часткова завершанне без паведамлення. Запісвайце назву інструмента, хэш аргументаў, час адклікання і рэзультат кожнага вызову. Без такога лёгкага следу дэбагаванне губіць гадзіны.

Як запыт праходзіць праз Judikt

Калі працуеце над тым, як запіт праходзіць праз Judikt, спачатку запісайце умовы вярбунка: неабяцковыя даны, сігнал успеху і тое, што выходзіць у разе частковага невыпання. Такі спіс контроля дапамагае заліцвачыць пазнейшыя змены ў кодзе. Запісвайце часы выканання і кост токена або запіту празаўсёды разам з рэзультатамі функцыянальнай працы. Візуабельнае паказанне костаў з самага пачатку запобегае неспакойным рахункам, калі працэс пераходзіць з дэмовай асяроддзя ў спяльныя сераўсы. Запісвайце назву інструмента, хэш аргументаў, час затрымкі і рэзультат кожнага вызову. Без такога лёгкага следу дэбагаванне агента, які ціркулюе без канца, можа забраць гады часу.

AI agent or MCP client
        |
        v
Authentication and actor binding
        |
        v
Tool allowlist and argument inspection
        |
        v
Risk scoring and environment checks
        |
        v
Rate limit, approval, rollback plan, kill switch
        |
        +---- DENY / REQUIRE_APPROVAL / DRY_RUN_ONLY
        |
        v
Pinned MCP tool-definition verification
        |
        v
JSON-RPC tools/call over stdio or Streamable HTTP
        |
        v
Operational backend or external MCP server
        |
        v
Prompt-injection inspection and secret redaction
        |
        v
Agent-visible result
        |
        v
Signed audit event, metrics, traces, and findings

Калі працуеце над тым, як запіт праходзіць праз Judikt, спачатку запісайце умовы вярбунка: неабяцковыя даны, сігнал успеху і тое, што выходзіць у разе частковага невыпання. Такі спіс контроля дапамагае заліцвачыць пазнейшыя змены ў кодзе. Адначасова задокументавайце шлях успеху і шлях вярнення. Перапрыбуткі, людзкія контрольныя пункты і обработка непрацюючых запітоў ёсць часткай продукту, а не пазнейшым дапрацоўкам.

Што насправды запускаецца ў локальнай дэманстрацыі

Тое, што насправды запускаецца ў локальнай дэманстрацыі, працюе найкрашча, калі яго розглядаць як мерыемую структуру. Запісаўце адна ідэальная версія, адзін прыклад неудачы і прыметку па поверненню да попярэднья версіі пры расшырэнні масштаба. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выходзіць, прычына неудачы павінна вказываць на адную адпаведальнасць, а не на заплутаны ланцюг задач. Адкройце інструменты з вузкімі схемамі і чыткімі пазначэннямі побачных эфектаў. Адпаведальныя за эксплуатацыю людзі павінны ведаць, якія вызовы мутуюць стан, перш чым автаматычна схваліць іх.

runtime.call_tool(
    "platform-ops",
    "platform.health",
    {"service": "payments-api"},
)
python -m judikt.cli backend platform-ops
JudiktRuntime.call_tool
  -> PolicyEngine.evaluate
  -> StdioMCPClient.call_tool
  -> JSON-RPC tools/call
  -> PlatformOpsBackend.call
  -> ContentGuard.inspect
  -> PolicyEngine.redact
  -> AuditStore.record
  -> Metrics.observe
  -> ToolCallResult

Операцыйныя бэкенды

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

Управлінне з боку запыту

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

Усуненне проблем з атрыбутам ужоцьвярджэння

Для выправлення проблем, які патрэбуе ўтверджэння, перад змянайом коду неабходна візначыць інпуты, адпаведальную особу за крок і крытэрыі завершэння. Аператары должны магчымаць перзапуск крока з вядомай точкі контролю, не спрабоўваючы здогадвацца пра схованы стан. Валідзіце маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выйшоў, прычына неудачы должна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны працэс. Автэнтыфікуйцеся на входзе і паўторна автарызуйцеся на роўні дадзенняў. Толькі токэн-носільцы не ёсць межай адпаведальнасці.

Тэставанне без рэальных дадзенняў, рэжым тэневага аператара і механізмы зупінкі

Для рэжыма працы без рэальных наследків, рэжыма „тэнь“ і функцый канцэлювання неабяжна пазначыць вхідныя даныя, адпаведальную особу за выкананне крока і крытэрыі завершэння пры перадзеяванні коду. Аператары должны магчымаць перывыканне крока з вядомай точкі контролю без неабяжнага адгадвання схованага стану. Спрыяйце цэму этапу як кантракту межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Дайце назвы артыфактам, пазначыце крытэрыі успеху і не прымайце часткова завершанне без паведамлення. Автэнтыфікуйцеся на в’язку і парадзеўжыце разрэшэння на роўні дадзеных. Толькі токэн-носіцель не ёсцца межай арэндаванага рэсурсу.

Захаванне шляху адпаведзі

Для захавання шляху адказу неабяцо практычная ваказваць інпуты, адпаведальнага за крок і крэтыры выходу пры перамене коду. Аператары должны магчымаць перапрыявленне крока з вядомай точкі контролю без неабяцовага адгадвання захаваных станоў. Зявіць вачэнне часу выканання і косту токена або запыту праза функцыйнальныя рэзултаты. Вачэнне коста з самага пачатку запобегае неспакоўным рашчыткам, калі шлях пераходзіць з дэмавай версіі ў спяльныя асяроддзя. Автэнтыфікуйцеся ў шлюзе і практычна перавыдаць разрэшэння ў плане дадзеных. Толькі токен-носіцель не ёсць межай арэны выкарыстоўвання. Для захавання шляху адказу неабяцо практычная ваказваць інпуты, адпаведальнага за крок і крэтыры выходу пры перамене коду. Аператары должны магчымаць перапрыявленне крока з вядомай точкі контролю без неабяцовага адгадвання захаваных станоў. Дакументаваць шлях успеху і шлях вяснавання разам. Перапрыявленні, людзкія контролы і обработка нераспакаваных паведамленняў ёсць часткай продукту, а не пасляднім дапрацоўкам.

Рэдакцыя і секрэты

Калі працуеце з функцыямі рэдакцыі і секрэтамі, спачатку запісайце угоду: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага няўспэху. Такі спіс контроля дапамагае заліцьварыць чыстасцю пазнейшых змян у кодзе. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, няўспэх павінен вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцюг задач. Запісвайце назву інструмента, хэш параметраў, час адклікання і рынак кожнага вызову. Без такога следу дэбаггін агента губіць гадзіны.

Доказы аўдыту, якія паказваюць пранарушэння

Калі працуеце з доказам аўдыту, які паказваюць спробы змены, спачатку запішыце угоду: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс контролю дапамагае заліцьварыць пасляэйшныя змены ў кодзе. Спрыятліва ставіцеся да гэтага этапу як да угоды межа данымі і пераканаленымі рэзультатамі. Даць назвы артыфактам, задаць крытэрыя успеху і не падзеўляйцеся частковым завершэнням без паведамлення. Запісвайце назву інструмента, хэш аргументаў, час адклікання і рэзультат кожнага вызову. Без такога лёгкага следу дэбагаванне можа зайняць гады.

Візуабельнасць

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

Што пакрывае дэманстрацыя

Тое, што паводлі дэманстрацыі ўключае, працуе наякша, калі яго расследжваць як вімерную паверхню. Запісаўце адна «золатая» версія, адзін прыклад неудачы і прыметку па адвярненню перад расшырэнням масштаба. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выходзіць, неудача должна паказваць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцюг задач. Адкройце інструменты з вузкімі схемамі і чыткімі пазначэннямі побачных эфектаў. Хостам неабходна ведаць, якія вызовы мутуюць стан, перш чым яны будуць автаматычна затверджаны.

Варыянты развёртвання

Варыянты развёртвання працуюць наўсёх лепшая, калі іх спрыяглядаць як мерыемую плошчу. Зафіксавайце адны ідэальны прыклад працы, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расшырваць сферу дзеяння. Спрыяглядайце гэты этап як кантракт межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Даўце назвы артыфактам, задаць крытэрыя успеху і не падзеўляйцеся частым, непূরным выкананнем задач. Адкройце інструменты з вузкімі схемамі і чысткімі пазначэннямі побачных эфектаў. Адпаведальныя за хоставанне должны ведаць, якія вызовы мутуюць стан, перш чым автаматычна схваліць іх.

Тэставанне і перакананне безпекі

Тэставанне і перакананне безпекі работаюць наяўней, калі іх спрыявае можласць вімеры. Зберагучы адны ідэальны прыклад працы, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, спачатку расшыроўваюце сферу дзейснення. Запішыце час выканання і вартасьць токенаў або запытак па боку функцыйнальных рэзультаатаў. Відразліва візуалізацыя вартасцей запобегае неспакойным рахункам, калі працэс пераходзіць з дэмовай асяроддзя ў спакульную. Адкройце інструменты з вузкімі схемамі і чыткімі пазначэннямі парадуктываў. Хостам неабходна знаты, якія вызовы мутуюць стан, перш чым яны автаматычна схваляюць іх. Тэставанне і перакананне безпекі работаюць наяўней, калі іх спрыявае можласць вімеры. Зберагучы адны ідэальны прыклад працы, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, спачатку расшыроўваюце сферу дзейснення. Дакументавацыя успішнага і вярнэння да нормальнага стану трэба выпрацавваць разам. Перапрыявы, людзкі контроль і обработка некорэктных паведамленняў ёсць часткай продукту, а не етапамі далейшага доўнервання.

Што ўсё яшчэ не вырашана

Для таго, што яшчэ не рашыта, перад змінайом код адзначыце вхідныя даны, адпаведальнага за крок і крытэрыі завершэння. Аперацыяныя працавнікі должны магчымаць перзапуск кроку з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Валіце маленькія, тэставальныя елементы працэўнікаў над вялікімі скрыптамі. Калі крок не выйшаў, прычына неудачы павінна вказываць на адзіну адпаведальнасць, а не на заплутаны ланцужок задач. Автэнтыфікуйцеся на входзе і паўторна автарызуйцеся на роўні дадзенняў. Толькі токэн-носіцель не ёсць межай адпаведальнасці.

Што вы навучыліся

За выведакі, якія вы атрымалі, прайдзіце задаць вхідныя даны, адпаведнага власніка крока і крытэрыя завершэння пры зміне коду. Аперацыйныя працавнікі павінны магчымае перадзеўсці крок з вядомага пункта контролю, не спрабоўваючы здогадвацца пра схованы стан. Спрыяйце гэтаму этапу як кантракту межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Даўце назвы артыфактам, задаць перакананні на успех і адмовіцеся ад бяспрэчнага частковага завершэння. Автэнтыфікуйцеся на воратах і паўторна автарызуйцеся на роўні дадзенняў. Толькі токэн-носіцель не ёст кантактная межа тэнанты.

Прабуйце праект

Для працы над праектам трэба прайшоўшы змяніць код, апранаваць вхідныя даны, выклікача практыкі і крэтарыяя для ўзнікнення завершэння. Аператары должны магчыма было перзапускаць практыку з вядомага контрольнага пункту, не спрабоўваючы здогадвацца пра схованы стан. Запісвайце час выканання і кост токена або запыту праза функцыйнае рэзультат. Відразлівае паказанне костаў запобегае неспадзянанным расчыткам, калі практыка пераходзіць з дэмавайнага рэжыма ў спадзеленыя сераўеры. Автэнтыфікуйцеся ў шлюзе і паўтарна автарызавайцеся на роўні дадзенняў. Толькі токен-носіцель не ёсць межай адпаведнага тэнантства.

git clone https://github.com/gaurav-gs7/Judikt.git
cd Judikt
./scripts/run_demo.sh --audit-db /tmp/judikt-demo.db

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

Чэрніцкая справы для эксплуатацыі

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

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

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

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

Напісце кароткі посібнік: як роцыяваць клучы, як спрабаваць апустошыць кялейку, як атрыбуцыяваць назад пасляльнія даныя.

Спрыявайце гэты ўрадок як кантракт між вхіднымі дадзеннямі і перакананымі выхіднымі рэзультатамі. Назвайце артыфакты, задаць крытэрыя успеху і адмовіцеся ад мовчанкавага частковага завершэння.

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

Прыметка для 2580b5835abc: не кладзіце ключы прадаўцаў у рэпазітарый, задаце верхнюю межу токеноў на кожную сесію і зберагачыце транскрыпты празаўсёды поблізу фіксатароў для ацэнкі, каб пазнейшыя замены мадэляў заставаліся порównаннэй.