
Фреймворк защиты для безопасности LLM-агентов, который компилирует контракты задач, проверяет манифесты возможностей и контролирует эффекты с помощью проверок доказательств PLANT/WRAP на основе эталонных тестовых атак.
Репозиторий разделяет защитник APEX, нормализацию данных бенчмарков, доверенные манифесты возможностей и интеграции методов сравнения, чтобы каждый слой можно было проверять независимо.
python -m venv .venv
source .venv/bin/activate
pip install -e '.[test]'
export PYTHONPATH="$PWD/src:$PWD"
Компоненты на основе моделей читают OPENAI_API_KEY и необязательный
OPENAI_BASE_URL из окружения. Копируйте .env.example только как справку;
код не читает локальные файлы учётных данных.
| Путь | Назначение |
|---|---|
src/apex/defender/ | Контракты задач APEX, типизированные привязки, квитанции, проверки доказательств, PLANT, WRAP и обработка продолжений |
src/apex/core/ | Общий протокол, типы результатов, агрегация и независимая от провайдера граница модели |
benchmark/adapter/ | Преобразование релизов бенчмарков только для чтения в единый интерфейс BenchmarkCase |
benchmark/registry/ | Регистрация доверенных возможностей и манифесты для конкретных бенчмарков |
baseline/<name>/ | Одна реализация или интеграция среды выполнения на каждый метод сравнения |
tests/ | Инварианты репозитория и быстрые модульные проверки |
См. STRUCTURE.md для описания потока компонентов и точек расширения.
Компактные замороженные дескрипторы кейсов для всех шести бенчмарков включены в
benchmark/data/. Полные вышестоящие репозитории и среды выполнения песочниц не
поставляются в комплекте. Передача None выбирает упакованные данные; явный
data_root по-прежнему может их переопределить.
from benchmark.adapter import adapter_for
adapter = adapter_for("scr", None)
attack_cases = list(adapter.cases("attack"))
Адаптер владеет идентификаторами кейсов, метками разделения, метками наборов, критериями допустимости и полезной нагрузкой, передаваемой в среду выполнения бенчмарка. Он не изменяет содержимое бенчмарка и не регистрирует полномочия инструментов.
from benchmark.registry import module_for
registry = module_for("mcptox")
environment_plan = registry.load("12306-mcp")
Манифесты возможностей хранятся отдельно от адаптеров наборов данных, поскольку текст бенчмарка является недоверенным входом эпизода, тогда как манифест описывает границу выполнения, принадлежащую оператору и доступную до начала эпизода.
Каждый benchmark/registry/data/<benchmark>/manifest.json является финальным артефактом реестра, использующим apex-benchmark-registry-v2. Пакет хранит дедуплицированные capability_units, переиспользуемые окружения и явные привязки кейсов. Таким образом, бенчмарк с сотнями кейсов не дублирует идентичный манифест Tool сотни раз. Каждая единица сохраняет точную схему ввода/вывода, effect, observation, effect_return, роль квитанции и типизированные аннотации. Каждое окружение отдельно фиксирует источники, Skills и agent_visible_surface.
Точные проверенные исходные данные из реализации эксперимента хранятся в benchmark/registry/source/. Шаг сборки нормализует и дедуплицирует эти существующие регистрации; он не выводит новую семантику возможностей из промптов бенчмарка. Перегенерируйте все финальные артефакты с помощью:
pip install -e '.[registry]'
python scripts/build_registry_manifests.py
python scripts/audit_registry_coverage.py
Чтобы обновить упакованные дескрипторы кейсов из локальных вышестоящих репозиториев, выполните:
python scripts/import_benchmark_data.py \
--research-root <research-checkout> \
--scr-root <SCR_Bench-checkout>
Импортёр SCR проверяет закреплённый коммит перед построением своего компактного индекса раскрытия кейсов/навыков.
TaskContractor компилирует доверенный запрос пользователя в контракт задачи.Детерминированные проверки остаются независимыми от целевой модели. Роли на основе модели подают типизированные кандидаты, которые должны пройти ту же границу валидации.
baseline/registry.py определяет 13 методов сравнения. Каждый метод имеет
отдельную папку, названную по методу, и точку входа implementation.py.
Зависимости с собственной средой выполнения импортируются лениво, чтобы ядро APEX и
адаптеры данных можно было тестировать без установки всех сред бенчмарков.
python -m compileall -q src benchmark baseline tests
pytest
Перед выпуском также выполните проверки анонимности, описанные в ANONYMITY.md. В отправляемые материалы не следует добавлять учётные данные, файлы результатов, пути, специфичные для конкретной машины, Git-удалённые репозитории или метаданные автора.