
まず、すべての依存関係をインストールし、Python 3.10で実行していることを確認します。
conda create -n stepjack python=3.10
conda activate stepjack
pip install -r requirements.txt
RedTeamCUAが提供するAWS環境を使用します。
AWS
NETWORK_INTERFACE_MAPを設定します:
お使いのAWSインスタンスに基づいて、aws_config.pyのNETWORK_INTERFACE_MAPを設定します。
セキュリティグループを設定します:
ホストしているインスタンスへの正当なアクセスを許可しつつ、不正なアクセス試行をブロックするセキュリティグループを設定することが重要です。これは、AMIがデフォルトでは基本的なパスワード認証のみを使用しており、比較的侵害されやすいため、非常に重要です。
ローカルマシンはHTTP/TCP接続を介してAWS上でホストされているサービスにアクセスします。したがって、WebArenaまたはTheAgentCompanyのいずれかが使用する以下のポートへのアクセスを明示的に許可する必要があります: 8092、6379、9999、5000、9222、8091、2999、3000。
さらに、インジェクションシナリオをシミュレートするためにSSHを使用して基盤となるデータベースを直接変更します。そのため、セキュリティグループの設定でローカルIPアドレスからのSSHアクセスも許可する必要があります。
aws configureを使用してAWS認証情報を設定します。以下の入力を求められます:
scripts/run_gpt54_2step.shは、StepJack上でGPT-5.4 CUAを実行する例を示しています。
環境変数の設定
CUA APIキー
# For GPT
unset OPENAI_BASE_URL
export OPENAI_API_KEY="sk-proj-XXXX"
# For Kimi
export KIMI_API_KEY='sk-XXXX'
# For Qwen
export OPENAI_BASE_URL="https://dashscope-us.aliyuncs.com/compatible-mode/v1"
export OPENAI_API_KEY="sk-XXXX"
# For Claude
export ANTHROPIC_API_KEY='sk-XXXX'
AWS認証情報
export AWS_REGION='XX'
export AWS_ACCESS_KEY='XX'
export AWS_SECRET_KEY='XX'
実験の実行
# For GPT
python run_gpt54_multienv.py \
--observation_type screenshot \
--agent_type GPT54Agent \
--headless \
--model gpt-5.4-mini-2026-03-17 \
--result_dir ./results_gpt54 \
--test_all_meta_path "./dataset/{subset}/{platform_instruction}/test_{k}_step.json" \
--test_config_base_dir "./dataset/{subset}/{platform_instruction}" \
--max_steps {15*k} \
--sleep_after_execution 4 \
--provider_name aws \
--num_envs 12 \
--aws_ami {reddit | agentcompany}
# For Kimi
python run_kimi_multienv.py \
--observation_type screenshot \
--agent_type KimiAgent \
--headless \
--model Kimi-K2.5 \
--result_dir ./results_kimi \
--test_all_meta_path "./dataset/{subset}/{platform_instruction}/test_{k}_step.json" \
--test_config_base_dir "./dataset/{subset}/{platform_instruction}" \
--max_steps {15*k} \
--sleep_after_execution 4 \
--provider_name aws \
--num_envs 12 \
--aws_ami {reddit | agentcompany}
# For Qwen
python run_qwen35vl_multienv.py \
--observation_type screenshot \
--agent_type Qwen35VLAgent \
--headless \
--model qwen3.5-plus-2026-02-15 \
--coord relative \
--enable_thinking \
--result_dir ./results_qwen \
--test_all_meta_path "./dataset/{subset}/{platform_instruction}/test_{k}_step.json" \
--test_config_base_dir "./dataset/{subset}/{platform_instruction}" \
--max_steps {15*k} \
--sleep_after_execution 4 \
--provider_name aws \
--num_envs 12 \
--aws_ami {reddit | agentcompany}
# For Claude
python run_claude_multienv.py \
--observation_type screenshot \
--action_space pyautogui \
--agent_type AnthropicAgent \
--api_provider anthropic \
--headless \
--model {claude-sonnet-4-6 | claude-haiku-4-5} \
--result_dir ./results_claude \
--test_all_meta_path "./dataset/{subset}/{platform_instruction}/test_{k}_step.json" \
--test_config_base_dir "./dataset/{subset}/{platform_instruction}" \
--max_steps {15*k} \
--sleep_after_execution 4 \
--provider_name aws \
--num_envs 12 \
--aws_ami {reddit | agentcompany}
自動分解パイプラインのコードはauto_decomp/にあります。
cd auto_decomp を実行します。分解したい新しい敵対的ゴールをadv_goals.pyに追加します。k \in \{2, 3\} に対して python iterative_refinement.py -k {k} を実行します。出力: ステージ1の結果を含む ir/goal_*_k{k}_N20_K3_all.json。python selected_examples/select_examples.py を実行します。出力: ステージ1から上位10件の例を選択した selected_examples/selected_examples.json。StepJackはRedTeamCUA (Liao et al., 2025; arXiv:2505.21936) を基盤としており、RedTeamCUA自体はOSWorld (XLANG NLP Lab, 2024) から派生しています。両方の上流ソースはApache-2.0ライセンスの下で提供されています。
一部のStepJackデータディレクトリには、バイナリまたは非ソースのフィクスチャが含まれているため、ファイルごとのヘッダーがありません。それらの由来は帰属のためにここに記録されています:
adv/TheAgentCompany_OwnCloud/file_to_upload/ — RedTeamCUAからコピー (adv/TheAgentCompany_OwnCloud/file_to_upload/) され、元々はApache-2.0ライセンスの下で提供されています。adv/upload_file/ — データセットのタスク設定によってアップロードペイロードとして使用される2つのSSHキーフィクスチャ (system/authorized_keys、system/id_rsa) が含まれています。StepJackが厳選したものです (値はプレースホルダー文字列であり、実際のキーではありません)。このソースツリーのルートディレクトリにあるLICENSEファイルに記載されたライセンスの下で公開されています。adv/upload_file_dir/ — StepJackオリジナルです。RedTeamCUAには存在しません。このソースツリーのルートディレクトリにあるLICENSEファイルに記載されたライセンスの下で公開されています。dataset/ — RedTeamCUAのevaluation_examples/から大幅な変更を加えて翻案されたものです。RedTeamCUAの評価用サンプルは、に従い、の下で公開されています。StepJackのタスク設定への変更および追加は、このソースツリーのルートディレクトリにあるファイルに記載されたライセンスの下で公開されています。引数について:
single_step (k=1)、w_urgent (緊急 = Y)、wo_urgent (緊急 = N) のいずれかを指定できます。forum、forum_follow、owncloud、owncloud_follow のいずれかを指定できます。これらは2つのプラットフォームと2つのユーザー指示タイプに対応します。(subset, k) の組み合わせ: single_step は k=1 のみ; w_urgent と wo_urgent は k \in \{2,3\} のみ。forum プラットフォームでは reddit、owncloud プラットフォームでは agentcompany を指定してください。croissant_metadata.jsonLICENSEdesktop_env/ — RedTeamCUAのdesktop_env/からコピー/翻案されたもので、RedTeamCUA自体はOSWorldから派生しています。両方の上流ソースはApache-2.0ライセンスの下で提供されています。ソースファイルごとのヘッダー (.py / .sh / .yml / .service / .txt) には、各ファイルの具体的な由来 (コピーまたはStepJackによる変更) が記録されています。付属のドキュメントファイル (例: README.md、DOCKER_GUIDELINE.md、INSTALL_*.md) はRedTeamCUAからコピーされたものです。