Teams Built Judikt: плоскость управления безопасностью и надежностью для ИИ-агентов с использованием MCP
Пошаговое руководство по использованию Teams Built Judikt: плоскость управления безопасностью и надежностью для ИИ-агентов с использованием MCP: контракты, проверки и готовые блоки кода для команд, разрабатывающих решения на основе 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: не храните ключи поставщика в репозитории, установите лимит токенов на сессию и сохраняйте транскрипты рядом с фиксами для оценки, чтобы последующие замены моделей оставались сопоставимыми.