
LLM 에이전트 보안을 위한 Defender 프레임워크로, 작업 계약을 컴파일하고, 기능 매니페스트를 검증하며, 벤치마크 공격 사례에 대해 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")
Capability manifest는 데이터셋 어댑터와 분리되어 유지되는데, 벤치마크 텍스트는 신뢰할 수 없는 에피소드 입력인 반면, manifest는 에피소드 이전에 사용 가능한 운영자 소유의 실행 경계를 기술하기 때문입니다.
모든 benchmark/registry/data/<benchmark>/manifest.json은 apex-benchmark-registry-v2를 사용하는 최종 레지스트리 아티팩트입니다. 번들은 중복 제거된 capability_units, 재사용 가능한 환경, 그리고 명시적 케이스 바인딩을 저장합니다. 따라서 수백 개의 케이스를 가진 벤치마크라도 동일한 Tool manifest를 수백 번 중복하지 않습니다. 각 단위는 정확한 입력/출력 스키마, effect, observation, effect_return, receipt 역할, 그리고 타입이 지정된 주석을 유지합니다. 각 환경은 소스, Skills, 그리고 agent_visible_surface를 별도로 기록합니다.
실험 구현에서 감사된 정확한 소스 입력은 benchmark/registry/source/ 아래에 보관됩니다. 빌드 단계는 기존 등록을 정규화하고 중복 제거할 뿐, 벤치마크 프롬프트로부터 새로운 capability 의미를 추론하지 않습니다. 다음 명령으로 모든 최종 아티팩트를 재생성하십시오:
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 임포터는 컴팩트한 케이스/Skill 노출 인덱스를 도출하기 전에 고정된 커밋을 검증합니다.
TaskContractor는 신뢰할 수 있는 사용자 요청을 작업 계약으로 컴파일합니다.결정론적 검사는 대상 모델과 독립적으로 유지됩니다. 모델 기반 역할은 동일한 검증 경계를 통과해야 하는 타입이 지정된 후보를 제출합니다.
baseline/registry.py는 13개의 비교 방법을 정의합니다. 모든 방법에는 해당 방법의 이름을 딴 전용 폴더와 implementation.py 진입점이 있습니다. 자체 런타임을 가진 종속성은 지연 임포트되므로 모든 벤치마크 환경을 설치하지 않고도 APEX 코어와 데이터 어댑터를 테스트할 수 있습니다.
python -m compileall -q src benchmark baseline tests
pytest
릴리스 전에 ANONYMITY.md의 익명성 검사도 실행하세요. 자격 증명, 결과 파일, 머신별 경로, Git 원격 저장소 또는 작성자 메타데이터가 제출물에 추가되어서는 안 됩니다.