
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")
기능 매니페스트는 데이터셋 어댑터와 분리되어 유지됩니다. 벤치마크 텍스트는 신뢰할 수 없는 에피소드 입력인 반면, 매니페스트는 에피소드 전에 사용 가능한 운영자 소유 실행 경계를 설명하기 때문입니다.
모든 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 임포터는 압축된 케이스/Skill 노출 인덱스를 도출하기 전에 고정된 커밋을 확인합니다.
TaskContractor가 신뢰할 수 있는 사용자 요청을 작업 계약으로 컴파일합니다.결정적 검사는 대상 모델과 독립적으로 유지됩니다. 모델 기반 역할은 동일한 검증 경계를 통과해야 하는 타입 지정 후보를 제출합니다.
baseline/registry.py는 13개의 비교 방법을 정의합니다. 모든 방법은 해당 방법의 이름을 딴 전용 폴더와 implementation.py 진입점을 가집니다. 자체 런타임이 있는 종속성은 지연 임포트되므로 APEX 코어와 데이터 어댑터를 모든 벤치마크 환경을 설치하지 않고도 테스트할 수 있습니다.
python -m compileall -q src benchmark baseline tests
pytest
릴리스 전에 ANONYMITY.md의 익명성 검사도 실행하십시오. 자격 증명, 결과 파일, 머신별 경로, Git 원격, 저자 메타데이터는 제출물에 추가되어서는 안 됩니다.