
HARDEの研究コード。エージェントの安全性ベンチマーク全体にわたる実行時リスク検出と実行制御のために、コンポーネントをプローブし適応的に最適化するエージェントハーネス。
HARDE: Optimizing Agent Harnesses for Runtime Risk Detection and Execution Control のコードリリース。
このリポジトリには、2つの相補的なエントリポイントファミリーが含まれています:
domains/: Meta-Harness ベースラインと、各ベンチマーク向け HARDE の2つのステージ。personalized_harness/: ベンチマークアダプタ、ベースラインハーネス、学習済み/パーソナライズ済みハーネス、および評価パイプライン。HARDE/
├── domains/
│ ├── agentdyn/ # Meta-Harness baseline
│ ├── agentdyn_component_probe/ # HARDE Stage I
│ ├── agentdyn_adaptive_component_search/ # HARDE Stage II
│ ├── agentsafetybench/ # Meta-Harness baseline
│ ├── agentsafetybench_component_probe/ # HARDE Stage I
│ ├── agentsafetybench_adaptive_component_search/ # HARDE Stage II
│ ├── shade_arena/ # Meta-Harness baseline
│ ├── 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 という名前のベンチマークの場合、ディレクトリは次の規則に従います:
| Directory | Method stage | Main entry point |
|---|---|---|
domains/benchmark/ | Meta-Harness baseline | meta_harness.py |
domains/benchmark_component_probe/ | HARDE Stage I: component probing | component_probe.py |
domains/benchmark_adaptive_component_search/ | HARDE Stage II: adaptive component search | 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 は完全なハーネスを3回のイテレーションで直接最適化し、その後、選択されたハーネスをホールドアウトテストセットで評価します:
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/ に書き込まれます。
このベースラインは、未変更のベンチマークハーネスを評価し、1回の LLM 呼び出しで1つのパーソナライズ済みハーネスを提案し、その提案を同じ 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 はそのガイドを利用し、各イテレーションでコンポーネントを適応的に選択し、3回の探索イテレーションを実行し、最終的に選択されたハーネスを評価します:
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
引用メタデータは論文リリース時に追加されます。