
HARDE를 위한 연구 코드로, 에이전트 안전성 벤치마크 전반에서 런타임 위험 탐지 및 실행 제어를 위해 구성 요소를 탐침하고 적응적으로 최적화하는 에이전트 하네스입니다.
HARDE: 런타임 위험 탐지 및 실행 제어를 위한 에이전트 하네스 최적화를 위한 코드 릴리스입니다.
이 저장소는 두 가지 상호 보완적인 진입점 계열을 포함합니다:
domains/: Meta-Harness 베이스라인과 각 벤치마크에 대한 HARDE의 두 단계.personalized_harness/: 벤치마크 어댑터, 베이스라인 하네스, 학습된/개인화된 하네스, 그리고 평가 파이프라인.HARDE/
├── domains/
│ ├── agentdyn/ # Meta-Harness 베이스라인
│ ├── agentdyn_component_probe/ # HARDE Stage I
│ ├── agentdyn_adaptive_component_search/ # HARDE Stage II
│ ├── agentsafetybench/ # Meta-Harness 베이스라인
│ ├── agentsafetybench_component_probe/ # HARDE Stage I
│ ├── agentsafetybench_adaptive_component_search/ # HARDE Stage II
│ ├── shade_arena/ # Meta-Harness 베이스라인
│ ├── shade_arena_component_probe/ # HARDE Stage I
│ └── shade_arena_adaptive_component_search/ # HARDE Stage II
├── personalized_harness/
│ ├── AgentDyn/
│ ├── AgentSafetyBench/
│ └── SHADE_v2/
├── .env.example
├── .gitignore
└── requirements.txt
benchmark라는 이름의 벤치마크에 대해, 디렉터리는 다음 규칙을 따릅니다:
| 디렉터리 | 메서드 단계 | 주요 진입점 |
|---|---|---|
domains/benchmark/ | Meta-Harness 베이스라인 | meta_harness.py |
domains/benchmark_component_probe/ | HARDE Stage I: 컴포넌트 프로빙 | component_probe.py |
domains/benchmark_adaptive_component_search/ | HARDE Stage II: 적응형 컴포넌트 탐색 | adaptive_component_search.py |
Stage I은 하네스 컴포넌트를 프로빙하고 컴포넌트 수준의 루브릭을 생성합니다. Stage II는 해당 루브릭을 사용하여 탐색 중에 컴포넌트를 적응적으로 선택하고 최적화합니다. 이 저장소에서 benchmark는 agentdyn, agentsafetybench, shade_arena 중 하나입니다.
Python 3.10 이상을 권장합니다.
conda create -n HARDE python=3.10
conda activate HARDE
pip install -r requirements.txt
cp .env.example .env
cp model_config.example.yaml model_config.yaml
# Edit .env, then export its values into the current shell.
set -a
source .env
set +a
서드파티 벤치마크 코드와 데이터셋은 저장소에 포함되어 있지 않습니다. 필요한 벤치마크를 아래의 정확한 디렉터리 이름을 사용하여 저장소 루트에 클론하세요:
git clone https://github.com/leolee99/AgentDyn.git AgentDyn
git clone https://github.com/jkutaso/SHADE-Arena.git SHADE-Arena
git clone https://github.com/thu-coai/Agent-SafetyBench.git Agent-SafetyBench
추가 데이터 소스:
어댑터는 HARDE 루트를 기준으로 이 저장소들을 찾습니다. 예상 구조:
HARDE/
├── AgentDyn/
├── SHADE-Arena/
├── Agent-SafetyBench/
├── domains/
└── personalized_harness/
벤치마크별 상세 명령과 옵션은 domains/ 아래의 각 해당 디렉터리 내 README에 문서화되어 있습니다. 고정 하네스 평가 예시는 personalized_harness/README.md에 문서화되어 있습니다.
다음 SHADE-Arena 예시는 각 메서드의 전체 실행 흐름을 보여줍니다.
Meta-Harness는 전체 하네스를 세 번의 반복 동안 직접 최적화한 다음, 선택된 하네스를 홀드아웃 테스트 세트에서 평가합니다:
python domains/shade_arena/meta_harness.py \
--run-name shade_meta_seed0 \
--fresh \
--iterations 3 \
--seed 0 \
--run-final-test
결과는 domains/shade_arena/runs/shade_meta_seed0/에 기록됩니다.
이 베이스라인은 수정되지 않은 벤치마크 하네스를 평가하고, 단일 LLM 호출로 하나의 개인화된 하네스를 제안한 다음, 해당 제안을 동일한 SHADE-Arena 작업에서 평가합니다. 반복 탐색은 수행하지 않습니다:
python personalized_harness/shade_v2_pipeline.py \
--model_config model_config.yaml \
--tasks spam_filter_update \
--repeat 1 \
--output_harness personalized_harness/SHADE_v2/harnesses/one_shot_proposal.py \
--output_dir personalized_harness/SHADE_v2/output_one_shot
--skip_generate, --skip_base, --skip_personalized 플래그 없이 이 명령은 전체 체인을 실행합니다:
base-harness evaluation → one-shot harness proposal → proposed-harness evaluation → summary
HARDE는 먼저 Stage I에서 개별 하네스 컴포넌트를 프로빙합니다:
python domains/shade_arena_component_probe/component_probe.py \
--run-name shade_probe_seed0 \
--seed 0
Stage I은 생성된 하네스 가이드를 다음 위치에 기록합니다:
domains/shade_arena_component_probe/runs/shade_probe_seed0/experience/module_rubric.md
Stage II는 해당 가이드를 사용하여 각 반복에서 컴포넌트를 적응적으로 선택하고, 세 번의 탐색 반복을 실행한 다음, 최종 선택된 하네스를 평가합니다:
python domains/shade_arena_adaptive_component_search/adaptive_component_search.py \
--run-name shade_adaptive_seed0 \
--seed 0 \
--iterations 3 \
--rubric domains/shade_arena_component_probe/runs/shade_probe_seed0/experience/module_rubric.md \
--initial-components initial_components/full_trajectory_monitor \
--run-final-test
인용 메타데이터는 논문 릴리스와 함께 추가될 예정입니다.